Ejemplo n.º 1
0
        public async Task <IActionResult> Index()
        {
            var selectedInstanceID = this.InstanceSelector.InstanceID;

            var topAwarded = await this.DatabaseContext.AwardLog
                             .Where(i => i.Award.InstanceID == selectedInstanceID)
                             .GroupBy(i => i.AwardID)
                             .Select(i => new AwardsRow
            {
                AwardNumber = i.FirstOrDefault().Award.AwardNumber,
                TimesAwards = i.Count(),
                Name        = i.FirstOrDefault().Award.Name,
                Description = i.FirstOrDefault().Award.Description
            })
                             .OrderByDescending(i => i.TimesAwards)
                             .Take(this.maxNumberOfResults)
                             .ToListAsync();

            var topUsers = await this.DatabaseContext.AwardLog
                           .Where(i => i.Award.InstanceID == selectedInstanceID)
                           .GroupBy(i => i.UserID)
                           .Select(i => new AttendeeRow
            {
                UserNamber = i.FirstOrDefault().User.UserNumber,
                ExternalId = i.FirstOrDefault().User.ExternalID,
                Points     = i.Sum(p => p.Points)
            })
                           .OrderByDescending(i => i.Points)
                           .Take(this.maxNumberOfResults)
                           .ToListAsync();

            var topRedemptions = await this.DatabaseContext.RedemptionLog
                                 .Where(i => i.Redemption.InstanceID == selectedInstanceID)
                                 .GroupBy(i => i.RedemptionID)
                                 .Select(i => new RedemptionsRow
            {
                RedemptionNumber = i.FirstOrDefault().Redemption.RedemptionNumber,
                TimesRedeemed    = i.Count(),
                Name             = i.FirstOrDefault().Redemption.Name,
                Description      = i.FirstOrDefault().Redemption.Description
            })
                                 .OrderByDescending(i => i.TimesRedeemed)
                                 .Take(this.maxNumberOfResults)
                                 .ToListAsync();

            var dashboardReports = new DashboardReports
            {
                AwardsList      = topAwarded,
                AttendeeList    = topUsers,
                RedemptionsList = topRedemptions
            };

            return(this.View("~/Views/Admin/Admin.cshtml", dashboardReports));
        }
Ejemplo n.º 2
0
        public async Task <IActionResult> Index()
        {
            //var topAwardPoints = await _context.AwardLog
            //    .GroupBy(i => i.AwardID)
            //    .Select(i => new TopAward
            //    {
            //        AwardID = i.Key,
            //        TotalPoints = i.Sum(b => b.Points)
            //    })
            //    .OrderBy(i => i.TotalPoints)
            //    .Take(25)
            //    .ToListAsync();

            //foreach (var topAwardPoint in topAwardPoints)
            //{
            //    topAwardPoint.Award = await _context.Award.FirstOrDefaultAsync(
            //        i => i.AwardID == topAwardPoint.AwardID);
            //}

            //var topAwardPoints = await _context.RedemptionLog
            //    .GroupBy(i => i.UserID)
            //    .Select(i => new
            //    {
            //        UserID = i.Key,
            //        TotalPoints = i.Sum(b => )
            //    })
            //    .Take(25)
            //    .ToListAsync();

            //return View("~/Views/Admin/Admin.cshtml", topAwardPoints);

            var topAwarded = _context.AwardLog
                             .GroupBy(i => i.AwardID)
                             .Select(i => new AwardsRow()
            {
                AwardNumber = i.FirstOrDefault().Award.AwardNumber,
                TimesAwards = i.Count(),
                Name        = i.FirstOrDefault().Award.Name,
                Description = i.FirstOrDefault().Award.Description
            })
                             .OrderByDescending(i => i.TimesAwards)
                             .Take(25)
                             .ToList();

            var topUsers = _context.AwardLog
                           .GroupBy(i => i.UserID)
                           .Select(i => new UserRow()
            {
                UserNamber = i.FirstOrDefault().User.UserNumber,
                ExternalId = i.FirstOrDefault().User.ExternalID,
                Points     = i.Sum(p => p.Points)
            })
                           .OrderByDescending(i => i.Points)
                           .Take(25)
                           .ToList();

            var dashboardReports = new DashboardReports();

            dashboardReports.AwardsList = topAwarded;

            dashboardReports.UserList = topUsers;

            return(View("~/Views/Admin/Admin.cshtml", dashboardReports));
        }