Exemplo n.º 1
0
        public async Task <IHttpActionResult> ListChats(int page = 1, int limit = 10)
        {
            DataHelper           dataHelper       = new DataHelper();
            ChatPaginationResult paginationResult = dataHelper.FindChats(page, limit);

            List <object> respData = new List <object>();

            foreach (Chat c in paginationResult.Results)
            {
                var data = new
                {
                    id                = c.ChatId,
                    name              = c.Name,
                    users             = dataHelper.FindUsersByChat(c.ChatId),
                    last_chat_message = dataHelper.FindLastMessageByChat(c.ChatId)
                };

                respData.Add(data);
            }

            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.ToArray(), meta = respMeta }));
        }
Exemplo n.º 2
0
        public ChatPaginationResult FindChats(int page, int limit)
        {
            ChatPaginationResult result = new ChatPaginationResult();

            result.Page  = page;
            result.Limit = limit;

            var query = (from c in _db.Chats select c);

            query = query
                    .OrderBy(e => e.Name)
                    .Include("UserChats");

            result.TotalResults = query.Count();

            query = query
                    .Skip((page - 1) * limit)
                    .Take(limit);

            result.Results = query.ToList();
            return(result);
        }