예제 #1
0
        public async Task <IActionResult> GetConversation(int id, int recipientId, [FromQuery] MessengerPaginationParams messengerPaginationParams)
        {
            var messagesThread = await messenger.GetMessagesThread(id, recipientId, messengerPaginationParams);

            if (messagesThread.Count == 0)
            {
                return(NotFound("Brak wiadomości"));
            }

            var messagesThreadToReturn = mapper.Map <List <MessageDetailsDto> >(messagesThread);

            for (int i = 0; i < messagesThreadToReturn.Count(); i++)
            {
                messagesThreadToReturn[i].OwnerName = messagesThread[i].Conversation.WithSchool ? messagesThread[i].Conversation.Owner.School.Name : messagesThread[i].Conversation.Owner.Rental.Name;
            }

            string photoUrl = messagesThread[0].Conversation.UserId != id ? messagesThread[0].Conversation.User.PhotoUrl : (messagesThread[0].Conversation.WithSchool ? messagesThread[0].Conversation.Owner.School.LogoUrl : null);

            Response.AddPagination(messagesThread.CurrentPage, messagesThread.PageSize, messagesThread.TotalCount, messagesThread.TotalPages);

            return(Ok(new
            {
                messages = messagesThreadToReturn,
                photoUrl
            }));
        }
예제 #2
0
        public async Task <IActionResult> GetConversations(int id, [FromQuery] MessengerPaginationParams messengerPaginationParams)
        {
            var conversations = await database.UserRepository.GetConversations(id, messengerPaginationParams);

            var conversationsToReturn = mapper.Map <ICollection <ConversationDetailsDto> >(conversations);

            Response.AddPagination(conversations.CurrentPage, conversations.PageSize, conversations.TotalCount, conversations.TotalPages);

            return(Ok(conversationsToReturn));
        }
예제 #3
0
        public async Task <PagedList <Conversation> > GetConversations(int userId, MessengerPaginationParams messengerPaginationParams)
        {
            var user = await context.Users.FirstOrDefaultAsync(u => u.Id == userId) ?? throw new EntityNotFoundException("Użytkownik");

            if (user.SchoolId != null || user.RentalId != null)
            {
                user.FilterConversations(messengerPaginationParams.Value, isOwner: true);
                return(PagedList <Conversation> .Create(user.OwnerConversations.AsQueryable(), messengerPaginationParams.PageNumber, messengerPaginationParams.PageSize));
            }
            else
            {
                user.FilterConversations(messengerPaginationParams.Value);
                return(PagedList <Conversation> .Create(user.UserConversations.AsQueryable(), messengerPaginationParams.PageNumber, messengerPaginationParams.PageSize));
            }
        }
예제 #4
0
        public async Task <PagedList <Message> > GetMessagesThread(int userId, int recipientId, MessengerPaginationParams messengerPaginationParams)
        {
            var conversation = await database.UserRepository.GetConversation(userId, recipientId);

            if (conversation == null)
            {
                throw new EntityNotFoundException("Rozmowa");
            }

            if (!messengerPaginationParams.IsReloading)
            {
                await MarkConversationAsReadWhileLoading(conversation, userId);
            }

            conversation.FilterMessages(messengerPaginationParams.Value);

            return(PagedList <Message> .Create(conversation.Messages.AsQueryable(), messengerPaginationParams.PageNumber, messengerPaginationParams.PageSize));
        }