public IHttpActionResult ListChatMessages(int chatId, int page = 1, int limit = 10) { DataHelper dataHelper = new DataHelper(); ChatMessagePaginationResult paginationResult = dataHelper.FindChatMessages(chatId, page, limit); List <ChatMessage> chatMessages = paginationResult.Results as List <ChatMessage>; List <object> respData = new List <object>(); foreach (ChatMessage chatMessage in chatMessages) { respData.Add(DataHelper.BuildChatMessageResponseData(chatMessage, chatMessage.User)); } var respMeta = new { pagination = new { current_page = paginationResult.Page, per_page = paginationResult.Limit, page_count = paginationResult.PageCount, total_count = paginationResult.TotalResults } }; return(Ok(new { data = respData, meta = respMeta })); }
public ChatMessagePaginationResult FindChatMessages(int chatId, int page, int limit) { ChatMessagePaginationResult result = new ChatMessagePaginationResult(); result.Page = page; result.Limit = limit; var query = (from m in _db.ChatMessages select m); query = query .Where(m => m.ChatId == chatId) .OrderByDescending(m => m.CreatedAt); result.TotalResults = query.Count(); query = query .Skip((page - 1) * limit) .Take(limit); result.Results = query.ToList(); return(result); }