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));
        }
Example #2
0
        /// <summary>
        /// Filter
        /// </summary>
        /// <param name="filter"></param>
        /// <param name="pagination"></param>
        /// <returns></returns>
        public PagedList <UserConversation> Filter(UserConversationFilter filter, PaginationParams pagination)
        {
            try
            {
                var query = _context.UserConversations.AsQueryable();

                if (filter.IncludeConversation)
                {
                    query = query.Include(x => x.Conversation);
                }

                if (filter.IncludeUser)
                {
                    query = query.Include(x => x.User);
                }

                if (filter.UserId != null)
                {
                    query = query.Where(x => x.UserId == filter.UserId);
                }

                if (filter.ConversationId != null)
                {
                    query = query.Where(x => x.ConversationId == filter.ConversationId);
                }

                if (filter.Status != null)
                {
                    query = query.Where(x => x.Status == filter.Status);
                }

                return(query.ToPagedList(pagination));
            }catch
            {
                throw;
            }
        }