public async Task ExecuteAsync(IDesktopReferenceDataContext context, CancellationToken cancellationToken)
        {
            try
            {
                // get reference data and build model.
                _logger.LogInfo("Starting Reference Data Population");
                var referenceData = await _referenceDataPopulationService.PopulateAsync(cancellationToken);

                _logger.LogInfo("Finished Reference Data Population");

                // output model.
                _logger.LogInfo("Starting Reference Data Output");
                await _desktopReferenceDataFileService.ProcessAsync(context, referenceData, cancellationToken);

                _logger.LogInfo("Finished Reference Data Output");

                // output summary.
                _logger.LogInfo("Starting Reference Summary Output");
                await _desktopReferenceDataSummaryFileService.ProcessAync(context, cancellationToken);

                _logger.LogInfo("Finished Reference Summary Output");
            }
            catch (Exception exception)
            {
                _logger.LogError("Reference Data Service Output Exception", exception);
                throw;
            }
        }
        public async Task ProcessAync(IDesktopReferenceDataContext context, CancellationToken cancellationToken)
        {
            _logger.LogInfo("Generating Reference Data Report Summary");

            var ukDateTime = _dateTimeProvider.ConvertUtcToUk(context.SubmissionDateTimeUTC);

            var filePath = BuildFilePath(context);
            var fileName = FileNameBuilder(context.CollectionName, filePath, ukDateTime);

            var statistics = _referenceDataStatisticsService.GetStatistics();
            await _csvFileService.WriteAsync <ReferenceDataSummaryStatistics, ReferenceDataSummaryFileMapper>(statistics, fileName, context.Container, cancellationToken);
        }
        public async Task ProcessAsync(IDesktopReferenceDataContext context, DesktopReferenceDataRoot desktopReferenceDataRoot, CancellationToken cancellationToken)
        {
            _logger.LogInfo("Generating Desktop Reference Data File.");

            var filePath = BuildFilePath(context);
            var fileName = _desktopReferenceDataFileNameService.BuildFileName(filePath, _desktopRefDataConfig.DesktopReferenceDataFilePreFix, context.VersionNumber);
            await _zipFileService.SaveCollectionZipAsync(
                fileName,
                context.Container,
                desktopReferenceDataRoot.MetaDatas,
                desktopReferenceDataRoot.DevolvedPostcodes,
                desktopReferenceDataRoot.Employers,
                desktopReferenceDataRoot.EPAOrganisations,
                desktopReferenceDataRoot.LARSFrameworks,
                desktopReferenceDataRoot.LARSFrameworkAims,
                desktopReferenceDataRoot.LARSLearningDeliveries,
                desktopReferenceDataRoot.LARSStandards,
                desktopReferenceDataRoot.Organisations,
                desktopReferenceDataRoot.Postcodes,
                cancellationToken);
        }
 private string BuildFilePath(IDesktopReferenceDataContext context)
 {
     return($@"{context.CollectionName}\{context.JobId}");
 }