コード例 #1
0
        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 }));
        }
コード例 #2
0
ファイル: DataHelper.cs プロジェクト: mpham/simplech
        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);
        }