public GetUserDialogsResponse CurrentUserDialogs() { var dialogRepo = new DialogRepositoryDocumentDb(); var userRepo = new UserRepositoryDocumentDB(); var userA = userRepo.GetUserById((Guid)HttpContext.Current.Items["UserId"]); var dialogs = dialogRepo.GetUserReceivedDialogs((Guid)HttpContext.Current.Items["UserId"]).ToList(); dialogs = dialogs.OrderByDescending(d => d.Entries.OrderByDescending(e => e.TimeStamp).Last().TimeStamp).ToList(); var orderedDialogEntries = dialogs.Where(d => d.ReceiverId == userA.Id).SelectMany(d => d.Entries) .OrderBy(e => e.TimeStamp); var unread = orderedDialogEntries.Where(e => !e.IsRead).ToList(); var lastUnread = unread.Any() ? unread.Last() : orderedDialogEntries.Any() ? orderedDialogEntries.Last() : null; var lastUnreadDialog = lastUnread != null?dialogs.Single(d => d.Entries.Contains(lastUnread)) : null; var ret = new GetUserDialogsResponse { UserDialogs = dialogs.Select( d => { var userB = userRepo.GetUserById(d.OwnerId); return(UserDialogDTOConverter.ConvertToDTO(d, userA, userB)); }), LatestUnread = lastUnreadDialog != null?UserDialogDTOConverter.ConvertToDTO( lastUnread, userA, userRepo.GetUserById(lastUnreadDialog.OwnerId), lastUnreadDialog) : null }; return(ret); }
public UserDialogDto InitiateDialog(InitiateDialogRequest request) { var userRepo = new UserRepositoryDocumentDB(); var dialogRepo = new DialogRepositoryDocumentDb(); var dialogService = new DialogService(dialogRepo); var dialogA = dialogService.InitiateDialog(request.UserA, request.UserB, request.UserADescription, request.UserBDescription); var userA = userRepo.GetUserById(request.UserA); var userB = userRepo.GetUserById(request.UserB); return(UserDialogDTOConverter.ConvertToDTO(dialogA, userA, userB)); }