public ActionResult WriteMessage() { WriteMessageModel model = new WriteMessageModel { Sender = userManager.Users.FirstOrDefault(x => x.UserName == CurrentUser.Name) }; return(View(model)); }
public ActionResult WriteMessage(WriteMessageModel model) { if (ModelState.IsValid) { AppUser currentUser = userManager.Users.FirstOrDefault(x => x.UserName == CurrentUser.Name); AppUser recipient = userManager.Users.FirstOrDefault(x => x.Id == model.RecipientId); ChatModel chat = currentUser.Dialogs.FirstOrDefault(x => x.Users.Last() == recipient); ChatModel chatRecipient = recipient.Dialogs.FirstOrDefault(x => x.Users.Last() == currentUser); if (chat == null && chatRecipient == null) { chat = new ChatModel { chatID = GetChatId(), ChatName = recipient.Name + " " + recipient.UserSurname }; chat.Users = new List <AppUser>(); chat.Users.Add(currentUser); chat.Users.Add(recipient); chat.Messages = new List <ChatMessage>(); chat.Messages.Add(new ChatMessage { messageID = GetMessageId(), Date = DateTime.Now, User = currentUser, Text = model.Text }); chatRecipient = new ChatModel { chatID = GetChatId(), ChatName = currentUser.Name + " " + currentUser.UserSurname }; chatRecipient.Users = new List <AppUser>(); chatRecipient.Users.Add(recipient); chatRecipient.Users.Add(currentUser); chatRecipient.Messages = new List <ChatMessage>(); chatRecipient.Messages.Add(new ChatMessage { messageID = GetMessageId(), Date = DateTime.Now, User = currentUser, Text = model.Text }); currentUser.Dialogs.Add(chat); recipient.Dialogs.Add(chatRecipient); } else if (chat == null && chatRecipient != null) { chat = new ChatModel { chatID = GetChatId(), ChatName = recipient.Name + " " + recipient.UserSurname }; chat.Users = new List <AppUser>(); chat.Users.Add(currentUser); chat.Users.Add(recipient); chat.Messages = new List <ChatMessage>(); chat.Messages.Add(new ChatMessage { messageID = GetMessageId(), Date = DateTime.Now, User = currentUser, Text = model.Text }); recipient.Dialogs.FirstOrDefault(x => x.Users.Last() == currentUser).Messages.Add( new ChatMessage { messageID = GetMessageId(), Date = DateTime.Now, User = currentUser, Text = model.Text } ); currentUser.Dialogs.Add(chat); } else if (chat != null && chatRecipient == null) { currentUser.Dialogs.FirstOrDefault(x => x.Users.Last() == recipient).Messages.Add( new ChatMessage { messageID = GetMessageId(), Date = DateTime.Now, User = currentUser, Text = model.Text } ); chatRecipient = new ChatModel { chatID = GetChatId(), ChatName = currentUser.Name + " " + currentUser.UserSurname }; chatRecipient.Users = new List <AppUser>(); chatRecipient.Users.Add(recipient); chatRecipient.Users.Add(currentUser); chatRecipient.Messages = new List <ChatMessage>(); chatRecipient.Messages.Add(new ChatMessage { messageID = GetMessageId(), Date = DateTime.Now, User = currentUser, Text = model.Text }); recipient.Dialogs.Add(chatRecipient); } else { currentUser.Dialogs.FirstOrDefault(x => x.Users.Last() == recipient).Messages.Add( new ChatMessage { messageID = GetMessageId(), Date = DateTime.Now, User = currentUser, Text = model.Text } ); recipient.Dialogs.FirstOrDefault(x => x.Users.Last() == currentUser).Messages.Add( new ChatMessage { messageID = GetMessageId(), Date = DateTime.Now, User = currentUser, Text = model.Text } ); } userManager.Update(currentUser); userManager.Update(recipient); return(RedirectToAction("Messages")); } else { ModelState.AddModelError("", ""); return(View(model)); } }