コード例 #1
0
ファイル: Messenger.cs プロジェクト: TomeQ2k/_MyVinted
        public async Task <PagedList <Conversation> > GetConversations(MessengerFiltersParams filters)
        {
            var currentUser = await accountManager.GetCurrentUser();

            var conversations = currentUser.MessagesSent.Concat(currentUser.MessagesReceived)
                                .OrderByDescending(m => m.DateSent)
                                .GroupBy(m => new { m.SenderId, m.RecipientId })
                                .Select(g =>
            {
                var(message, isCurrentUserRecipient) = (g.First(), g.First().RecipientId == currentUser.Id);

                var conversation = new Conversation
                                   (
                    new LastMessage(message.SenderId, message.Sender.UserName, message.Text, message.DateSent, message.IsRead, message.SenderId == currentUser.Id),
                    isCurrentUserRecipient ? message.SenderId : message.RecipientId,
                    isCurrentUserRecipient ? message.Sender.UserName : message.Recipient.UserName,
                    isCurrentUserRecipient ? message.Sender.AvatarUrl : message.Recipient.AvatarUrl
                                   );

                return(conversation);
            })
                                .GroupBy(c => c.RecipientId)
                                .Distinct()
                                .Select(g => g.First());

            if (!string.IsNullOrEmpty(filters.Username))
            {
                conversations = conversations.Where(c => c.RecipientName.ToLower().Contains(filters.Username.ToLower()));
            }

            return(conversations.ToPagedList <Conversation>(filters.PageNumber, filters.PageSize));
        }
コード例 #2
0
ファイル: Messenger.cs プロジェクト: TomeQ2k/_MyVinted
        public async Task <IPagedList <Message> > GetMessagesThread(string recipientId, MessengerFiltersParams filters)
        {
            var currentUser = await accountManager.GetCurrentUser();

            if (currentUser.Id == recipientId)
            {
                throw new NoPermissionsException(ErrorMessages.NotAllowedMessage);
            }

            await ReadConversation(currentUser.MessagesReceived, recipientId);

            return(await unitOfWork.MessageRepository.GetMessagesThread(currentUser.Id, recipientId, (filters.PageNumber, filters.PageSize)));
        }