示例#1
0
        public async Task LoadDataFromStaging(DateTime importAuditStartTime, string filePath)
        {
            try
            {
                _logger.LogInformation("LARS Import - data load from staging - started");

                var larsStandardImports = _larsStandardImportRepository.GetAll();

                var sectorSubjectAreaTier2Imports = _sectorSubjectAreaTier2ImportRepository.GetAll();

                await Task.WhenAll(larsStandardImports, sectorSubjectAreaTier2Imports);

                _larsStandardRepository.DeleteAll();

                _sectorSubjectAreaTier2Repository.DeleteAll();

                var importLarsStandardTask =
                    _larsStandardRepository.InsertMany(larsStandardImports.Result
                                                       .Select(c => (LarsStandard)c).ToList());
                var importSectorSubjectAreaTier2Task =
                    _sectorSubjectAreaTier2Repository.InsertMany(sectorSubjectAreaTier2Imports.Result
                                                                 .Select(c => (SectorSubjectAreaTier2)c).ToList());

                var importApprenticeshipFundingTask = LoadApprenticeshipFunding();

                await Task.WhenAll(importLarsStandardTask, importApprenticeshipFundingTask, importSectorSubjectAreaTier2Task);

                var rowsImported = larsStandardImports.Result.Count() +
                                   importApprenticeshipFundingTask.Result +
                                   sectorSubjectAreaTier2Imports.Result.Count();

                await _importAuditRepository.Insert(new ImportAudit(importAuditStartTime,
                                                                    rowsImported, ImportType.LarsImport, filePath));

                _logger.LogInformation("LARS Import - data load from staging - finished");
            }
            catch (Exception e)
            {
                _logger.LogError("LARS Import - an error occurred while trying to load data from staging tables.", e);
                throw;
            }
        }