public async Task RunTasks(
            IJobContextMessage jobContextMessage,
            IReadOnlyList <ITaskItem> tasks,
            CancellationToken cancellationToken)
        {
            var wrapper         = new SupplementaryDataWrapper();
            var sourceFileModel = new SourceFileModel();

            if (tasks.SelectMany(t => t.Tasks).Contains(Constants.ValidationTask))
            {
                sourceFileModel = _fileHelper.GetSourceFileData(jobContextMessage);

                wrapper = await _fileValidationService.GetFile(sourceFileModel, cancellationToken);

                if (!wrapper.ValidErrorModels.Any())
                {
                    wrapper = _fileValidationService.RunFileValidators(sourceFileModel, wrapper);
                }

                if (wrapper.ValidErrorModels.Any())
                {
                    await _storageController.StoreValidationOnly(sourceFileModel, wrapper, cancellationToken);

                    await _reportingController.FileLevelErrorReport(wrapper, sourceFileModel, cancellationToken);

                    return;
                }
            }

            await _taskHelper.ExecuteTasks(tasks, sourceFileModel, wrapper, cancellationToken);
        }
        public async Task RunTasks(
            IEsfJobContext esfJobContext,
            CancellationToken cancellationToken)
        {
            var wrapper         = new SupplementaryDataWrapper();
            var sourceFileModel = _sourceFileModelBuilder.BuildDefault(esfJobContext);

            _periodHelper.CacheCurrentPeriod(esfJobContext);

            _excelFileService.ApplyLicense(Assembly.GetExecutingAssembly().GetManifestResourceStream(LicenseResource));

            if (esfJobContext.Tasks.Contains(Constants.ValidationTask))
            {
                sourceFileModel = _sourceFileModelBuilder.Build(esfJobContext);

                wrapper = await _fileValidationService.GetFile(esfJobContext, sourceFileModel, cancellationToken);

                if (!wrapper.ValidErrorModels.Any())
                {
                    await _validationErrorMessageService.PopulateErrorMessages(cancellationToken);

                    wrapper = await _fileValidationService.RunFileValidators(sourceFileModel, wrapper);
                }

                if (wrapper.ValidErrorModels.Any())
                {
                    await _storageController.StoreValidationOnly(sourceFileModel, wrapper, cancellationToken);

                    await _reportingController.FileLevelErrorReport(esfJobContext, wrapper, sourceFileModel, cancellationToken);

                    return;
                }
            }

            await _taskHelper.ExecuteTasks(esfJobContext, sourceFileModel, wrapper, cancellationToken);

            await _reportingController.ProduceReports(esfJobContext, wrapper, sourceFileModel, cancellationToken);
        }