public void TestDayNameUnique() { TrainingPlan plan = new TrainingPlan(); plan.RestSeconds = 60; plan.Name = "name"; plan.Author = "author"; plan.TrainingType = TrainingType.Split; var day1 = new TrainingPlanDay(); day1.Name = "Day 1"; plan.AddDay(day1); TrainingPlanEntry entry = new TrainingPlanEntry(); entry.Exercise = new ExerciseLightDTO() { GlobalId = new Guid("9934E9E3-50DC-4B34-8B67-092084894740") }; day1.AddEntry(entry); entry.Sets.Add(new TrainingPlanSerie(10)); var day2 = new TrainingPlanDay(); day2.Name = "Day 1"; plan.AddDay(day2); entry = new TrainingPlanEntry(); entry.Exercise = new ExerciseLightDTO() { GlobalId = new Guid("9934E9E3-50DC-4B34-8B67-092084894740") }; day2.AddEntry(entry); entry.Sets.Add(new TrainingPlanSerie(10)); checkSingle(plan, day2, TrainingPlanCheckItemStatus.Error, "TrainingPlan_DaysName_Unique"); }
public void TestIsolationExerciseBeforeCompoud() { TrainingPlan plan = new TrainingPlan(); plan.RestSeconds = 60; plan.Name = "name"; plan.Author = "author"; plan.TrainingType = TrainingType.Split; var day = new TrainingPlanDay(); day.Name = "day1"; plan.AddDay(day); TrainingPlanEntry entryIsolated = new TrainingPlanEntry(); entryIsolated.Exercise = new ExerciseLightDTO() { GlobalId = new Guid("01C796E2-0119-4F95-9A9A-79F2890DF658") }; day.AddEntry(entryIsolated); entryIsolated.Sets.Add(new TrainingPlanSerie(10)); TrainingPlanEntry entryCompoud = new TrainingPlanEntry(); entryCompoud.Exercise = new ExerciseLightDTO() { GlobalId = new Guid("9934E9E3-50DC-4B34-8B67-092084894740") }; day.AddEntry(entryCompoud); entryCompoud.Sets.Add(new TrainingPlanSerie(10)); checkSingle(plan, entryIsolated, TrainingPlanCheckItemStatus.Information, "Split_IsolationExerciseBeforeCompoud"); }
//public void DeleteExercise(Token token, ExerciseDTO dto) //{ // var securityInfo = SecurityManager.EnsureAuthentication(token); // Log.WriteWarning("DeleteExercise:Username={0},exerciseId={1}", securityInfo.SessionData.Profile.UserName, dto.GlobalId); // //var dbPlan = Mapper.Map<WorkoutPlanDTO, BodyArchitect.Model.TrainingPlan>(dto); // var session = Session; // using (var tx = session.BeginTransaction()) // { // ExerciseOperation.DeleteExercise(session, dto.GlobalId, securityInfo.SessionData.Profile.Id,Configuration.TimerService); // tx.Commit(); // } //} //public void DeleteWorkoutPlan(Token token, TrainingPlanInfo dto) //{ // var securityInfo = SecurityManager.EnsureAuthentication(token); // WorkoutPlanService service = new WorkoutPlanService(Session, securityInfo, Configuration); // service.DeleteWorkoutPlan(dto); //} public TrainingPlan SaveWorkoutPlan(Token token, TrainingPlan dto) { var securityInfo = SecurityManager.EnsureAuthentication(token); WorkoutPlanService service = new WorkoutPlanService(Session, securityInfo, Configuration); return(service.SaveWorkoutPlan(dto)); }
public void TestFBW_15_10_5Plan() { Exercise exercise = new Exercise(Guid.NewGuid()); exercise.Name = "exercise 2"; exercise.Shortcut = "E2"; TrainingPlan plan = new TrainingPlan(); plan.Comment = "15-10-5"; plan.TrainingType = TrainingType.FBW; TrainingPlanDay dayA = new TrainingPlanDay(); plan.AddDay(dayA); TrainingPlanEntry entry = new TrainingPlanEntry(); entry.Exercise = exercise.Map <ExerciseLightDTO>(); dayA.Entries.Add(entry); TrainingPlanDay dayB = new TrainingPlanDay(); plan.AddDay(dayB); TrainingPlanEntry entry1 = new TrainingPlanEntry(); entry1.Exercise = exercise.Map <ExerciseLightDTO>(); dayA.Entries.Add(entry1); }
public void TestDropSetInNotOnlyLastSet() { TrainingPlan plan = new TrainingPlan(); plan.RestSeconds = 60; plan.Name = "name"; plan.Author = "author"; plan.TrainingType = TrainingType.Split; var day = new TrainingPlanDay(); day.Name = "day1"; plan.AddDay(day); TrainingPlanEntry entry = new TrainingPlanEntry(); entry.Exercise = new ExerciseLightDTO() { GlobalId = new Guid("9934E9E3-50DC-4B34-8B67-092084894740") }; day.AddEntry(entry); entry.Sets.Add(new TrainingPlanSerie(10)); entry.Sets.Add(new TrainingPlanSerie(10)); var set1 = new TrainingPlanSerie(10); set1.DropSet = Service.V2.Model.DropSetType.IIDropSet; entry.Sets.Add(set1); var set2 = new TrainingPlanSerie(10); set2.DropSet = Service.V2.Model.DropSetType.IIDropSet; entry.Sets.Add(set2); checkSingle(plan, set1, TrainingPlanCheckItemStatus.Information, "TrainingPlan_DropSetInNotOnlyLastSet"); }
public TrainingPlan WorkoutPlanOperation(WorkoutPlanOperationParam param) { Log.WriteWarning("WorkoutPlanFavoritesOperation: Username={0},userDto.GlobalId={1}", SecurityInfo.SessionData.Profile.UserName, param.Operation); if (!SecurityInfo.Licence.IsPremium) { throw new LicenceException("This feature is allowed for Premium account"); } var session = Session; TrainingPlan result = null; using (var tx = session.BeginSaveTransaction()) { var profileDb = session.Load <Profile>(SecurityInfo.SessionData.Profile.GlobalId); var workoutPlanDb = session.Get <BodyArchitect.Model.TrainingPlan>(param.WorkoutPlanId); if (param.Operation == SupplementsCycleDefinitionOperation.AddToFavorites) { if (workoutPlanDb.Profile == profileDb || workoutPlanDb.Status == PublishStatus.Private) { throw new InvalidOperationException("Cannot add/remove your workout plan to the favorite list"); } if (profileDb.FavoriteWorkoutPlans.Contains(workoutPlanDb)) { throw new ObjectIsFavoriteException("Plan is in favorites list already"); } profileDb.FavoriteWorkoutPlans.Add(workoutPlanDb); } else if (param.Operation == SupplementsCycleDefinitionOperation.RemoveFromFavorites) { if (profileDb.FavoriteWorkoutPlans.Contains(workoutPlanDb)) { profileDb.FavoriteWorkoutPlans.Remove(workoutPlanDb); } else { throw new ObjectIsNotFavoriteException("Plan is not in favorites list"); } } else if (param.Operation == SupplementsCycleDefinitionOperation.Publish) { workoutPlanDb = publishWorkoutPlan(workoutPlanDb, profileDb); result = workoutPlanDb.Map <TrainingPlan>(); } else if (param.Operation == SupplementsCycleDefinitionOperation.Delete) { DeleteWorkoutPlan(param.WorkoutPlanId); } profileDb.DataInfo.WorkoutPlanHash = Guid.NewGuid(); session.SaveOrUpdate(profileDb); tx.Commit(); return(result); } }
public void TestGlobalRestSecondsNotSet() { TrainingPlan plan = new TrainingPlan(); plan.TrainingType = TrainingType.Split; plan.RestSeconds = 0; plan.Name = "name"; plan.Author = "author"; checkSingle(plan, plan, TrainingPlanCheckItemStatus.Information, "TrainingPlan_RestSecond_Empty"); }
public void TestTrainingPlanNameNotSet() { TrainingPlan plan = new TrainingPlan(); plan.TrainingType = TrainingType.Split; plan.Author = "test"; plan.RestSeconds = 55; checkSingle(plan, plan, TrainingPlanCheckItemStatus.Error, "TrainingPlan_Name_Empty"); }
private void checkSingle(TrainingPlan plan, BAGlobalObject planItem, TrainingPlanCheckItemStatus status, string resourceKey) { //Dictionary<Guid, ExerciseDTO> exerciseDtos = ObjectsConverter.ToExerciseDTO(exercises.Values).ToDictionary(t => t.GlobalId); Dictionary <Guid, ExerciseDTO> exerciseDtos = exercises.Values.Map <IList <ExerciseDTO> >().ToDictionary(t => t.GlobalId); TrainingPlanPack pack = TrainingPlanPack.Create(plan, exerciseDtos); SplitPlanChecker checker = new SplitPlanChecker(pack); var result = checker.Check(exerciseDtos); Assert.AreEqual(1, result.Results.Count); Assert.AreEqual(status, result.Results[0].Status); Assert.AreEqual(resourceKey, result.Results[0].ResourceKey); Assert.AreEqual(planItem.GlobalId, result.Results[0].TrainingPlanBase.GlobalId); }
public void TestTwoIsolationExerciseBeforeCompoud() { TrainingPlan plan = new TrainingPlan(); plan.RestSeconds = 60; plan.Name = "name"; plan.Author = "author"; plan.TrainingType = TrainingType.Split; var day = new TrainingPlanDay(); day.Name = "day1"; plan.AddDay(day); TrainingPlanEntry entryIsolated = new TrainingPlanEntry(); entryIsolated.Exercise = new ExerciseLightDTO() { GlobalId = new Guid("01C796E2-0119-4F95-9A9A-79F2890DF658") }; day.AddEntry(entryIsolated); entryIsolated.Sets.Add(new TrainingPlanSerie(10)); TrainingPlanEntry secondIsolated = new TrainingPlanEntry(); secondIsolated.Exercise = new ExerciseLightDTO() { GlobalId = new Guid("D6562C2A-BD74-46BE-8398-57B56BD698D5") }; day.AddEntry(secondIsolated); secondIsolated.Sets.Add(new TrainingPlanSerie(10)); TrainingPlanEntry entryCompoud = new TrainingPlanEntry(); entryCompoud.Exercise = new ExerciseLightDTO() { GlobalId = new Guid("9934E9E3-50DC-4B34-8B67-092084894740") }; day.AddEntry(entryCompoud); entryCompoud.Sets.Add(new TrainingPlanSerie(10)); //Dictionary<Guid, ExerciseDTO> exerciseDtos = ObjectsConverter.ToExerciseDTO(exercises.Values).ToDictionary(t => t.GlobalId); Dictionary <Guid, ExerciseDTO> exerciseDtos = exercises.Values.Map <IList <ExerciseDTO> >().ToDictionary(t => t.GlobalId); TrainingPlanPack pack = TrainingPlanPack.Create(plan, exerciseDtos); SplitPlanChecker checker = new SplitPlanChecker(pack); var result = checker.Check(exerciseDtos); Assert.AreEqual(2, result.Results.Count); Assert.AreEqual(TrainingPlanCheckItemStatus.Information, result.Results[0].Status); Assert.AreEqual("Split_IsolationExerciseBeforeCompoud", result.Results[0].ResourceKey); Assert.AreEqual(entryIsolated.GlobalId, result.Results[0].TrainingPlanBase.GlobalId); Assert.AreEqual(TrainingPlanCheckItemStatus.Information, result.Results[1].Status); Assert.AreEqual("Split_IsolationExerciseBeforeCompoud", result.Results[1].ResourceKey); Assert.AreEqual(secondIsolated.GlobalId, result.Results[1].TrainingPlanBase.GlobalId); }
public void TestEmptyDay() { TrainingPlan plan = new TrainingPlan(); plan.RestSeconds = 60; plan.Name = "name"; plan.Author = "author"; plan.TrainingType = TrainingType.Split; var day = new TrainingPlanDay(); day.Name = "day1"; plan.AddDay(day); checkSingle(plan, day, TrainingPlanCheckItemStatus.Information, "TrainingPlan_EmptyDay"); }
private void checkUniquenessDayNames(TrainingPlan plan, TrainingPlanCheckResult result) { var uniqueNamesResult = from day in plan.Days group day by day.Name into g select g; var moreResult = uniqueNamesResult.Where(t => t.ToList().Count > 1); foreach (var item in moreResult) { var test = item.ToList(); for (int i = 1; i < test.Count; i++) { result.AddResult(test[i], "TrainingPlan_DaysName_Unique", TrainingPlanCheckItemStatus.Error); } } }
public void Test() { Exercise exercise = new Exercise(Guid.NewGuid()); exercise.Name = "exercise 1"; exercise.Shortcut = "E1"; Exercise exercise2 = new Exercise(Guid.NewGuid()); exercise2.Name = "exercise 2"; exercise2.Shortcut = "E2"; Exercise exercise3 = new Exercise(Guid.NewGuid()); exercise3.Name = "exercise 3"; exercise3.Shortcut = "E3"; Exercise exercise4 = new Exercise(Guid.NewGuid()); exercise4.Name = "exercise 4"; exercise4.Shortcut = "E4"; TrainingPlan plan = new TrainingPlan(); TrainingPlanDay day1 = new TrainingPlanDay(); plan.AddDay(day1); TrainingPlanEntry entry = new TrainingPlanEntry(); entry.Exercise = exercise.Map <ExerciseLightDTO>(); entry.Sets.Add(new TrainingPlanSerie(12)); entry.Sets.Add(new TrainingPlanSerie(10)); entry.Sets.Add(new TrainingPlanSerie(8)); day1.Entries.Add(entry); entry = new TrainingPlanEntry(); entry.Exercise = exercise2.Map <ExerciseLightDTO>(); entry.Sets.Add(new TrainingPlanSerie(10)); entry.Sets.Add(new TrainingPlanSerie(10)); entry.Sets.Add(new TrainingPlanSerie(8)); entry.Sets.Add(new TrainingPlanSerie(6)); day1.Entries.Add(entry); TrainingPlanDay day2 = new TrainingPlanDay(); plan.AddDay(day2); TrainingPlanEntry entry3 = new TrainingPlanEntry(); day2.Entries.Add(entry3); entry3.Exercise = exercise3.Map <ExerciseLightDTO>(); entry3.Sets.Add(new TrainingPlanSerie(10)); entry3.Sets.Add(new TrainingPlanSerie(8)); }
void check(TrainingPlan plan, TrainingPlanCheckResult result) { if (plan.RestSeconds == 0) { result.AddResult(plan, "TrainingPlan_RestSecond_Empty", TrainingPlanCheckItemStatus.Information); } if (string.IsNullOrEmpty(plan.Name)) { result.AddResult(plan, "TrainingPlan_Name_Empty", TrainingPlanCheckItemStatus.Error); } //not unique names checkUniquenessDayNames(plan, result); foreach (var day in plan.Days) { check(day, result); } }
public static TrainingPlanPack Create(TrainingPlan plan, IDictionary <Guid, ExerciseDTO> exercises) { if (plan == null) { throw new ArgumentNullException("plan"); } TrainingPlanPack pack = new TrainingPlanPack(); pack.TrainingPlan = plan; foreach (var day in pack.TrainingPlan.Days) { foreach (var entry in day.Entries) { if (entry.Exercise != null && exercises.ContainsKey(entry.Exercise.GlobalId) && pack.Exercises.Where(x => x.GlobalId == entry.Exercise.GlobalId).Count() == 0) //!pack.Exercises.Contains(entry.Exercise.GlobalId)) { pack.Exercises.Add(exercises[entry.Exercise.GlobalId]); } } } return(pack); }
public void TestExerciseDoesntExist() { TrainingPlan plan = new TrainingPlan(); plan.RestSeconds = 60; plan.Name = "name"; plan.Author = "author"; plan.TrainingType = TrainingType.Split; var day = new TrainingPlanDay(); day.Name = "day1"; plan.AddDay(day); TrainingPlanEntry entry = new TrainingPlanEntry(); entry.Exercise = new ExerciseLightDTO() { GlobalId = new Guid("1134E9E3-50DC-4B34-8B67-092084894740") }; day.AddEntry(entry); entry.Sets.Add(new TrainingPlanSerie(10)); checkSingle(plan, entry, TrainingPlanCheckItemStatus.Warning, "TrainingPlan_ExerciseDoesntExist"); }
public void Process(TrainingPlan plan) { foreach (TrainingPlanDay day in plan.Days) { for (int i = day.Entries.Count - 1; i >= 0; i--) { if (day.Entries[i].Exercise == null) { day.RemoveEntry(day.Entries[i]); } } //get all entries with GroupName (superset) var entries = plan.Days.SelectMany(x => x.Entries).Where(x => !string.IsNullOrEmpty(x.GroupName)).ToList(); foreach (var trainingPlanEntry in entries) { if (plan.Days.SelectMany(x => x.Entries).Count(x => x.GroupName == trainingPlanEntry.GroupName) < 2) { trainingPlanEntry.GroupName = null; } } } }
public TrainingPlan SaveWorkoutPlan(TrainingPlan dto) { Log.WriteWarning("SaveWorkoutPlan: Username={0},planId={1}", SecurityInfo.SessionData.Profile.UserName, dto.GlobalId); if (!SecurityInfo.Licence.IsPremium) { throw new LicenceException("This feature is allowed for Premium account"); } if (dto.Status != Model.PublishStatus.Private) { throw new InvalidOperationException("Wrong status. Only Private can be saved"); } var session = Session; var dbPlan = Mapper.Map <TrainingPlan, BodyArchitect.Model.TrainingPlan>(dto); using (var tx = session.BeginSaveTransaction()) { var dbProfile = session.Get <Profile>(SecurityInfo.SessionData.Profile.GlobalId); dbPlan.Profile = dbProfile; //now we need to check if the user is publishing the workout plan //var planFromDb = (from p in session.Query<BodyArchitect.Model.TrainingPlan>() // where p.GlobalId == dbPlan.GlobalId // select p).SingleOrDefault(); var planFromDb = session.Get <BodyArchitect.Model.TrainingPlan>(dbPlan.GlobalId); if (planFromDb != null) { if (SecurityInfo.SessionData.Profile.GlobalId != planFromDb.Profile.GlobalId) { throw new CrossProfileOperationException("Cannot modify training plan for another user"); } //we cannot modify published workout plan) if (planFromDb.Status == PublishStatus.Published) { throw new PublishedObjectOperationException("Cannot change published workout plan"); } if (dto.Status == Model.PublishStatus.Published && planFromDb.Status != PublishStatus.Published) { throw new InvalidOperationException("Cannot publish workout using SaveWorkoutPlan method. Use PublishWorkoutPlan method instead."); } dbPlan.Rating = planFromDb.Rating; } else { dbPlan.CreationDate = Configuration.TimerService.UtcNow; } //XmlSerializationTrainingPlanFormatter formatter = new XmlSerializationTrainingPlanFormatter(); //TrainingPlan plan = formatter.FromXml(dto.PlanContent,null); var validator = new ObjectValidator(typeof(TrainingPlan)); var result = validator.Validate(dto); if (!result.IsValid) { throw new ValidationException(result.ToValidationResults()); } dbPlan = session.Merge(dbPlan); //now update cache modification date dbProfile.DataInfo.WorkoutPlanHash = Guid.NewGuid(); tx.Commit(); } //return Mapper.Map<BodyArchitect.Model.TrainingPlan, WorkoutPlanDTO>(dbPlan); var param = new WorkoutPlanSearchCriteria(); param.PlanId = dbPlan.GlobalId; var res = GetWorkoutPlans(param, new PartialRetrievingInfo()); if (res.Items.Count > 0) { return(res.Items[0]); } return(null); }
//public void DeleteWorkoutPlan(Token token, TrainingPlanInfo dto) //{ // exceptionHandling(token, () => InternalService.DeleteWorkoutPlan(token, dto)); //} public TrainingPlan SaveWorkoutPlan(Token token, TrainingPlan dto) { return(exceptionHandling(token, () => InternalService.SaveWorkoutPlan(token, dto))); }
//public static TrainingPlan GetTrainingPlan(Guid planId) //{ // return exceptionHandling(delegate // { // return Instance.GetWorkoutPlan(Token, planId, new RetrievingInfo()); // }); //} public static TrainingPlan SaveTrainingPlan(TrainingPlan dto) { return(exceptionHandling(() => Instance.SaveWorkoutPlan(Token, dto))); }