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