public async Task <IActionResult> IssuesOfOrganizationReport([FromBody] IssueOfOrganizationFormModel form) { var result = await _reportService.IssuesOfOrganizationReportAsync(HttpContext.GetUser(), form); return(Ok(GetRequestResult(result))); }
public async Task <List <IssuesOfOrganizationViewModel> > IssuesOfOrganizationReportAsync(User user, IssueOfOrganizationFormModel form) { try { var queryable = _context.Issues.Include(c => c.User).Include(c => c.User.Organization).Include(c => c.IssueDetails).Where(c => c.User.OrganizationId != null && form.OrgIds.Contains((long)c.User.OrganizationId)).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.GroupBy(c => c.User.OrganizationId).ToListAsync(); var issueOfOrganizationsViewModels = new List <IssuesOfOrganizationViewModel>(); resp?.ForEach(c => { var issuesOfOrganization = new IssuesOfOrganizationViewModel() { TotalUsers = c.Select(d => d.UserId).Distinct().Count(), OrganizationName = c.FirstOrDefault().User.Organization.OrganizationName, TotalIssueCount = c.Distinct().Count(), TotalIssueDetails = c.Select(d => d.IssueDetails).Distinct().Count(), }; issueOfOrganizationsViewModels.Add(issuesOfOrganization); }); return(issueOfOrganizationsViewModels); } catch (Exception ex) { throw new ExperienceManagementGlobalException(ReportServiceErrors.IssuesOfOrganizationReportError, ex); } }