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 })); }
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)); }
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)); } }
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)); }