private async Task SetButtonStates(CancellationToken cancellationToken)
        {
            var period = await _periodService.ReturnPeriod(CollectionType, cancellationToken);

            var periodClosed = period.PeriodClosed;

            string stateString = await _periodEndService.GetPathItemStatesAsync(period.Year ?? 0, period.Period, CollectionType, cancellationToken);

            var state = _stateService.GetMainState(stateString);

            var startEnabled = periodClosed && !state.PeriodEndStarted && !state.PeriodEndFinished;

            if (PeriodEndState.CurrentAction != Constants.Action_UploadFileButton)
            {
                await _hubContext.Clients.All.SendAsync(Constants.Action_UploadFileButton, !state.PeriodEndFinished, cancellationToken);
            }

            if (PeriodEndState.CurrentAction != Constants.Action_StartPeriodEndButton)
            {
                await _hubContext.Clients.All.SendAsync(Constants.Action_StartPeriodEndButton, startEnabled, cancellationToken);
            }

            if (PeriodEndState.CurrentAction != Constants.Action_PeriodClosedButton)
            {
                var closeEnabled = periodClosed && !state.PeriodEndFinished && _stateService.AllJobsHaveCompleted(state);
                await _hubContext.Clients.All.SendAsync(Constants.Action_PeriodClosedButton, closeEnabled, cancellationToken);
            }
        }
Esempio n. 2
0
        public async Task <PeriodEndViewModel> GetPathState(int?collectionYear, int?period, CancellationToken cancellationToken)
        {
            var currentYearPeriod = await _periodService.ReturnPeriod(CollectionType, cancellationToken);

            currentYearPeriod.Year = currentYearPeriod.Year ?? 0;

            collectionYear = collectionYear ?? currentYearPeriod.Year.Value;
            period         = period ?? currentYearPeriod.Period;

            var pathItemStates = await GetPathItemStatesAsync(collectionYear, period, CollectionType, cancellationToken);

            var state = _stateService.GetMainState(pathItemStates);
            var lastItemJobsFinished = _stateService.AllJobsHaveCompleted(state);

            var files = await GetSubmissionsPerPeriodAsync(collectionYear.Value, period.Value, cancellationToken);

            var model = new PeriodEndViewModel
            {
                Period                = period.Value,
                Year                  = collectionYear.Value,
                Paths                 = state.Paths,
                PeriodEndStarted      = state.PeriodEndStarted,
                PeriodEndFinished     = state.PeriodEndFinished,
                ClosePeriodEndEnabled = lastItemJobsFinished,
                Files                 = files
            };

            var isCurrentPeriodSelected = currentYearPeriod.Year == model.Year && currentYearPeriod.Period == model.Period;

            model.IsCurrentPeriod  = isCurrentPeriodSelected;
            model.CollectionClosed = isCurrentPeriodSelected && currentYearPeriod.PeriodClosed;

            return(model);
        }
        private async Task <PeriodEndViewModel> ShowPath(int collectionYear, int period)
        {
            var pathItemStates = await _periodEndService.GetPathItemStatesAsync(collectionYear, period);

            var state = _stateService.GetMainState(pathItemStates);
            var lastItemJobsFinished = _stateService.AllJobsHaveCompleted(state);

            var pathModel = new PeriodEndViewModel
            {
                Period                   = period,
                Year                     = collectionYear,
                Paths                    = state.Paths,
                CollectionClosed         = state.CollectionClosed,
                PeriodEndStarted         = state.PeriodEndStarted,
                McaReportsReady          = state.McaReportsReady,
                McaReportsPublished      = state.McaReportsPublished,
                ProviderReportsReady     = state.ProviderReportsReady,
                ProviderReportsPublished = state.ProviderReportsPublished,
                PeriodEndFinished        = state.PeriodEndFinished,
                ReferenceDataJobsPaused  = state.ReferenceDataJobsPaused,
                ClosePeriodEndEnabled    = lastItemJobsFinished
            };

            return(pathModel);
        }