Guest User

Untitled

a guest
May 15th, 2017
170
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6.  
  7. class Program
  8. {
  9.     static void Main()
  10.     {
  11.         string command = Console.ReadLine();
  12.         List<User> users = new List<User>();
  13.  
  14.         while (command != "exit")
  15.         {
  16.             string[] split = command.Split();
  17.  
  18.             if (split[0] == "register")
  19.             {
  20.                 RegisteringUser(users, split);
  21.             }
  22.             else
  23.             {
  24.                 SendingMessage(users, split);
  25.             }
  26.             command = Console.ReadLine();
  27.         }
  28.  
  29.         string[] usernames = Console.ReadLine().Split();
  30.  
  31.         PrintingResults(users, usernames);
  32.     }
  33.  
  34.     private static void PrintingResults(List<User> users, string[] usernames)
  35.     {
  36.         if (users.Find(u => u.Username == usernames[0]).ReceivedMessages.Count() == 0 && users.Find(u => u.Username == usernames[1]).ReceivedMessages.Count() == 0)
  37.         {
  38.             Console.WriteLine("No messages");
  39.         }
  40.         else
  41.         {
  42.             List<Message> firstUserMessages = users
  43.                 .Find(u => u.Username == usernames[1])
  44.                 .ReceivedMessages
  45.                 .Where(m => m.Sender == usernames[0])
  46.                 .ToList();
  47.  
  48.             List<Message> secondUserMessages = users
  49.                 .Find(u => u.Username == usernames[0])
  50.                 .ReceivedMessages
  51.                 .Where(m => m.Sender == usernames[1])
  52.                 .ToList();
  53.  
  54.             int smallerList = Math.Min(firstUserMessages.Count(), secondUserMessages.Count());
  55.             int biggerList  = Math.Max(firstUserMessages.Count(), secondUserMessages.Count());
  56.  
  57.             for (int i = 0; i < smallerList; i++)
  58.             {
  59.                 Console.WriteLine($"{firstUserMessages[i].Sender}: {firstUserMessages[i].Content}");
  60.                 Console.WriteLine($"{secondUserMessages[i].Content} :{secondUserMessages[i].Sender}");
  61.             }
  62.  
  63.             if (firstUserMessages.Count > secondUserMessages.Count)
  64.             {
  65.                 for (int i = smallerList; i < biggerList; i++)
  66.                 {
  67.                     Console.WriteLine(($"{firstUserMessages[i].Sender}: {firstUserMessages[i].Content}"));
  68.                 }
  69.             }
  70.             else if (secondUserMessages.Count > firstUserMessages.Count)
  71.             {
  72.                 for (int i = smallerList; i < biggerList; i++)
  73.                 {
  74.                     Console.WriteLine(($"{secondUserMessages[i].Sender}: {secondUserMessages[i].Content}"));
  75.                 }
  76.             }
  77.  
  78.         }
  79.     }
  80.  
  81.     private static void SendingMessage(List<User> users, string[] split)
  82.     {
  83.         string sender = split[0];
  84.         string reciever = split[2];
  85.         string content = string.Join(" ",split.Skip(3));
  86.  
  87.         if (users.Where(u => u.Username == sender).Count() > 0 && users.Where(u => u.Username == reciever).Count() > 0)
  88.         {
  89.             Message currentMessage = new Message()
  90.             {
  91.                 Content = content,
  92.                 Sender = sender
  93.             };
  94.             int recieverIndex = users.IndexOf(users.Find(u => u.Username == reciever));
  95.  
  96.             users[recieverIndex].ReceivedMessages.Add(currentMessage);
  97.         }
  98.     }
  99.     private static void RegisteringUser(List<User> users, string[] split)
  100.     {
  101.         if (users.Where(u => u.Username == split[1]).Count() == 0)
  102.         {
  103.             users.Add(new User() { Username = split[1], ReceivedMessages = new List<Message>() });
  104.         }
  105.     }
  106. }
  107. class User
  108. {
  109.     public string Username { get; set; }
  110.     public List<Message> ReceivedMessages { get; set; }
  111. }
  112.  
  113. class Message
  114. {
  115.     public string Content { get; set; }
  116.     public string Sender { get; set; }
  117. }
RAW Paste Data