public async Task <IActionResult> TotalIssueReport([FromBody] TotalIssueFormModel form) { var result = await _reportService.TotalIssueReportAsync(HttpContext.GetUser(), form); return(Ok(GetRequestResult(result))); }
public async Task <List <TotalIssueViewModel> > TotalIssueReportAsync(User user, TotalIssueFormModel form) { try { var queryable = _context.Issues.Include(c => c.User).Include(c => c.IssueDetails).Where(c => c.IssueType == form.IssueType).AsQueryable(); if (form.StartTime.HasValue) { queryable = queryable.Where(c => c.CreationDate >= form.StartTime); } if (form.EndTime.HasValue) { queryable = queryable.Where(c => c.CreationDate <= form.EndTime); } var resp = await queryable.ToListAsync(); var totalIssueViewModels = new List <TotalIssueViewModel>(); resp?.ForEach(c => { var totalIssueViewModel = new TotalIssueViewModel() { CreationTime = c.CreationDate.ToShortPersianDateTimeString(), FullName = c.User.FirstName + " " + c.User.LastName, IssueType = EnumHelper <IssueType> .GetDisplayValue(c.IssueType), LikesCount = c.IssueDetails.Sum(d => d.Likes), Title = c.Title, TotalIssueDetails = c.IssueDetails.Count(), UserName = c.User.Username, }; totalIssueViewModels.Add(totalIssueViewModel); }); return(totalIssueViewModels); } catch (Exception ex) { throw new ExperienceManagementGlobalException(ReportServiceErrors.TotalIssueReportError, ex); } }