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.HideFlyout(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()) { await modelHelpers.OpenFlyout(this); DataModel.RefreshLockedTimers(modelHelpers.Gallifrey.IdleTimerCollection.GetUnusedLockTimers()); } else { modelHelpers.CloseFlyout(this); modelHelpers.SetSelectedTimer(addFlyout.NewTimerId); } } else { await modelHelpers.OpenFlyout(this); } }
private async void SearchButton(object sender, RoutedEventArgs e) { modelHelpers.HideFlyout(this); var searchFlyout = new Search(modelHelpers, openFromEdit: true); await modelHelpers.OpenFlyout(searchFlyout); if (searchFlyout.SelectedJira != null) { DataModel.SetJiraReference(searchFlyout.SelectedJira.Reference); } await modelHelpers.OpenFlyout(this); }
private async void ChangeLogButton(object sender, RoutedEventArgs e) { modelHelpers.HideFlyout(this); var changeLog = modelHelpers.Gallifrey.GetChangeLog(XDocument.Parse(Properties.Resources.ChangeLog)).ToList(); if (changeLog.Any()) { await modelHelpers.OpenFlyout(new ChangeLog(changeLog)); } else { await DialogCoordinator.Instance.ShowMessageAsync(modelHelpers.DialogContext, "No Change Log", "There Is No Change Log To Show"); } await modelHelpers.OpenFlyout(this); }
private async void SetupContext(List <JiraTimer> timers, List <BulkExportModel> oldModels = null) { await Task.Delay(50); modelHelpers.HideFlyout(this); var timersToShow = new List <BulkExportModel>(); try { var jiraDownloadResult = await progressDialogHelper.Do(controller => GetTimers(timers), "Downloading Jira Work Logs To Ensure Accurate Export", true, true); switch (jiraDownloadResult.Status) { case ProgressResult.JiraHelperStatus.Cancelled: modelHelpers.CloseFlyout(this); return; case ProgressResult.JiraHelperStatus.Success: timersToShow = jiraDownloadResult.RetVal; break; } } catch (BulkExportException ex) { await modelHelpers.ShowMessageAsync("Unable To Locate Jira", ex.Message); modelHelpers.CloseFlyout(this); return; } if (!timersToShow.Any()) { await modelHelpers.ShowMessageAsync("Nothing To Export", "There Is No Time To Export"); modelHelpers.CloseFlyout(this); } else if (timersToShow.Count == 1) { modelHelpers.CloseFlyout(this); await modelHelpers.OpenFlyout(new Export(modelHelpers, timersToShow.First().Timer.UniqueId, null, true)); } else { var jiraComparer = new JiraReferenceComparer(); timersToShow.Sort((a, b) => { int cmp = b.ExportDate.Date.CompareTo(a.ExportDate.Date); if (cmp == 0) { cmp = jiraComparer.Compare(a.JiraRef, b.JiraRef); } return(cmp); }); timersToShow.ForEach(x => DataModel.BulkExports.Add(x)); if (oldModels != null) { foreach (var oldModel in oldModels) { foreach (var newModel in DataModel.BulkExports) { if (oldModel.JiraRef == newModel.JiraRef && oldModel.ExportDate.Date == newModel.ExportDate.Date) { newModel.ShouldExport = oldModel.ShouldExport; newModel.ToExportHours = oldModel.ToExportHours; newModel.ToExportMinutes = oldModel.ToExportMinutes; newModel.WorkLogStrategy = oldModel.WorkLogStrategy; newModel.RemainingHours = oldModel.RemainingHours; newModel.RemainingMinutes = oldModel.RemainingMinutes; newModel.Comment = oldModel.Comment; newModel.StandardComment = oldModel.StandardComment; newModel.ChangeStatus = oldModel.ChangeStatus; } } } } await modelHelpers.OpenFlyout(this); } }
private async void SetupContext(JiraTimer timerToShow, TimeSpan?exportTime, bool skipJiraCheck) { await Task.Delay(50); modelHelpers.HideFlyout(this); if (timerToShow.TempTimer) { await DialogCoordinator.Instance.ShowMessageAsync(modelHelpers.DialogContext, "Temp Timer", "You Cannot Export A Temporary Timer!"); modelHelpers.CloseHiddenFlyout(this); return; } DataContext = new ExportModel(timerToShow, exportTime, modelHelpers.Gallifrey.Settings.ExportSettings); if (!skipJiraCheck) { Issue jiraIssue = null; var requireRefresh = !timerToShow.LastJiraTimeCheck.HasValue || timerToShow.LastJiraTimeCheck < DateTime.UtcNow.AddMinutes(-15); var showError = false; try { var jiraDownloadResult = await progressDialogHelper.Do(() => modelHelpers.Gallifrey.JiraConnection.GetJiraIssue(timerToShow.JiraReference, requireRefresh), "Downloading Jira Work Logs To Ensure Accurate Export", true, false); switch (jiraDownloadResult.Status) { case ProgressResult.JiraHelperStatus.Cancelled: modelHelpers.CloseHiddenFlyout(this); return; case ProgressResult.JiraHelperStatus.Errored: showError = true; break; case ProgressResult.JiraHelperStatus.Success: jiraIssue = jiraDownloadResult.RetVal; break; } } catch (Exception) { showError = true; } if (showError) { await DialogCoordinator.Instance.ShowMessageAsync(modelHelpers.DialogContext, "Unable To Locate Jira", $"Unable To Locate Jira {timerToShow.JiraReference}!\nCannot Export Time\nPlease Verify/Correct Jira Reference"); modelHelpers.CloseHiddenFlyout(this); return; } if (requireRefresh) { modelHelpers.Gallifrey.JiraTimerCollection.RefreshFromJira(timerToShow.UniqueId, jiraIssue, modelHelpers.Gallifrey.JiraConnection.CurrentUser); timerToShow = modelHelpers.Gallifrey.JiraTimerCollection.GetTimer(timerToShow.UniqueId); } DataModel.UpdateTimer(timerToShow, jiraIssue); } if (timerToShow.FullyExported) { await DialogCoordinator.Instance.ShowMessageAsync(modelHelpers.DialogContext, "Nothing To Export", "There Is No Time To Export"); modelHelpers.CloseHiddenFlyout(this); return; } if (timerToShow.IsRunning) { await DialogCoordinator.Instance.ShowMessageAsync(modelHelpers.DialogContext, "Timer Is Running", "You Cannot Export A Timer While It Is Running"); modelHelpers.CloseHiddenFlyout(this); return; } await modelHelpers.OpenFlyout(this); }