コード例 #1
0
        public async Task SubmitForm()
        {
            InvalidHours     = false;
            ExceptionMessage = "";
            try
            {
                Entity.Hours = DateTimeHelpers.GetHoursFromString(WorkedDateHelper, true);
                try
                {
                    Entity.ProviderType   = CodeHubMode ? StaticWorkProviderTypes.CodeHub : SelectedTask.ProviderType;
                    Entity.OrganizationId = CodeHubMode ? SelectedOrganization.Id : SelectedTask.OrganizationId;
                    Entity.TaskId         = CodeHubMode ? 0 : SelectedTask.Id; // TODO CodeHub Tasks
                    Entity = await WorkLogsService.CreateOrEditWorkLog(Entity);

                    Done();
                }
                catch (Exception e)
                {
                    ExceptionMessage = e.Message;
                }
            }
            catch
            {
                InvalidHours = true;
                Entity.Hours = 0;
            }

            StateHasChanged();
        }
コード例 #2
0
        public async Task BuildTree()
        {
            TreeNodes = new List <CodeHubWorkItemTree>();

            var features = WorkItems.Select(s => s.Parent).Distinct().ToList();

            foreach (var feature in features.OrderBy(s => s.ProviderOrganization).ThenBy(s => s.Project).ThenBy(s => s.Parent.Id))
            {
                var childIds = WorkItems.Where(s => s.Parent.Id == feature.Id).Select(s => (long)s.Id).ToList();
                childIds.Add(feature.Id);
                var hoursWorked = await WorkLogsService.GetHoursWorked(childIds);

                var featureNode = new CodeHubWorkItemTree
                {
                    Children             = new List <CodeHubWorkItemTree>(),
                    Id                   = feature.Id,
                    Title                = feature.Title,
                    ProviderOrganization = feature.ProviderOrganization,
                    Project              = feature.Project,
                    NodeLevel            = feature.WorkItemType,
                    ChildCount           = childIds.Count(),
                    Parent               = feature.Parent,
                    HoursWorked          = hoursWorked
                };

                TreeNodes.Add(featureNode);
            }

            StateHasChanged();
        }
コード例 #3
0
        public async Task LoadWorkLog(int id)
        {
            DisableCodeHubMode();

            var found = await WorkLogsService.GetWorkLogForEdit(id);

            if (found.TaskId > 0 && found.ProviderType == StaticWorkProviderTypes.DevOps || found.ProviderType == StaticWorkProviderTypes.Zammad)
            {
                SelectedTask = WorkItems.FirstOrDefault(s => s.Id == found.TaskId);
            }
            else if (found.Id > 0 && found.ProviderType == StaticWorkProviderTypes.CodeHub)
            {
                await EnableCodeHubMode();

                if (found.Epic != null)
                {
                    await OrganizationChanged(found.Epic.Project.OrganizationId);

                    ProjectChanged(found.Epic.ProjectId);
                }
            }

            Entity           = found;
            WorkedDateHelper = DateTimeHelpers.GetFormattedTime(Entity.Hours);

            StateHasChanged();
        }
コード例 #4
0
        private async Task PreLoadWorkItems()
        {
            var items = await WorkLogsService.GetAllAvailableWorkItemsFromWorkProviders(false);

            WorkItems = items.WorkItems;
            RefreshingFromProviders = false;
        }
コード例 #5
0
        private async Task FixDevOpsIds()
        {
            if (ProcessingDevOpsFix)
            {
                return;
            }
            ProcessingDevOpsFix = true;
            var message = await WorkLogsService.FixDevOpsIds();

            ToastService.ShowToast(message, ToastLevel.Info);
            ProcessingDevOpsFix = false;
        }
コード例 #6
0
        private async Task RefreshFromProviders()
        {
            if (RefreshingFromProviders)
            {
                return;
            }
            RefreshingFromProviders = true;
            var loadedItems = await WorkLogsService.GetAllAvailableWorkItemsFromWorkProviders(true);

            WorkItems = loadedItems.WorkItems;
            RefreshingFromProviders = false;
        }
コード例 #7
0
        private async void DeleteInternal(ModalResult modalResult)
        {
            if (!modalResult.Cancelled)
            {
                await WorkLogsService.DeleteWorkLog((int)modalResult.Data);
                await RefreshWorkLogs();

                StateHasChanged();
            }

            Modal.OnClose -= DeleteInternal;
        }
コード例 #8
0
        public async Task RefreshWorkLogs()
        {
            WorkLogs = await WorkLogsService.GetWorkLogs(WorkLogsInput);

            TotalTime      = DateTimeHelpers.GetFormattedTime(WorkLogs.Sum(s => s.Hours));
            TotalTimeMonth = DateTimeHelpers.GetFormattedTime(GetWorkLogsFromPeriod(WorkLogs, TimePeriodEnum.Month).Sum(s => s.Hours));
            TotalTimeWeek  = DateTimeHelpers.GetFormattedTime(GetWorkLogsFromPeriod(WorkLogs, TimePeriodEnum.Week).Sum(s => s.Hours));
            TotalTimeDay   = DateTimeHelpers.GetFormattedTime(GetWorkLogsFromPeriod(WorkLogs, TimePeriodEnum.Day).Sum(s => s.Hours));
            StateHasChanged();

            await PreLoadWorkItems();
        }