示例#1
0
        private void CreateExerciseLogEntry(FitnessTrackerPlus.Web.Data.Exercise exercise)
        {
            ExerciseLogEntry entry = new ExerciseLogEntry();

            // Setup new exercise log entry with selected date, exercise and current user

            entry.exercise_id = exercise.id;
            entry.entry_date  = Globals.SelectedDate;
            entry.user_id     = Globals.CurrentUser.id;

            context.ExerciseLogEntries.Add(entry);
            context.SubmitChanges((ChangesSubmitted) =>
            {
                if (!ChangesSubmitted.HasError)
                {
                    if (exercise.ExerciseType.type_name == "Cardio")
                    {
                        CardioData.Load();
                    }
                    else if (exercise.ExerciseType.type_name == "Weight Training")
                    {
                        WeightTrainingData.Load();
                    }
                    else
                    {
                        ActivityData.Load();
                    }
                }
            }, null);
        }
示例#2
0
        private void CustomExerciseForm_EditEnded(object sender, DataFormEditEndedEventArgs e)
        {
            if (e.EditAction == DataFormEditAction.Cancel && CustomExerciseCanceled != null)
            {
                CustomExerciseCanceled(this, null);
            }
            else
            {
                if (CustomExerciseForm.ValidateItem())
                {
                    // If validation succeeds then add the exercise to the database

                    context.Exercises.Add(CustomExerciseForm.CurrentItem as FitnessTrackerPlus.Web.Data.Exercise);
                    context.SubmitChanges((ExerciseSubmitted) =>
                    {
                        if (!ExerciseSubmitted.HasError)
                        {
                            // If the exercise was a weight training exercise we need to add an entry
                            // to the exercises_muscle_groups table

                            FitnessTrackerPlus.Web.Data.Exercise customExercise = CustomExerciseForm.CurrentItem as FitnessTrackerPlus.Web.Data.Exercise;

                            if (customExercise.ExerciseType.type_name == "Weight Training")
                            {
                                ExerciseMuscleGroup exerciseMuscleGroup = new ExerciseMuscleGroup {
                                    muscle_group_id = selectedGroup.id, exercise_id = customExercise.id
                                };

                                context.ExerciseMuscleGroups.Add(exerciseMuscleGroup);
                                context.SubmitChanges((ExerciseMuscleGroupSubmitted) =>
                                {
                                    if (!ExerciseMuscleGroupSubmitted.HasError)
                                    {
                                        if (CustomExerciseCreated != null)
                                        {
                                            CustomExerciseCreated(this, new CustomExerciseCreatedEventArgs(customExercise));
                                        }
                                    }
                                }, null);
                            }
                            else
                            {
                                if (CustomExerciseCreated != null)
                                {
                                    CustomExerciseCreated(this, new CustomExerciseCreatedEventArgs(customExercise));
                                }
                            }
                        }
                    }, null);
                }
            }
        }
示例#3
0
 public CustomExerciseCreatedEventArgs(FitnessTrackerPlus.Web.Data.Exercise custom_exercise)
 {
     this.custom_exercise = custom_exercise;
 }
示例#4
0
        public ExerciseLog()
        {
            InitializeComponent();

            Loaded += (s, e) =>
            {
                CardioLogGrid.LayoutUpdated        += (se, ev) => { DataGridHelper.ResizeGrid(0, CardioLogGrid); };
                CardioLogGrid.RowEditEnded         += new EventHandler <DataGridRowEditEndedEventArgs>(ExerciseLogGrid_RowEditEnded);
                CardioLogGrid.PreparingCellForEdit += new EventHandler <DataGridPreparingCellForEditEventArgs>(ExerciseLogGrid_PreparingCellForEdit);

                ActivityLogGrid.LayoutUpdated        += (se, ev) => { DataGridHelper.ResizeGrid(0, ActivityLogGrid); };
                ActivityLogGrid.RowEditEnded         += new EventHandler <DataGridRowEditEndedEventArgs>(ExerciseLogGrid_RowEditEnded);
                ActivityLogGrid.PreparingCellForEdit += new EventHandler <DataGridPreparingCellForEditEventArgs>(ExerciseLogGrid_PreparingCellForEdit);

                WeightTrainingLogGrid.LayoutUpdated += (se, ev) => { DataGridHelper.ResizeGrid(0, WeightTrainingLogGrid); };
                WeightTrainingLogGrid.RowEditEnded  += new EventHandler <DataGridRowEditEndedEventArgs>(ExerciseLogGrid_RowEditEnded);

                Calendar.SelectedDate          = Globals.SelectedDate;
                Calendar.SelectedDatesChanged += (se, ev) =>
                {
                    if (Calendar.SelectedDate.HasValue)
                    {
                        Globals.SelectedDate = Calendar.SelectedDate.Value;
                    }
                };

                ExerciseTypes.SelectionChanged += (se, ev) =>
                {
                    ExerciseType selectedType = ExerciseTypes.SelectedItem as ExerciseType;

                    if (selectedType.id > 0)
                    {
                        if (selectedType.type_name == "Weight Training")
                        {
                            MuscleGroups.Visibility = Visibility.Visible;
                            Exercises.Visibility    = Visibility.Collapsed;
                        }
                        else
                        {
                            context.Load <FitnessTrackerPlus.Web.Data.Exercise>(context.GetExercisesByTypeQuery(Globals.CurrentUser.id, selectedType.id),
                                                                                LoadBehavior.RefreshCurrent, (ExercisesLoaded) =>
                            {
                                if (!ExercisesLoaded.HasError)
                                {
                                    Exercises.Visibility = Visibility.Visible;
                                }
                            }, null);

                            MuscleGroups.Visibility = Visibility.Collapsed;
                        }
                    }
                    else
                    {
                        MuscleGroups.Visibility = Visibility.Collapsed;
                        Exercises.Visibility    = Visibility.Collapsed;
                    }
                };

                MuscleGroups.SelectionChanged += (se, ev) =>
                {
                    MuscleGroup selectedGroup = MuscleGroups.SelectedItem as MuscleGroup;

                    if (selectedGroup.id > 0)
                    {
                        context.Load <FitnessTrackerPlus.Web.Data.Exercise>(context.GetExercisesByMuscleGroupQuery(Globals.CurrentUser.id, selectedGroup.id),
                                                                            LoadBehavior.RefreshCurrent, (ExercisesLoaded) =>
                        {
                            if (!ExercisesLoaded.HasError)
                            {
                                Exercises.Visibility = Visibility.Visible;
                            }
                        }, null);
                    }
                    else
                    {
                        Exercises.Visibility = Visibility.Collapsed;
                    }
                };

                Exercises.SelectionChanged += (se, ev) =>
                {
                    FitnessTrackerPlus.Web.Data.Exercise selectedExercise = Exercises.SelectedItem as FitnessTrackerPlus.Web.Data.Exercise;

                    if (selectedExercise.id > 0)
                    {
                        CreateExerciseLogEntry(selectedExercise);
                    }
                };

                CustomExercise.Click += new RoutedEventHandler(CustomExercise_Click);
                DeleteSelected.Click += new RoutedEventHandler(DeleteSelected_Click);

                // Hold onto a copy of the ExerciseContext contained in the XAML

                context = this.Resources["ExerciseContext"] as ExerciseContext;

                Parameter user_id = new Parameter();
                user_id.ParameterName = "user_id";
                user_id.Value         = Globals.CurrentUser.id;

                // Ensure that the user_id parameter is set for all DomainDataSource controls before the query is executed

                CardioData.QueryParameters.Add(user_id);
                WeightTrainingData.QueryParameters.Add(user_id);
                ActivityData.QueryParameters.Add(user_id);

                // Ensure that whenever data is being loaded into the DomainContext the ProgressBar control is visible
                // The ProgressBarVisibilityConverter will ensure that when IsLoading is true the Visibility is set to visible, false otherwise

                Binding binding = new Binding();
                binding.Source    = context;
                binding.Path      = new PropertyPath("IsLoading");
                binding.Converter = new ProgressBarVisibilityConverter();

                ProgressBar.SetBinding(ProgressBar.VisibilityProperty, binding);

                // Setup the ComboBox controls now that the ExerciseContext is available

                context.Load <ExerciseType>(context.GetExerciseTypesQuery(), LoadBehavior.RefreshCurrent, (ExerciseTypesLoaded) =>
                {
                    if (!ExerciseTypesLoaded.HasError)
                    {
                        ExerciseTypes.ItemsSource   = ExerciseTypesLoaded.Entities;
                        ExerciseTypes.SelectedIndex = 0;
                    }
                }, null);

                context.Load <MuscleGroup>(context.GetMuscleGroupsQuery(), LoadBehavior.RefreshCurrent, (MuscleGroupsLoaded) =>
                {
                    if (!MuscleGroupsLoaded.HasError)
                    {
                        MuscleGroups.ItemsSource   = MuscleGroupsLoaded.Entities;
                        MuscleGroups.SelectedIndex = 0;
                    }
                }, null);

                Exercises.ItemsSource = context.Exercises;
            };
        }