public async Task C10_ExcelNewPointImport() { var db = await Db.Context(); var pointCountBeforeImport = db.PointContents.Count(); var testFile = new FileInfo(Path.Combine(Directory.GetCurrentDirectory(), "TestMedia", "GrandCanyonPointsImport.xlsx")); Assert.True(testFile.Exists, "Test File Found"); var importResult = await ExcelContentImports.ImportFromFile(testFile.FullName, DebugTrackers.DebugProgressTracker()); Assert.False(importResult.HasError, "Unexpected Excel Import Failure"); var updateSaveResult = await ExcelContentImports.SaveAndGenerateHtmlFromExcelImport(importResult, DebugTrackers.DebugProgressTracker()); Assert.False(updateSaveResult.hasError); var pointCountAfterImport = db.PointContents.Count(); var excelFile = new XLWorkbook(testFile.FullName); var excelDataRowCount = excelFile.Worksheets.First().RangeUsed().RowCount() - 1; Assert.AreEqual(pointCountAfterImport, pointCountBeforeImport + excelDataRowCount); }
public async Task C12_ExcelNewPointImportValidationFailureTryingToImportSameSlugMultipleTimes() { var testFile = new FileInfo(Path.Combine(Directory.GetCurrentDirectory(), "TestMedia", "HermitsRestDuplicateSlugImport.xlsx")); Assert.True(testFile.Exists, "Test File Found"); var importResult = await ExcelContentImports.ImportFromFile(testFile.FullName, DebugTrackers.DebugProgressTracker()); Assert.True(importResult.HasError, "Expected a validation failure due to duplicate slug but not detected..."); }
public async Task C11_ExcelNewPointImportValidationFailureOnDuplicatingExistingSlug() { var testFile = new FileInfo(Path.Combine(Directory.GetCurrentDirectory(), "TestMedia", "GrandCanyonPointsImport.xlsx")); Assert.True(testFile.Exists, "Test File Found"); var importResult = await ExcelContentImports.ImportFromFile(testFile.FullName, DebugTrackers.DebugProgressTracker()); Assert.True(importResult.HasError, "Expected a validation failure due to duplicate slug but not detected..."); }
public async Task A22_PhotoExcelUpdate() { var db = await Db.Context(); var podPhoto = db.PhotoContents.Single(x => x.Title == IronwoodPhotoInfo.IronwoodPodContent01.Title); var treePhoto = db.PhotoContents.Single(x => x.Title == IronwoodPhotoInfo.IronwoodTreeContent01.Title); var items = new List <object> { podPhoto, treePhoto }; var excelFileExport = ExcelHelpers.ContentToExcelFileAsTable(items, "IronwoodTestExport01", false); var workbook = new XLWorkbook(excelFileExport.FullName); var worksheet = workbook.Worksheets.First(); var headerRow = worksheet.RangeUsed().Rows(1, 1); var contentIdSheetColumn = headerRow.Cells().First(x => x.Value.ToString() == "ContentId").WorksheetColumn() .ColumnNumber(); var slugSheetColumn = headerRow.Cells().First(x => x.Value.ToString() == "Slug").WorksheetColumn() .ColumnNumber(); var titleSheetColumn = headerRow.Cells().First(x => x.Value.ToString() == "Title").WorksheetColumn() .ColumnNumber(); var summarySheetColumn = headerRow.Cells().First(x => x.Value.ToString() == "Summary").WorksheetColumn() .ColumnNumber(); var tagsSheetColumn = headerRow.Cells().First(x => x.Value.ToString() == "Tags").WorksheetColumn() .ColumnNumber(); var updateNotesSheetColumn = headerRow.Cells().First(x => x.Value.ToString() == "UpdateNotes") .WorksheetColumn().ColumnNumber(); var updatedBySheetColumn = headerRow.Cells().First(x => x.Value.ToString() == "LastUpdatedBy") .WorksheetColumn().ColumnNumber(); var lensSheetColumn = headerRow.Cells().First(x => x.Value.ToString() == "Lens").WorksheetColumn() .ColumnNumber(); var cameraModelSheetColumn = headerRow.Cells().First(x => x.Value.ToString() == "CameraModel") .WorksheetColumn().ColumnNumber(); var idColumn = worksheet.Column(contentIdSheetColumn).Intersection(worksheet.RangeUsed()).AsRange(); var treeSheetPossibleRow = idColumn.Cells().FirstOrDefault(x => x.Value.ToString() == treePhoto.ContentId.ToString()); Assert.NotNull(treeSheetPossibleRow, "No Row found for the tree photo in the Excel Import?"); var treeSheetRow = treeSheetPossibleRow.WorksheetRow().RowNumber(); worksheet.Cell(treeSheetRow, slugSheetColumn).Value = IronwoodPhotoInfo.IronwoodTreeContent02_SlugTitleSummaryTagsUpdateNotesUpdatedBy.Slug; worksheet.Cell(treeSheetRow, titleSheetColumn).Value = IronwoodPhotoInfo .IronwoodTreeContent02_SlugTitleSummaryTagsUpdateNotesUpdatedBy.Title; worksheet.Cell(treeSheetRow, summarySheetColumn).Value = IronwoodPhotoInfo .IronwoodTreeContent02_SlugTitleSummaryTagsUpdateNotesUpdatedBy.Summary; worksheet.Cell(treeSheetRow, tagsSheetColumn).Value = IronwoodPhotoInfo.IronwoodTreeContent02_SlugTitleSummaryTagsUpdateNotesUpdatedBy.Tags; worksheet.Cell(treeSheetRow, updateNotesSheetColumn).Value = IronwoodPhotoInfo .IronwoodTreeContent02_SlugTitleSummaryTagsUpdateNotesUpdatedBy.UpdateNotes; worksheet.Cell(treeSheetRow, updatedBySheetColumn).Value = IronwoodPhotoInfo .IronwoodTreeContent02_SlugTitleSummaryTagsUpdateNotesUpdatedBy.LastUpdatedBy; var podSheetRow = idColumn.Cells().First(x => x.Value.ToString() == podPhoto.ContentId.ToString()) .WorksheetRow().RowNumber(); worksheet.Cell(podSheetRow, cameraModelSheetColumn).Value = IronwoodPhotoInfo.IronwoodPodContent02_CamerModelLensSummary.CameraModel; worksheet.Cell(podSheetRow, lensSheetColumn).Value = IronwoodPhotoInfo.IronwoodPodContent02_CamerModelLensSummary.Lens; worksheet.Cell(podSheetRow, summarySheetColumn).Value = IronwoodPhotoInfo.IronwoodPodContent02_CamerModelLensSummary.Summary; worksheet.Cell(podSheetRow, updatedBySheetColumn).Value = IronwoodPhotoInfo.IronwoodPodContent02_CamerModelLensSummary.LastUpdatedBy; workbook.Save(); var importResult = await ExcelContentImports.ImportFromFile(excelFileExport.FullName, DebugTrackers.DebugProgressTracker()); Assert.False(importResult.HasError, "Unexpected Excel Import Failure"); Assert.AreEqual(2, importResult.ToUpdate.Count, "Unexpected number of rows to update"); var updateSaveResult = await ExcelContentImports.SaveAndGenerateHtmlFromExcelImport(importResult, DebugTrackers.DebugProgressTracker()); Assert.False(updateSaveResult.hasError); var updatedPodPhoto = db.PhotoContents.Single(x => x.Title == IronwoodPhotoInfo.IronwoodPodContent02_CamerModelLensSummary.Title); var updatedTreePhoto = db.PhotoContents.Single(x => x.Title == IronwoodPhotoInfo.IronwoodTreeContent02_SlugTitleSummaryTagsUpdateNotesUpdatedBy.Title); var podReference = IronwoodPhotoInfo.IronwoodPodContent02_CamerModelLensSummary; podReference.LastUpdatedOn = updatedPodPhoto.LastUpdatedOn; var updatedPodComparison = IronwoodPhotoInfo.CompareContent(podReference, updatedPodPhoto); Assert.True(updatedPodComparison.areEqual, $"Excel Pod Picture Update Issues: {updatedPodComparison.comparisonNotes}"); var treeReference = IronwoodPhotoInfo.IronwoodTreeContent02_SlugTitleSummaryTagsUpdateNotesUpdatedBy; treeReference.LastUpdatedOn = updatedTreePhoto.LastUpdatedOn; var updatedTreeComparison = IronwoodPhotoInfo.CompareContent(treeReference, updatedTreePhoto); Assert.True(updatedTreeComparison.areEqual, $"Excel Tree Picture Update Issues: {updatedPodComparison.comparisonNotes}"); }
public static async Task ImportFromExcel(StatusControlContext statusContext) { await ThreadSwitcher.ThreadSwitcher.ResumeBackgroundAsync(); statusContext.Progress("Starting excel load."); var dialog = new VistaOpenFileDialog(); if (!(dialog.ShowDialog() ?? false)) { return; } var newFile = new FileInfo(dialog.FileName); if (!newFile.Exists) { statusContext.ToastError("File doesn't exist?"); return; } ExcelContentImports.ExcelContentTableImportResults contentTableImportResult; try { contentTableImportResult = await ExcelContentImports.ImportFromFile(newFile.FullName, statusContext.ProgressTracker()); } catch (Exception e) { await statusContext.ShowMessageWithOkButton("Import File Errors", $"Import Stopped because of an error processing the file:{Environment.NewLine}{e.Message}"); return; } if (contentTableImportResult.HasError) { await statusContext.ShowMessageWithOkButton("Import Errors", $"Import Stopped because errors were reported:{Environment.NewLine}{contentTableImportResult.ErrorNotes}"); return; } var shouldContinue = await statusContext.ShowMessage("Confirm Import", $"Continue?{Environment.NewLine}{Environment.NewLine}{contentTableImportResult.ToUpdate.Count} updates from {newFile.FullName} {Environment.NewLine}" + $"{string.Join(Environment.NewLine, contentTableImportResult.ToUpdate.Select(x => $"{Environment.NewLine}{x.Title}{Environment.NewLine}{x.DifferenceNotes}"))}", new List <string> { "Yes", "No" }); if (shouldContinue == "No") { return; } var saveResult = await ExcelContentImports.SaveAndGenerateHtmlFromExcelImport(contentTableImportResult, statusContext.ProgressTracker()); if (saveResult.hasError) { await statusContext.ShowMessageWithOkButton("Excel Import Save Errors", $"There were error saving changes from the Excel Content:{Environment.NewLine}{saveResult.errorMessage}"); return; } statusContext.ToastSuccess( $"Imported {contentTableImportResult.ToUpdate.Count} items with changes from {newFile.FullName}"); }