Пример #1
0
        public async Task <IActionResult> IssueOfUserLikesReport([FromBody] IssueOfUsersFormModel form)
        {
            var result =
                await _reportService.IssueOfUserLikesReportAsync(HttpContext.GetUser(), form);

            return(Ok(GetRequestResult(result)));
        }
Пример #2
0
        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);
            }
        }
Пример #3
0
        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);
            }
        }