Example #1
0
        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);
        }
Example #2
0
        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);
            }
        }
Example #3
0
        public async Task <IActionResult> GetMessageByConversationId([FromQuery] GetMessageByConversationIdRequest request)
        {
            IEnumerable <MessageViewModel> data = await messageService.GetMessageByConversationId(request);

            return(Ok(new ApiOkResponse(data)));
        }