Beispiel #1
0
        public async Task <IActionResult> IssuesOfOrganizationReport([FromBody] IssueOfOrganizationFormModel form)
        {
            var result =
                await _reportService.IssuesOfOrganizationReportAsync(HttpContext.GetUser(), form);

            return(Ok(GetRequestResult(result)));
        }
Beispiel #2
0
        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);
            }
        }