IPetrov007

Messages

Mar 23rd, 2017
186
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.56 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. class User
  8. {
  9. public string Username { get; set; }
  10. public List<Message> ReceivedMessages { get; set; }
  11. }
  12. class Message
  13. {
  14. public string Content { get; set; }
  15. public User Sender { get; set; }
  16. }
  17. namespace _06_Messages
  18. {
  19.  
  20.  
  21. class Program
  22. {
  23. static void Main(string[] args)
  24. {
  25.  
  26. var users = new List<User>();
  27.  
  28. var inputStr = Console.ReadLine();
  29. while (inputStr != "exit")
  30. {
  31. var input = inputStr.Split(' ').ToArray();
  32.  
  33. if (input[0] == "register")
  34. {
  35. var newUser = new User()
  36. {
  37. Username = input[1],
  38. ReceivedMessages = new List<Message>()
  39. };
  40.  
  41. if (!users.Contains(newUser))
  42. {
  43. users.Add(newUser);
  44. }
  45. }
  46. else
  47. {
  48.  
  49. var senderName = input[0];
  50. var recipientUsername = input[2];
  51.  
  52. var newMessage = new Message();
  53. newMessage.Content = input[3];
  54. newMessage.Sender = new User() { Username = senderName, ReceivedMessages = new List<Message>() };
  55.  
  56. var ifContainsSender = users.Where(x => x.Username == senderName).ToArray();
  57. var ifContainsRecipient = users.Where(x => x.Username == recipientUsername).ToArray();
  58.  
  59. if (ifContainsSender.Count() > 0 && ifContainsRecipient.Count() > 0)
  60. {
  61. var recipientMessages = users.FirstOrDefault(x => x.Username == recipientUsername);
  62. if (recipientMessages != null)
  63. {
  64. recipientMessages.ReceivedMessages.Add(newMessage);
  65. }
  66. }
  67. }
  68. inputStr = Console.ReadLine();
  69. }
  70. var finalInput = Console.ReadLine().Split(' ').ToArray();
  71. var first = finalInput[0];
  72. var second = finalInput[1];
  73.  
  74. var messagesFromFirstToSecond = users
  75. .Where(x => x.Username == second)
  76. .SelectMany(x => x.ReceivedMessages)
  77. .Where(x => x.Sender.Username == first)
  78. .Count();
  79. var messagesFromSecondToFirst = users
  80. .Where(x => x.Username == first)
  81. .SelectMany(x => x.ReceivedMessages)
  82. .Where(x => x.Sender.Username == second)
  83. .Count();
  84.  
  85. for (int i = 0; i < Math.Max(messagesFromFirstToSecond, messagesFromSecondToFirst); i++)
  86. {
  87. if (i < messagesFromFirstToSecond)
  88. {
  89. Console.WriteLine($"{first}: {users.Where(x => x.Username == second).SelectMany(x => x.ReceivedMessages).Where(x => x.Sender.Username == first).Select(x => x.Content).ToList()[i]}");
  90. }
  91. if (i < messagesFromSecondToFirst)
  92. {
  93. Console.WriteLine($"{users.Where(x => x.Username == first).SelectMany(x => x.ReceivedMessages).Where(x => x.Sender.Username == second).Select(x => x.Content).ToList()[i]} :{second}");
  94. }
  95. }
  96. }
  97. }
  98. }
Advertisement
Add Comment
Please, Sign In to add comment