Advertisement
bobypenev

09. Teamwork Projects

Jun 18th, 2018
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 4.34 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6.  
  7. namespace TeamworkProjects
  8. {
  9.     class Team
  10.     {
  11.         public string Name { get; set; }
  12.         public List<string> Members { get; set; }
  13.         public string Creator { get; set; }
  14.     }
  15.  
  16.     class Program
  17.     {
  18.         static void Main(string[] args)
  19.         {
  20.             // Teams database
  21.             List<Team> allTeams = new List<Team>();
  22.             // Store users and creators, to check if already members of any team
  23.             List<string> allUsers = new List<string>();
  24.  
  25.             // Create teams
  26.             int teamsCount = int.Parse(Console.ReadLine());
  27.             for (int i = 0; i < teamsCount; i++)
  28.             {
  29.                 string [] tokens = Console.ReadLine().Split('-');
  30.                 string creatorName = tokens[0];
  31.                 string teamName = tokens[1];
  32.  
  33.                 // Don't create a team twice
  34.                 if (allTeams.Any(t => t.Name == teamName))
  35.                 {
  36.                     Console.WriteLine("Team {0} was already created!", teamName);
  37.                     continue;
  38.                 }
  39.                 // Creator already started a team
  40.                 else if (allTeams.Any(t => t.Creator == creatorName))
  41.                 {
  42.                     Console.WriteLine("{0} cannot create another team!", creatorName);
  43.                     continue;
  44.                 }
  45.                 // Create team
  46.                 else
  47.                 {
  48.                     Team newTeam = new Team
  49.                     {
  50.                         Name = teamName,
  51.                         Creator = creatorName,
  52.                         Members = new List<string>()
  53.                     };
  54.  
  55.                     allTeams.Add(newTeam);
  56.                     allUsers.Add(creatorName);
  57.  
  58.                     Console.WriteLine("Team {0} has been created by {1}!", teamName, creatorName);
  59.                 }
  60.             }
  61.  
  62.             // Join users
  63.             while (true)
  64.             {
  65.                 string input = Console.ReadLine();
  66.                 if (input == "end of assignment") { break; }
  67.  
  68.                 string[] tokens = input.Split("->".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
  69.                 string userName = tokens[0];
  70.                 string teamName = tokens[1];
  71.  
  72.                 // User trying to join a non-existing team
  73.                 if (allTeams.Any(t => t.Name == teamName) == false)
  74.                 {
  75.                     Console.WriteLine("Team {0} does not exist!", teamName);
  76.                     continue;
  77.                 }
  78.                 // User is already a member (or creator) of a group
  79.                 else if (allUsers.Contains(userName))
  80.                 {
  81.                     Console.WriteLine("Member {0} cannot join team {1}!", userName, teamName);
  82.                     continue;
  83.                 }
  84.                 else
  85.                 {
  86.                     // Add members to team
  87.                     allTeams.First(t => t.Name == teamName).Members.Add(userName);
  88.                     // Add user to list of all users who already joined a team
  89.                     allUsers.Add(userName);
  90.                 }
  91.             }
  92.  
  93.             // Teams with members
  94.             List<Team> validTeams = allTeams.Where(t => t.Members.Count > 0).ToList();
  95.             validTeams = validTeams.OrderByDescending(t => t.Members.Count).ThenBy(t => t.Name).ToList();
  96.             // Tems with only a creator
  97.             List<Team> disbandTeams = allTeams.Where(t => t.Members.Count == 0).ToList();
  98.             disbandTeams = disbandTeams.OrderBy(t => t.Name).ToList();
  99.                        
  100.  
  101.             // Print valid teams data
  102.             foreach (Team team in validTeams)
  103.             {
  104.                 Console.WriteLine(team.Name);
  105.                 Console.WriteLine("- " + team.Creator);
  106.  
  107.                 team.Members = team.Members.OrderBy(m => m).ToList();
  108.                 foreach (string member in team.Members)
  109.                 {
  110.                     Console.WriteLine("-- " + member);
  111.                 }
  112.             }
  113.  
  114.             // Print invalid teams
  115.             Console.WriteLine("Teams to disband:");
  116.             foreach (Team team in disbandTeams)
  117.             {
  118.                 Console.WriteLine(team.Name);
  119.             }
  120.         }
  121.     }
  122. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement