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); }
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); } } }
public CustomExerciseCreatedEventArgs(FitnessTrackerPlus.Web.Data.Exercise custom_exercise) { this.custom_exercise = custom_exercise; }
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; }; }