예제 #1
0
        void editTrainingPlan(BodyArchitect.Service.Model.TrainingPlans.TrainingPlan plan)
        {
            ControlHelper.RunWithExceptionHandling(delegate
            {
                WorkoutPlanDTO planDto       = (WorkoutPlanDTO)plan.Tag;
                TrainingPlanEditorWindow wnd = new TrainingPlanEditorWindow();
                wnd.Fill(plan);
                if (wnd.ShowDialog(this) == System.Windows.Forms.DialogResult.OK)
                {
                    ParentWindow.RunAsynchronousOperation(delegate
                    {
                        TrainingPlanChecker checker = new TrainingPlanChecker();
                        checker.Process(wnd.TrainingPlan);
                        planDto.SetTrainingPlan(wnd.TrainingPlan);

                        XmlSerializationTrainingPlanFormatter formatter = new XmlSerializationTrainingPlanFormatter();
                        planDto.PlanContent = formatter.ToXml(wnd.TrainingPlan).ToString();

                        planDto.Profile = UserContext.CurrentProfile;
                        ServiceManager.SaveTrainingPlan(planDto);
                        ObjectsReposidory.ClearWorkoutPlansCache();
                        ParentWindow.SynchronizationContext.Send(delegate
                        {
                            Fill();
                        }, null);
                    });
                }
            });
        }
예제 #2
0
        private void btnNew_Click(object sender, EventArgs e)
        {
            var plan = new BodyArchitect.Service.Model.TrainingPlans.TrainingPlan();

            plan.Tag = new WorkoutPlanDTO();
            editTrainingPlan(plan);
        }
예제 #3
0
        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);
                }
            }
        }
예제 #4
0
        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);
            }
        }
예제 #5
0
        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].ExerciseId == Guid.Empty)
                    {
                        day.RemoveEntry(day.Entries[i]);
                    }
                }

                for (int i = day.SuperSets.Count - 1; i >= 0; i--)
                {
                    if (day.SuperSets[i].SuperSets.Count < 2)
                    {
                        day.SuperSets.RemoveAt(i);
                    }
                }
            }
        }
예제 #6
0
        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 (exercises.ContainsKey(entry.ExerciseId) && !pack.Exercises.Contains(entry.ExerciseId))
                    {
                        pack.Exercises.Add(entry.ExerciseId);
                    }
                }
            }
            return(pack);
        }