Beispiel #1
0
        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
            });
        }
Beispiel #2
0
        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);
        }