public async Task <ActionResult> Index(int status = 0, string start = "", string end = "", int page = 1, int pageSize = 10) { if (page < 1) { page = 1; } var messages = await _messagesService.FetchAsync(status.ToBoolean()); if (start.HasValue() || end.HasValue()) { var startDate = start.ToStartDate(); if (!startDate.HasValue) { startDate = DateTime.MinValue; } var endDate = end.ToEndDate(); if (!endDate.HasValue) { endDate = DateTime.MaxValue; } messages = messages.Where(x => x.CreatedAt >= startDate && x.CreatedAt <= endDate); } messages = messages.GetOrdered().ToList(); return(Ok(messages.GetPagedList(_mapper, page, pageSize))); }