public async Task <IEnumerable <MessageViewModel> > SharePost(SharePostRequest request) { var currentUser = Feature.CurrentUser(httpContextAccessor, userRepository); var addConversationRequest = new AddConversationRequest(); addConversationRequest.Participants.AddRange( new List <ConversationMember>() { new ConversationMember() { MemberId = request.UserId } }); var conversation = await conversationService.AddConversation(addConversationRequest); var addMessageRequest = new AddMessageRequest() { PostId = request.PostId, MessageType = MessageBaseType.PostThumbnail, ConversationId = conversation.OId }; await messageService.AddMessage(addMessageRequest); var messageByConversationRequest = new GetMessageByConversationIdRequest() { ConversationId = conversation.OId, Skip = request.Skip, Count = request.Count }; var result = await messageService.GetMessageByConversationId(messageByConversationRequest); return(result); }
public async Task <IEnumerable <MessageViewModel> > GetMessageByConversationId(GetMessageByConversationIdRequest request) { try { var result = new List <MessageViewModel>(); var messageTextBuilder = Builders <MessageText> .Filter; var messageTextFilter = messageTextBuilder.Eq("conversation_id", request.ConversationId) & messageTextBuilder.Eq("status", ItemStatus.Active); var messageTexts = await messageTextRepository.FindListAsync(messageTextFilter); var messageTextViewModels = mapper.Map <List <MessageViewModel> >(messageTexts.OrderByDescending(x => x.CreatedDate)); result.AddRange(messageTextViewModels); var messageImageBuilder = Builders <MessageImage> .Filter; var messageImageFilter = messageImageBuilder.Eq("conversation_id", request.ConversationId) & messageImageBuilder.Eq("status", ItemStatus.Active); var messageImages = await messageImageRepository.FindListAsync(messageImageFilter); var messageImageViewModels = mapper.Map <List <MessageViewModel> >(messageImages.OrderByDescending(x => x.CreatedDate)); result.AddRange(messageImageViewModels); var messagePostThumbnailBuilder = Builders <MessagePostThumbnail> .Filter; var messagePostThumbnailFilter = messagePostThumbnailBuilder.Eq("conversation_id", request.ConversationId) & messagePostThumbnailBuilder.Eq("status", ItemStatus.Active); var messagePostThumnbails = await messagePostThumbnailRepository.FindListAsync(messagePostThumbnailFilter); var messagePostThumbnailViewModels = mapper.Map <List <MessageViewModel> >(messagePostThumnbails.OrderByDescending(x => x.CreatedDate)); result.AddRange(messagePostThumbnailViewModels); var messageMultiMediaBuilder = Builders <MessageMultiMedia> .Filter; var messageMultiMediaFilter = messageMultiMediaBuilder.Eq("conversation_id", request.ConversationId) & messageMultiMediaBuilder.Eq("status", ItemStatus.Active); var messageMultiMedias = await messageMultiMediaRepository.FindListAsync(messageMultiMediaFilter); var messageMultiMediaViewModels = mapper.Map <List <MessageViewModel> >(messageMultiMedias.OrderByDescending(x => x.CreatedDate)); result.AddRange(messageMultiMediaViewModels); result = result.OrderByDescending(x => x.CreatedDate).ToList(); if (request.Skip.HasValue && request.Count.HasValue) { result = result.Skip(request.Skip.Value).Take(request.Count.Value).ToList(); } return(result); } catch (Exception) { return(null); } }
public async Task <IActionResult> GetMessageByConversationId([FromQuery] GetMessageByConversationIdRequest request) { IEnumerable <MessageViewModel> data = await messageService.GetMessageByConversationId(request); return(Ok(new ApiOkResponse(data))); }