public ManageExcelUploadsAndEtlViewData(FirmaSession currentFirmaSession, ProjectFirmaModels.Models.FirmaPage firmaPage, string uploadFbmsSpreadSheetUrl, string uploadPnBudgetsSpreadSheetUrl, string doPublishingProcessingPostUrl, string uploadFbmsFormID, string uploadPnBudgetsFormID ) : base(currentFirmaSession, firmaPage) { PageTitle = $"Upload Budget and Invoice Data"; UploadFbmsSpreadSheetUrl = uploadFbmsSpreadSheetUrl; UploadFbmsFormID = uploadFbmsFormID; UploadPnBudgetsSpreadSheetUrl = uploadPnBudgetsSpreadSheetUrl; UploadPnBudgetsFormID = uploadPnBudgetsFormID; DoPublishingProcessingPostUrl = doPublishingProcessingPostUrl; LatestImportProcessingForFbms = ImpProcessing.GetLatestImportProcessingForGivenType(HttpRequestStorage.DatabaseEntities, ImpProcessingTableType.FBMS); LatestImportProcessingForPnBudget = ImpProcessing.GetLatestImportProcessingForGivenType(HttpRequestStorage.DatabaseEntities, ImpProcessingTableType.PNBudget); }
private ActionResult DoFbmsExcelImportForFileStream(Stream excelFileAsStream, string optionalOriginalFilename) { DateTime startTime = DateTime.Now; List <FbmsBudgetStageImportPayrecV3UnexpendedBalance> budgetStageImports; try { budgetStageImports = FbmsBudgetStageImportsHelper.LoadFbmsBudgetStageImportPayrecV3UnexpendedBalancesFromXlsFile(excelFileAsStream, FbmsExcelFileHeaderRowOffset); } catch (Exception ex) { return(Common_LoadFromXls_ExceptionHandler(excelFileAsStream, optionalOriginalFilename, ex)); } // GROOT LoadFbmsRecordsFromExcelFileObjectsIntoStagingTable(budgetStageImports, out var countAddedBudgets, this.CurrentFirmaSession); DateTime endTime = DateTime.Now; var elapsedTime = endTime - startTime; string importTimeString = GetTaskTimeString("Import", elapsedTime); // Record that we uploaded var newImpProcessingForFbms = new ImpProcessing(ImpProcessingTableType.FBMS); newImpProcessingForFbms.UploadDate = endTime; newImpProcessingForFbms.UploadPerson = this.CurrentFirmaSession.Person; newImpProcessingForFbms.UploadedFiscalYears = null; HttpRequestStorage.DatabaseEntities.ImpProcessings.Add(newImpProcessingForFbms); HttpRequestStorage.DatabaseEntities.SaveChanges(this.CurrentFirmaSession); ProjectTaxonomyLeafTest.CallAllTaxonomyLeavesForAllProjectsToCheckForCrashes(); SetMessageForDisplay($"{countAddedBudgets.ToGroupedNumeric()} FBMS records were successfully imported to database. </br>{importTimeString}."); // This is the right thing to return, since this starts off in a modal dialog return(new ModalDialogFormJsonResult()); }
public ActionResult DoPublishingProcessing(ManageExcelUploadsAndEtlViewModel viewModel) { if (!ModelState.IsValid) { throw new SitkaDisplayErrorException("Not expecting model state to be bad; not running publishing processing."); } bool wasErrorDuringProcessing = false; DateTime startTime = DateTime.Now; try { DoPublishingSql(Logger); //int blah = 2; //if (1 == blah-1) //{ // //throw new Exception("Fake exception to test ideas.."); //} // If we get this far, we've succeeded. // Log last import as successful. var processedDateTime = DateTime.Now; var latestImportProcessingForFbms = ImpProcessing.GetLatestImportProcessingForGivenType(HttpRequestStorage.DatabaseEntities, ImpProcessingTableType.FBMS); var latestImportProcessingForPnBudget = ImpProcessing.GetLatestImportProcessingForGivenType(HttpRequestStorage.DatabaseEntities, ImpProcessingTableType.PNBudget); if (latestImportProcessingForFbms == null || latestImportProcessingForPnBudget == null) { // We don't expect this to really happen once things are running smoothly, but in the short // term I want to know about it. SetErrorForDisplay($"Could not find processing records for last upload (ImpProcessing)"); } else { latestImportProcessingForFbms.LastProcessedDate = processedDateTime; latestImportProcessingForFbms.LastProcessedPerson = CurrentFirmaSession.Person; latestImportProcessingForPnBudget.LastProcessedDate = processedDateTime; latestImportProcessingForPnBudget.LastProcessedPerson = CurrentFirmaSession.Person; HttpRequestStorage.DatabaseEntities.SaveChanges(this.CurrentFirmaSession); } } catch (Exception e) { SetErrorForDisplay($"Problem executing Publishing: {e.Message}"); wasErrorDuringProcessing = true; } ProjectTaxonomyLeafTest.CallAllTaxonomyLeavesForAllProjectsToCheckForCrashes(); DateTime endTime = DateTime.Now; var elapsedTime = endTime - startTime; string processingTimeString = GetTaskTimeString("Publishing", elapsedTime); if (!wasErrorDuringProcessing) { SetMessageForDisplay($"Publishing Processing completed Successfully.<br/>{processingTimeString}"); } else { // Apparently at the moment we can only have one error/warning, so since I want TWO messages, resorting to // an error and a warning. SetWarningForDisplay($"Publishing Processing had problems.<br/>{processingTimeString}"); } return(RedirectToAction(new SitkaRoute <ExcelUploadController>(x => x.ManageExcelUploadsAndEtl()))); }