Пример #1
0
        public ActionResult ListUserConversations([FromQuery] int userId, [FromQuery] PaginationParams pagination)
        {
            var user = _userService.Load(userId);

            if (user == null)
            {
                return(NotFound(new { message = Errors.UserNotFound }));
            }

            var userConversationFilter = new UserConversationFilter()
            {
                UserId = userId,
                Status = 1,
                IncludeConversation = true,
                IncludeUser         = true
            };

            var userConversations = _userConversationService.Filter(userConversationFilter, pagination);

            Response.Headers.Add("x-pagination", JsonConvert.SerializeObject(userConversations.GetMetaData()));

            var conversationDTOs = userConversations?.Select(x => new ConversationDTO()
            {
                Id         = x.Conversation.Id,
                CreateDate = x.Conversation.CreateDate,
                Name       = Regex.Replace(x.Conversation.Name, "(?<!(" + user.FullName + ", |, " + user.FullName + ").*)(" + user.FullName + ", |, " + user.FullName + ")", "", RegexOptions.IgnoreCase).ToString().TrimStart(),
                Type       = x.Conversation.Type,
                UpdateDate = x.Conversation.UpdateDate
            });

            return(Ok(conversationDTOs));
        }
Пример #2
0
        public ActionResult ListUserConversationMessages([FromQuery] int userId, [FromQuery] int conversationId, [FromQuery] PaginationParams pagination)
        {
            var user = _userService.Load(userId);

            if (user == null)
            {
                return(NotFound(new { message = Errors.UserNotFound }));
            }

            var userConversation = _userConversationService.Filter(new UserConversationFilter()
            {
                ConversationId      = conversationId,
                IncludeConversation = false,
                IncludeUser         = false,
                UserId = userId,
                Status = 1
            }, new PaginationParams()
            {
                CurrentPage = 1, PageSize = 1
            }).FirstOrDefault();

            if (userConversation == null)
            {
                return(NotFound(new { message = Errors.UserConversationNotFoundOrIsNotActive }));
            }

            var conversationMessages = _messageService.Filter(new MessageFilter()
            {
                ConversationId = conversationId
            }, pagination);

            var messageDTOs = conversationMessages.Select(x => new MessageDTO()
            {
                Body           = x.Body,
                ConversationId = x.ConversationId,
                CreateDate     = x.CreateDate,
                Id             = x.Id,
                UpdateDate     = x.UpdateDate,
                UserId         = x.UserId
            }).ToList();

            return(Ok(messageDTOs));
        }