/// <summary> /// Select a new DueDate for the WorkItem. /// If the DueDate (from database) has been set within x mins of now, UPDATE the record instead of INSERTING it. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void DueDateButton_Click(object sender, RoutedEventArgs e) { if (_model.SelectedWorkItem != null) { WorkItem selectedWI = _model.SelectedWorkItem; DateTime currentDueDate = selectedWI.DueDate; var ddDialog = new DueDateDialog(currentDueDate); ddDialog.Owner = this; ddDialog.ShowDialog(); if (ddDialog.WasDialogSubmitted) { if (ddDialog.NewDateTime.Equals(currentDueDate)) { // Do nothing } else { int rowID = -1; // If the DueDate (from database) has been set within x mins of now, UPDATE the record instead of INSERTING it. int minutesSinceLastSet = DateTime.Now.Subtract(selectedWI.Meta.DueDateUpdateDateTime).Minutes; if (minutesSinceLastSet < Convert.ToInt32(_controller.GetMWTModel().GetAppPreferenceValue(PreferenceName.DUE_DATE_SET_WINDOW_MINUTES))) { // Update rowID = _controller.UpdateDBDueDate(selectedWI, ddDialog.NewDateTime, ddDialog.ChangeReason); } else { // Insert rowID = _controller.InsertDBDueDate(selectedWI, ddDialog.NewDateTime, ddDialog.ChangeReason); } // Update the update/record change time. selectedWI.Meta.DueDate_ID = rowID; selectedWI.Meta.DueDateUpdateDateTime = DateTime.Now; selectedWI.DueDate = ddDialog.NewDateTime; selectedWI.Meta.DueDateUpdateDateTime = DateTime.Now; // Refresh the time label DueInDaysTextField.Text = DateMethods.GenerateDateDifferenceLabel(DateTime.Now, _model.SelectedWorkItem.DueDate, true); } } } }