public IActionResult ProgramJson(TrainerLevelType level = TrainerLevelType.Intermediate, DaysType days = DaysType.FourDays, TemplateType templateType = TemplateType.ABC) { var template = GetTemplate(level, days, templateType.ToString()); var program = new FitnessProgram { Template = template }; return(new JsonResult(GetProgramViewModel(program))); }
public IActionResult GenerateProgram(TrainerLevelType level, DaysType days, string templateType) { var template = GetTemplate(level, days, templateType); var program = new FitnessProgram { Template = template }; HttpContext.Session.Set($"{ProgramSessionPrefix}{program.Created}", program); var vm = GetProgramViewModel(program); return(View("Program", vm)); }
//按小时统计;参数daysType取值1、2或3,表示只考虑工作日、只考虑双休日或全部考虑;参数dateEnd表示统计从当前时间至多久前的数据 static List <int> DistributionBasedOnHour(DaysType daysType, DateTime dateEnd) { List <int> resultList = new List <int>(24);//每个元素对应1小时,分别统计在该小时内发出的微博的频数 for (int i = 0; i < 24; i++) { resultList.Add(0); } foreach (Feed feed in user.FeedList) { DateTime dateOfFeed = DateTime.ParseExact(feed.Time, "yyyy-MM-dd HH:mm", null); if (dateEnd < dateOfFeed) { switch (daysType) { case DaysType.Weekdays: if (dateOfFeed.DayOfWeek >= DayOfWeek.Monday && dateOfFeed.DayOfWeek <= DayOfWeek.Friday) { resultList[dateOfFeed.Hour]++; } break; case DaysType.Weekends: if (dateOfFeed.DayOfWeek.Equals(DayOfWeek.Saturday) || dateOfFeed.DayOfWeek.Equals(DayOfWeek.Sunday)) { resultList[dateOfFeed.Hour]++; } break; default: resultList[dateOfFeed.Hour]++; break; } } else { break; } } return(resultList); }
//按小时统计;参数daysType取值1、2或3,表示只考虑工作日、只考虑双休日或全部考虑;参数dateEnd表示统计从当前时间至多久前的数据 static List<int> DistributionBasedOnHour(DaysType daysType, DateTime dateEnd) { List<int> resultList = new List<int>(24);//每个元素对应1小时,分别统计在该小时内发出的微博的频数 for (int i = 0; i < 24; i++) { resultList.Add(0); } foreach (Feed feed in user.FeedList) { DateTime dateOfFeed = DateTime.ParseExact(feed.Time, "yyyy-MM-dd HH:mm", null); if (dateEnd < dateOfFeed) { switch (daysType) { case DaysType.Weekdays: if (dateOfFeed.DayOfWeek >= DayOfWeek.Monday && dateOfFeed.DayOfWeek <= DayOfWeek.Friday) { resultList[dateOfFeed.Hour]++; } break; case DaysType.Weekends: if (dateOfFeed.DayOfWeek.Equals(DayOfWeek.Saturday) || dateOfFeed.DayOfWeek.Equals(DayOfWeek.Sunday)) { resultList[dateOfFeed.Hour]++; } break; default: resultList[dateOfFeed.Hour]++; break; } } else { break; } } return resultList; }
private Template GetTemplate(TrainerLevelType level, DaysType days, string templateType) { Template template = null; TemplateFactory templateFactory = new TemplateFactory(level); if (templateType != "DecideForMe") { template = templateFactory.CreateBasicTemplate(Enum.Parse <TemplateType>(templateType)); } else { Random random; if (days <= DaysType.TwoDays) { //FBW template = templateFactory.CreateBasicTemplate(TemplateType.FBW); } if (days == DaysType.ThreeDays) { if (level == TrainerLevelType.Novice) { //FBW template = templateFactory.CreateBasicTemplate(TemplateType.FBW); } if (level == TrainerLevelType.Intermediate) { //FBW/AB (random) var list = new TemplateType[] { TemplateType.AB }; random = new Random(); template = templateFactory.CreateBasicTemplate(list[random.Next(list.Length)]); } if (level >= TrainerLevelType.Advanced) { //AB template = templateFactory.CreateBasicTemplate(TemplateType.AB); } } if (days == DaysType.FourDays) { if (level <= TrainerLevelType.Intermediate) { //AB template = templateFactory.CreateBasicTemplate(TemplateType.AB); } if (level >= TrainerLevelType.Advanced) { // AB, ABC, ABCD (random) var list = new TemplateType[] { TemplateType.ABCD, TemplateType.AB, TemplateType.ABC }; random = new Random(); template = templateFactory.CreateBasicTemplate(list[random.Next(list.Length)]); } } if (days == DaysType.FiveDays) { if (level <= TrainerLevelType.Advanced) { //ABC template = templateFactory.CreateBasicTemplate(TemplateType.ABC); } else { //ABC, ABCD, ABCDE var list = new TemplateType[] { TemplateType.ABCD, TemplateType.ABC }; random = new Random(list.Length); template = templateFactory.CreateBasicTemplate(list[random.Next(list.Length)]); } } if (days == DaysType.SixDays || days == DaysType.SevenDays) { if (level <= TrainerLevelType.Advanced) { //ABC template = templateFactory.CreateBasicTemplate(TemplateType.ABC); } else { //ABC, ABCD, ABCDE, ABCDEF var list = new[] { TemplateType.AB, TemplateType.ABC, TemplateType.ABCD }; random = new Random(list.Length); template = templateFactory.CreateBasicTemplate(list[random.Next(list.Length)]); } } if (template == null) { throw new Exception("could not instantiate template"); } } template.DaysType = days; template.TrainerLevelType = level; foreach (Workout templateWorkout in template.Workouts) { foreach (MuscleExercises templateWorkoutMuscleExercise in templateWorkout.WorkoutHistories.First() .MuscleExercises) { var exercisesOfMuscle = _db.Exercises.Where(x => x.MuscleType == templateWorkoutMuscleExercise.MuscleType).ToList(); for (int i = 0; i < templateWorkoutMuscleExercise.Exercises.Count; i++) { Random r = new Random(); var exerciseSetting = _programService.PickExerciseSetting( _programService.GetRelevantExerciseData(i, level, templateWorkoutMuscleExercise.MuscleType)); var workoutExercise = templateWorkoutMuscleExercise.Exercises[i]; var exerciseChose = _programService.PickExercise(i, exerciseSetting, exercisesOfMuscle); workoutExercise.Name = exerciseChose.Name; var numOfSets = exerciseSetting.Sets[r.Next(exerciseSetting.Sets.Length)]; var reps = _programService.PickReps(exerciseSetting); var rest = _programService.PickRest(exerciseSetting); for (int j = 0; j < numOfSets; j++) { var set = new Set() { Reps = reps, Rest = rest }; workoutExercise.Sets.Add(set); } exercisesOfMuscle.Remove(exerciseChose); } } } return(template); }