Ejemplo n.º 1
0
        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);
            }
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
        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);
            }
        }
Ejemplo n.º 5
0
        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);
        }