public async Task <IActionResult> IssueOfUserLikesReport([FromBody] IssueOfUsersFormModel form) { var result = await _reportService.IssueOfUserLikesReportAsync(HttpContext.GetUser(), form); return(Ok(GetRequestResult(result))); }
public async Task <List <IssueOfUsersViewModel> > IssueOfUsersReportAsync(User user, IssueOfUsersFormModel form) { try { var queryable = _context.Issues.Include(c => c.User).Include(c => c.User.Organization).Include(c => c.IssueDetails).Where(c => c.User.Id != null && form.Users.Contains(c.User.Id)).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.UserId).ToListAsync(); var issueOfUsersViewModels = new List <IssueOfUsersViewModel>(); resp.ForEach(c => { var issueOfUsersViewModel = new IssueOfUsersViewModel() { FullName = c.FirstOrDefault().User.FirstName + " " + c.FirstOrDefault().User.LastName, OrganizationName = c.FirstOrDefault().User.Organization.OrganizationName, TotalIssueCount = c.Count(), TotalIssueUserDetails = c.Sum(d => d.IssueDetails.Count), }; issueOfUsersViewModels.Add(issueOfUsersViewModel); }); return(issueOfUsersViewModels); } catch (Exception ex) { throw new ExperienceManagementGlobalException(ReportServiceErrors.IssueOfUsersReportError, ex); } }
public async Task <List <IssueOfUserLikesViewModel> > IssueOfUserLikesReportAsync(User user, IssueOfUsersFormModel form) { try { var queryable = _context.Issues.Include(c => c.User).Include(c => c.User.Organization).Include(c => c.IssueDetails).Where(c => c.User.Id != null && form.Users.Contains(c.User.Id)).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 => new { c.UserId, c.IssueType }).ToListAsync(); var issueOfUsersViewModels = new List <IssueOfUserLikesViewModel>(); resp?.ForEach(c => { var issueOfUsersViewModel = new IssueOfUserLikesViewModel() { IssueType = EnumHelper <IssueType> .GetDisplayValue(c.Key.IssueType), TotalIssueCount = c.Count(), TotalUserLikes = c.Sum(d => d.IssueDetails.Sum(f => f.Likes)), TotalUserDetails = c.Sum(d => d.IssueDetails.Count), UserName = c.First().User.Username, }; issueOfUsersViewModels.Add(issueOfUsersViewModel); }); return(issueOfUsersViewModels); } catch (Exception ex) { throw new ExperienceManagementGlobalException(ReportServiceErrors.IssueOfUserLikesReportError, ex); } }