private void CreateMeasurementLogEntry(FitnessTrackerPlus.Web.Data.Measurement measurement) { MeasurementLogEntry entry = new MeasurementLogEntry(); // Setup new measurement log entry with selected date, measurement and current user IEnumerator units = measurement.MeasurementsUnits.GetEnumerator(); units.MoveNext(); entry.measurement_id = measurement.id; entry.entry_date = Globals.SelectedDate; entry.user_id = Globals.CurrentUser.id; entry.unit_id = (units.Current as MeasurementsUnits).unit_id; context.MeasurementLogEntries.Add(entry); context.SubmitChanges((ChangesSubmitted) => { if (!ChangesSubmitted.HasError) { MeasurementData.Load(); } }, null); }
private void CustomMeasurementForm_EditEnded(object sender, DataFormEditEndedEventArgs e) { if (e.EditAction == DataFormEditAction.Cancel && CustomMeasurementCancelled != null) { CustomMeasurementCancelled(this, null); } else { if (CustomMeasurementForm.ValidateItem()) { // If validation succeeds then add the exercise to the database context.Measurements.Add(CustomMeasurementForm.CurrentItem as FitnessTrackerPlus.Web.Data.Measurement); context.SubmitChanges((MeasurementSubmitted) => { if (!MeasurementSubmitted.HasError) { FitnessTrackerPlus.Web.Data.Measurement customMeasurement = CustomMeasurementForm.CurrentItem as FitnessTrackerPlus.Web.Data.Measurement; // If user has selected an existing unit of measure create a new entry // in the measurements_measurement_units table if (selectedUnit != null) { context.MeasurementsUnits.Add(new MeasurementsUnits { unit_id = selectedUnit.id, measurement_id = customMeasurement.id }); context.SubmitChanges((MeasurementsUnitsSubmitted) => { if (!MeasurementsUnitsSubmitted.HasError) { if (CustomMeasurementCreated != null) { CustomMeasurementCreated(this, new CustomMeasurementCreatedEventArgs(customMeasurement)); } } }, null); } else { // Otherwise we also need to add an entry to the measurement_units table TextBox customUnit = CustomMeasurementForm.FindNameInContent("CustomUnit") as TextBox; context.MeasurementUnits.Add(new MeasurementUnit { unit = customUnit.Text, user_id = Globals.CurrentUser.id }); context.SubmitChanges((MeasurementUnitSubmitted) => { if (!MeasurementUnitSubmitted.HasError) { // Need to use the id of the newly created unit of measure MeasurementUnit createdUnit = MeasurementUnitSubmitted.ChangeSet.AddedEntities[0] as MeasurementUnit; context.MeasurementsUnits.Add(new MeasurementsUnits { unit_id = createdUnit.id, measurement_id = customMeasurement.id }); context.SubmitChanges((MeasurementsUnitsSubmitted) => { if (!MeasurementsUnitsSubmitted.HasError) { if (CustomMeasurementCreated != null) { CustomMeasurementCreated(this, new CustomMeasurementCreatedEventArgs(customMeasurement)); } } }, null); } }, null); } } }, null); } } }
public MeasurementLog() { InitializeComponent(); Loaded += (s, e) => { // Setup control event handlers Calendar.SelectedDate = Globals.SelectedDate; Calendar.SelectedDatesChanged += (se, ev) => { if (Calendar.SelectedDate.HasValue) { Globals.SelectedDate = Calendar.SelectedDate.Value; LoadCurrentImage(); } }; MeasurementLogGrid.LayoutUpdated += (se, ev) => { DataGridHelper.ResizeGrid(0, MeasurementLogGrid); }; MeasurementLogGrid.RowEditEnded += new EventHandler <DataGridRowEditEndedEventArgs>(MeasurementLogGrid_RowEditEnded); MeasurementLogGrid.LoadingRow += new EventHandler <DataGridRowEventArgs>(MeasurementLogGrid_LoadingRow); CustomMeasurement.Click += new RoutedEventHandler(CustomMeasurement_Click); UpdateImage.Click += new RoutedEventHandler(UpdateImage_Click); DeleteSelected.Click += new RoutedEventHandler(DeleteSelected_Click); // Hold onto a copy of the MeasurementContext contained in the XAML context = this.Resources["MeasurementContext"] as MeasurementContext; 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 the DomainDataSource control before the query is executed MeasurementData.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 control now that the MeasurementContext is available context.Load <FitnessTrackerPlus.Web.Data.Measurement>(context.GetMeasurementsQuery(Globals.CurrentUser.id), LoadBehavior.RefreshCurrent, (MeasurementsLoaded) => { if (!MeasurementsLoaded.HasError) { Measurements.ItemsSource = MeasurementsLoaded.Entities; Measurements.SelectedIndex = 0; } }, null); Measurements.SelectionChanged += (se, ev) => { FitnessTrackerPlus.Web.Data.Measurement selected = Measurements.SelectedItem as FitnessTrackerPlus.Web.Data.Measurement; if (selected.id > 0) { CreateMeasurementLogEntry(selected); } }; LoadCurrentImage(); }; }