public static DialogEntryDTO ConvertToDTO(UserDialogEntry entity, User userA, User userB, UserDialog dialog) { User sender = entity.SenderId == userA.Id ? userA : entity.SenderId == userB.Id ? userB : null; if (sender == null) { throw new Exception("Unexected user in dialog entry"); } return(new DialogEntryDTO() { SenderName = sender.FirstName, SenderImageUrl = sender.ImageUrl, Text = entity.Text, TimeStamp = entity.TimeStamp, SenderDescription = dialog.SenderDescription, SenderId = sender.Id }); }
public UserDialogEntry Post(Guid senderUserId, Guid receiverUserId, string message) { //Get user and dialogs var dialogs = _dialogRepository.GetDialogFromUsers(senderUserId, receiverUserId); if (dialogs.Count() != 2) { throw new Exception("Unexpected number of dialogs"); } var dialogSender = dialogs.Single(d => d.OwnerId == senderUserId && d.ReceiverId == receiverUserId); var dialogReceiver = dialogs.Single(d => d.OwnerId == receiverUserId && d.ReceiverId == senderUserId); var dateTime = DateTime.Now; var entrySender = new UserDialogEntry { TimeStamp = dateTime, Text = message, SenderId = senderUserId, IsRead = false }; var entryReceiver = new UserDialogEntry { TimeStamp = dateTime, Text = message, SenderId = senderUserId, IsRead = true }; //Add entry to sender dialog dialogSender.Entries.Add(entrySender); //Add entry to receiver dialog dialogReceiver.Entries.Add(entryReceiver); _dialogRepository.SaveDialog(dialogSender); _dialogRepository.SaveDialog(dialogReceiver); return(entrySender); }