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