async Task DoImportationAsynchronously(int ImportationId) { int fusionRecordsToImport = 0; int dcsRecordsToImport = 0; int fusionRecordsImported = 0; int dcsRecordsImported = 0; var UploadFilesFolder = Path.Combine(Directory.GetCurrentDirectory(), "UploadedFiles"); try { // FusionRequests table FilesPreprocessing.PreProcess(UploadFilesFolder); fusionRecordsToImport = FileSystem.GetNumberOfRecordsToImport(UploadFilesFolder, TableType.Fusion); dcsRecordsToImport = FileSystem.GetNumberOfRecordsToImport(UploadFilesFolder, TableType.DCS); DatabaseProcessing.UpdateImportation(connectionString, ImportationId, fusionRecordsToImport, dcsRecordsToImport, 0, 0, "Files preprocess completed", false); DatabaseProcessing.CreateTempTable(connectionString, TableType.Fusion); DatabaseProcessing.ImportDataToTempTable(databaseName, SQLserverInstance, UploadFilesFolder, TableType.Fusion, connectionString); fusionRecordsImported = DatabaseProcessing.PostProcess(connectionString, TableType.Fusion); DatabaseProcessing.UpdateImportation(connectionString, ImportationId, fusionRecordsToImport, dcsRecordsToImport, fusionRecordsImported, 0, "Finished processing Fusion records.", false); // DcsRequests table DatabaseProcessing.CreateTempTable(connectionString, TableType.DCS); DatabaseProcessing.ImportDataToTempTable(databaseName, SQLserverInstance, UploadFilesFolder, TableType.DCS, connectionString); dcsRecordsImported = DatabaseProcessing.PostProcess(connectionString, TableType.DCS); DatabaseProcessing.UpdateImportation(connectionString, ImportationId, fusionRecordsToImport, dcsRecordsToImport, fusionRecordsImported, dcsRecordsImported, "Finished importing data.", true); } catch (Exception ex) { logger.LogInformation("There was a problem with the data importation: " + ex.Message); try { DatabaseProcessing.UpdateImportation(connectionString, ImportationId, fusionRecordsToImport, dcsRecordsToImport, fusionRecordsImported, dcsRecordsImported, ex.Message, true); } catch { } } logger.LogInformation("Files uploaded ok"); }
public IActionResult Upload() { try { int ImportationId = DatabaseProcessing.InitializeImportation(connectionString); var files = Request.Form.Files; var UploadFilesFolder = Path.Combine(Directory.GetCurrentDirectory(), "UploadedFiles"); FileSystem.SaveFilesToDisk(files, UploadFilesFolder); Task.Run(() => DoImportationAsynchronously(ImportationId)); return(Ok()); } catch (BadRequestException ex) { logger.LogInformation("There was a problem with the data importation: " + ex.Message); return(BadRequest(ex.Message)); } catch (Exception ex) { return(StatusCode(500, "{\"error\": \"Internal server error:" + ex.Message + "\"}")); } }
public IActionResult UploadStatus() { return(Ok("{\"status\": \"" + DatabaseProcessing.GetImportationStatus(connectionString) + "\"}")); }