private async void AddTimer(object sender, RoutedEventArgs e) { if (DataModel.SelectedSearchResult == null) { await DialogCoordinator.Instance.ShowMessageAsync(modelHelpers.DialogContext, "No Selected Item", "You Need To Select An Item To Add A Timer For It"); Focus(); return; } modelHelpers.CloseFlyout(this); if (openFromAdd || openFromEdit) { SelectedJira = DataModel.SelectedSearchResult; } else { var addFlyout = new AddTimer(modelHelpers, DataModel.SelectedSearchResult.Reference, selectedDateTab); await modelHelpers.OpenFlyout(addFlyout); if (addFlyout.AddedTimer) { modelHelpers.SetSelectedTimer(addFlyout.NewTimerId); } else { await modelHelpers.OpenFlyout(this); } } }
private async void ShowAddTimer(string preLoadJiraRef = null) { var selected = DataModel.LockedTimers.Where(x => x.IsSelected).ToList(); var selectedTimers = selected.Select(x => modelHelpers.Gallifrey.IdleTimerCollection.GetTimer(x.UniqueId)).Where(x => x != null).ToList(); var lockedTimerDate = selected.First().DateForTimer; modelHelpers.CloseFlyout(this); var addFlyout = new AddTimer(modelHelpers, startDate: lockedTimerDate, enableDateChange: false, idleTimers: selectedTimers, jiraRef: preLoadJiraRef); await modelHelpers.OpenFlyout(addFlyout); if (addFlyout.AddedTimer) { foreach (var lockedTimerModel in selected) { modelHelpers.Gallifrey.IdleTimerCollection.RemoveTimer(lockedTimerModel.UniqueId); } if (modelHelpers.Gallifrey.IdleTimerCollection.GetUnusedLockTimers().Any()) { modelHelpers.OpenFlyout(this); DataModel.RefreshLockedTimers(modelHelpers.Gallifrey.IdleTimerCollection.GetUnusedLockTimers()); } else { modelHelpers.SetSelectedTimer(addFlyout.NewTimerId); } } else { modelHelpers.OpenFlyout(this); } }
private void SelectRunningTimer() { var runningTimer = ModelHelpers.Gallifrey.JiraTimerCollection.GetRunningTimerId(); if (runningTimer.HasValue) { ModelHelpers.SetSelectedTimer(runningTimer.Value); } else { var dates = ModelHelpers.Gallifrey.JiraTimerCollection.GetValidTimerDates().ToList(); if (dates.Any()) { var date = dates.Max(); var topTimer = ModelHelpers.Gallifrey.JiraTimerCollection.GetTimersForADate(date).OrderBy(x => x.JiraReference, new JiraReferenceComparer()).FirstOrDefault(); if (topTimer != null) { SetSelectedTimer(topTimer.UniqueId); } } } }
private async void SaveButton(object sender, RoutedEventArgs e) { if (DataModel.HasModifiedRunDate) { if (!DataModel.RunDate.HasValue) { await DialogCoordinator.Instance.ShowMessageAsync(modelHelpers.DialogContext, "Missing Date", "You Must Enter A Start Date"); Focus(); return; } if (DataModel.RunDate.Value < DataModel.MinDate || DataModel.RunDate.Value > DataModel.MaxDate) { await DialogCoordinator.Instance.ShowMessageAsync(modelHelpers.DialogContext, "Invalid Date", $"You Must Enter A Start Date Between {DataModel.MinDate.ToShortDateString()} And {DataModel.MaxDate.ToShortDateString()}"); Focus(); return; } try { EditedTimerId = modelHelpers.Gallifrey.JiraTimerCollection.ChangeTimerDate(EditedTimerId, DataModel.RunDate.Value); } catch (DuplicateTimerException ex) { var handlerd = await MergeTimers(ex); if (!handlerd) { Focus(); return; } } } else if (DataModel.HasModifiedJiraReference) { if (DataModel.TempTimer) { modelHelpers.Gallifrey.JiraTimerCollection.ChangeTempTimerDescription(EditedTimerId, DataModel.TempTimerDescription); } else { Issue jiraIssue; try { jiraIssue = modelHelpers.Gallifrey.JiraConnection.GetJiraIssue(DataModel.JiraReference); } catch (NoResultsFoundException) { await DialogCoordinator.Instance.ShowMessageAsync(modelHelpers.DialogContext, "Invalid Jira", "Unable To Locate The Jira"); Focus(); return; } var result = await DialogCoordinator.Instance.ShowMessageAsync(modelHelpers.DialogContext, "Correct Jira?", $"Jira found!\n\nRef: {jiraIssue.key}\nName: {jiraIssue.fields.summary}\n\nIs that correct?", MessageDialogStyle.AffirmativeAndNegative, new MetroDialogSettings { AffirmativeButtonText = "Yes", NegativeButtonText = "No", DefaultButtonFocus = MessageDialogResult.Affirmative }); if (result == MessageDialogResult.Negative) { return; } try { EditedTimerId = modelHelpers.Gallifrey.JiraTimerCollection.RenameTimer(EditedTimerId, jiraIssue); } catch (DuplicateTimerException ex) { var handlerd = await MergeTimers(ex); if (!handlerd) { Focus(); return; } } } } if (DataModel.HasModifiedTime) { var originalTime = new TimeSpan(DataModel.OriginalHours, DataModel.OriginalMinutes, 0); var newTime = new TimeSpan(DataModel.Hours, DataModel.Minutes, 0); var difference = newTime.Subtract(originalTime); var addTime = difference.TotalSeconds > 0; modelHelpers.Gallifrey.JiraTimerCollection.AdjustTime(EditedTimerId, Math.Abs(difference.Hours), Math.Abs(difference.Minutes), addTime); } modelHelpers.RefreshModel(); modelHelpers.SetSelectedTimer(EditedTimerId); modelHelpers.CloseFlyout(this); }
private async void SaveButton(object sender, RoutedEventArgs e) { if (DataModel.HasModifiedRunDate) { if (!DataModel.RunDate.HasValue) { await modelHelpers.ShowMessageAsync("Missing Date", "You Must Enter A Start Date"); Focus(); return; } if (DataModel.RunDate.Value.Date < DataModel.MinDate.Date || DataModel.RunDate.Value.Date > DataModel.MaxDate.Date) { await modelHelpers.ShowMessageAsync("Invalid Date", $"You Must Enter A Start Date Between {DataModel.MinDate.ToShortDateString()} And {DataModel.MaxDate.ToShortDateString()}"); Focus(); return; } try { EditedTimerId = modelHelpers.Gallifrey.JiraTimerCollection.ChangeTimerDate(EditedTimerId, DataModel.RunDate.Value); } catch (DuplicateTimerException ex) { var handled = await MergeTimers(ex); if (!handled) { Focus(); return; } } } else if (DataModel.HasModifiedJiraReference) { if (DataModel.LocalTimer) { try { EditedTimerId = modelHelpers.Gallifrey.JiraTimerCollection.ChangeLocalTimerDescription(EditedTimerId, DataModel.LocalTimerDescription); } catch (DuplicateTimerException) { await modelHelpers.ShowMessageAsync("Something Went Wrong", "An Error Occured Trying To Edit That Timer, Please Try Again"); Focus(); return; } } else { Issue jiraIssue = null; var jiraRef = DataModel.JiraReference; void GetIssue() { if (modelHelpers.Gallifrey.JiraConnection.DoesJiraExist(jiraRef)) { jiraIssue = modelHelpers.Gallifrey.JiraConnection.GetJiraIssue(jiraRef); } } var jiraDownloadResult = await progressDialogHelper.Do(GetIssue, "Searching For Jira Issue", true, false); if (jiraDownloadResult.Status == ProgressResult.JiraHelperStatus.Cancelled) { Focus(); return; } if (jiraIssue == null) { await modelHelpers.ShowMessageAsync("Invalid Jira", $"Unable To Locate The Jira '{jiraRef}'"); Focus(); return; } var result = await modelHelpers.ShowMessageAsync("Correct Jira?", $"Jira found!\n\nRef: {jiraIssue.key}\nName: {jiraIssue.fields.summary}\n\nIs that correct?", MessageDialogStyle.AffirmativeAndNegative, new MetroDialogSettings { AffirmativeButtonText = "Yes", NegativeButtonText = "No", DefaultButtonFocus = MessageDialogResult.Affirmative }); if (result == MessageDialogResult.Negative) { return; } try { EditedTimerId = modelHelpers.Gallifrey.JiraTimerCollection.RenameTimer(EditedTimerId, jiraIssue); } catch (DuplicateTimerException ex) { var handled = await MergeTimers(ex); if (!handled) { Focus(); return; } } } } if (DataModel.HasModifiedTime) { var originalTime = new TimeSpan(DataModel.OriginalHours, DataModel.OriginalMinutes, 0); var newTime = new TimeSpan(DataModel.Hours ?? 0, DataModel.Minutes ?? 0, 0); var difference = newTime.Subtract(originalTime); var addTime = difference.TotalSeconds > 0; modelHelpers.Gallifrey.JiraTimerCollection.AdjustTime(EditedTimerId, Math.Abs(difference.Hours), Math.Abs(difference.Minutes), addTime); } modelHelpers.RefreshModel(); modelHelpers.SetSelectedTimer(EditedTimerId); modelHelpers.CloseFlyout(this); }
private async void SaveButton(object sender, RoutedEventArgs e) { if (DataModel.HasModifiedRunDate) { if (!DataModel.RunDate.HasValue) { await DialogCoordinator.Instance.ShowMessageAsync(modelHelpers.DialogContext, "Missing Date", "You Must Enter A Start Date"); Focus(); return; } if (DataModel.RunDate.Value.Date < DataModel.MinDate.Date || DataModel.RunDate.Value.Date > DataModel.MaxDate.Date) { await DialogCoordinator.Instance.ShowMessageAsync(modelHelpers.DialogContext, "Invalid Date", $"You Must Enter A Start Date Between {DataModel.MinDate.ToShortDateString()} And {DataModel.MaxDate.ToShortDateString()}"); Focus(); return; } try { EditedTimerId = modelHelpers.Gallifrey.JiraTimerCollection.ChangeTimerDate(EditedTimerId, DataModel.RunDate.Value); } catch (DuplicateTimerException ex) { var handlerd = await MergeTimers(ex); if (!handlerd) { Focus(); return; } } } else if (DataModel.HasModifiedJiraReference) { if (DataModel.LocalTimer) { var currentTimer = modelHelpers.Gallifrey.JiraTimerCollection.GetTimer(EditedTimerId); if (!currentTimer.LocalTimer) { if (!modelHelpers.Gallifrey.Settings.InternalSettings.IsPremium) { var localTimersCount = modelHelpers.Gallifrey.JiraTimerCollection.GetAllLocalTimers().Count(); if (localTimersCount >= 2) { modelHelpers.ShowGetPremiumMessage("Without Gallifrey Premium You Are Limited To A Maximum Of 2 Local Timers"); Focus(); return; } } } try { EditedTimerId = modelHelpers.Gallifrey.JiraTimerCollection.ChangeLocalTimerDescription(EditedTimerId, DataModel.LocalTimerDescription); } catch (DuplicateTimerException) { await DialogCoordinator.Instance.ShowMessageAsync(modelHelpers.DialogContext, "Something Went Wrong", "An Error Occured Trying To Edit That Timer, Please Try Again"); Focus(); return; } } else { Issue jiraIssue; var jiraRef = string.Empty; try { jiraRef = DataModel.JiraReference; var jiraDownloadResult = await progressDialogHelper.Do(() => modelHelpers.Gallifrey.JiraConnection.GetJiraIssue(jiraRef), "Searching For Jira Issue", true, true); if (jiraDownloadResult.Status == ProgressResult.JiraHelperStatus.Success) { jiraIssue = jiraDownloadResult.RetVal; } else { Focus(); return; } } catch (NoResultsFoundException) { await DialogCoordinator.Instance.ShowMessageAsync(modelHelpers.DialogContext, "Invalid Jira", $"Unable To Locate The Jira '{jiraRef}'"); Focus(); return; } var result = await DialogCoordinator.Instance.ShowMessageAsync(modelHelpers.DialogContext, "Correct Jira?", $"Jira found!\n\nRef: {jiraIssue.key}\nName: {jiraIssue.fields.summary}\n\nIs that correct?", MessageDialogStyle.AffirmativeAndNegative, new MetroDialogSettings { AffirmativeButtonText = "Yes", NegativeButtonText = "No", DefaultButtonFocus = MessageDialogResult.Affirmative }); if (result == MessageDialogResult.Negative) { return; } try { EditedTimerId = modelHelpers.Gallifrey.JiraTimerCollection.RenameTimer(EditedTimerId, jiraIssue); } catch (DuplicateTimerException ex) { var handlerd = await MergeTimers(ex); if (!handlerd) { Focus(); return; } } } } if (DataModel.HasModifiedTime) { var originalTime = new TimeSpan(DataModel.OriginalHours, DataModel.OriginalMinutes, 0); var newTime = new TimeSpan(DataModel.Hours ?? 0, DataModel.Minutes ?? 0, 0); var difference = newTime.Subtract(originalTime); var addTime = difference.TotalSeconds > 0; modelHelpers.Gallifrey.JiraTimerCollection.AdjustTime(EditedTimerId, Math.Abs(difference.Hours), Math.Abs(difference.Minutes), addTime); } modelHelpers.RefreshModel(); modelHelpers.SetSelectedTimer(EditedTimerId); modelHelpers.CloseFlyout(this); }