Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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));
        }