Exemple #1
0
        public async Task <IActionResult> GetUserStatistics([FromQuery] string id = null)
        {
            try {
                Expression <Func <Workout, bool> > condition = null;
                if (id == null)
                {
                    condition = t => t.User.UserName.Equals(User.Claims.First(c => c.Type == ClaimTypes.NameIdentifier).Value);
                }
                else
                {
                    condition = t => t.User.Id.Equals(id);
                }
                var allWorkoutsByUser = await _context.Workouts
                                        .Include(s => s.User)
                                        .Include(s => s.Template)
                                        .AsNoTracking()
                                        .Where(condition)
                                        .Select(x => new { NumberOfRepetitions = x.NumberOfRepetitions, Muscle = x.Template.MuscleGroup })
                                        .ToListAsync();

                var statisticsModel = new UserStatisticsModel();
                statisticsModel.TotalWorkouts                 = allWorkoutsByUser.Count;
                statisticsModel.TotalRepetitions              = allWorkoutsByUser.Sum(x => x.NumberOfRepetitions);
                statisticsModel.TotalWorkoutsByMuscleGroup    = new Dictionary <string, int>();
                statisticsModel.TotalRepetitionsByMuscleGroup = new Dictionary <string, int>();
                foreach (var workout in allWorkoutsByUser)
                {
                    if (statisticsModel.TotalWorkoutsByMuscleGroup.ContainsKey(workout.Muscle))
                    {
                        statisticsModel.TotalWorkoutsByMuscleGroup[workout.Muscle] += 1;
                    }
                    else
                    {
                        statisticsModel.TotalWorkoutsByMuscleGroup.Add(workout.Muscle, 1);
                    }

                    if (statisticsModel.TotalRepetitionsByMuscleGroup.ContainsKey(workout.Muscle))
                    {
                        statisticsModel.TotalRepetitionsByMuscleGroup[workout.Muscle] += workout.NumberOfRepetitions;
                    }
                    else
                    {
                        statisticsModel.TotalRepetitionsByMuscleGroup.Add(workout.Muscle, workout.NumberOfRepetitions);
                    }
                }

                return(Ok(statisticsModel));
            }catch (Exception ex) {
                throw ex;
            }
        }
Exemple #2
0
        /// <summary>
        ///
        /// </summary>
        /// <returns></returns>
        public ActionResult Statistics()
        {
            var userDB = new ApplicationDbContext();

            var model = new UserStatisticsModel
            {
                UserCount       = userDB.Users.Count(),
                RegisteredToday = 0,
                ApprovedToday   = 0,
                LogedInToday    = 0,
            };


            foreach (var role in userDB.Roles.ToList())
            {
                model.RoleStatistics.Add(new RoleStatisticsModel
                {
                    RoleName  = role.Name,
                    UserCount = userDB.Users.Count(u => u.Roles.Any(r => r.RoleId.Equals(role.Id))),
                });
            }

            var timeDB = new TimeTableDbContext();

            foreach (var org in timeDB.Organisers.ToList())
            {
                model.OrgStatistics.Add(new OrgStatisticsModel
                {
                    OrgName    = org.Name,
                    UserCount  = org.Members.Count(m => !string.IsNullOrEmpty(m.UserId)),
                    AdminCount = org.Members.Count(m => m.IsAdmin),
                });
            }



            return(View(model));
        }