Пример #1
0
        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));
        }
Пример #2
0
        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));
        }