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; } }