public async Task <IActionResult> GetReports([FromQuery] ReportPaginationParams reportPaginationParams) { int currentUserId = int.Parse(HttpContext.User.FindFirst(ClaimTypes.NameIdentifier).Value); var reports = await database.SupportRepository.GetPagedReports(reportPaginationParams, currentUserId); var reportsToReturn = mapper.Map <ICollection <ReportDetailsDto> >(reports); Response.AddPagination(reports.CurrentPage, reports.PageSize, reports.TotalCount, reports.TotalPages); return(Ok(reportsToReturn)); }
public async Task <PagedList <Report> > GetPagedReports(ReportPaginationParams reportPaginationParams, int currentUserId) { var reports = await GetAll <Report>(); reports = reports.OrderByDescending(r => r.DateUpdated); if (reportPaginationParams.AssignedToMe) { reports = reports.Where(r => r.AssignedTo == currentUserId); } if (!string.IsNullOrEmpty(reportPaginationParams.ReportStatus)) { switch (reportPaginationParams.ReportStatus) { case "All": break; case "Closed": reports = reports.Where(r => r.IsClosed); break; case "NotClosed": reports = reports.Where(r => !r.IsClosed); break; default: break; } } if (reportPaginationParams.OnlyNotAssigned) { reports = reports.Where(r => r.AssignedTo == null); } if (reportPaginationParams.OrderByNotReplied) { reports = reports.OrderByDescending(r => r.ReportMessages.LastOrDefault(rm => !rm.IsReply)); } return(PagedList <Report> .Create(reports.AsQueryable(), reportPaginationParams.PageNumber, reportPaginationParams.PageSize)); }