diff --git a/ComputerStoreBusinessLogic/BusinessLogic/EmployeeReportLogic.cs b/ComputerStoreBusinessLogic/BusinessLogic/EmployeeReportLogic.cs index 75d68c4..b0368a0 100644 --- a/ComputerStoreBusinessLogic/BusinessLogic/EmployeeReportLogic.cs +++ b/ComputerStoreBusinessLogic/BusinessLogic/EmployeeReportLogic.cs @@ -146,9 +146,9 @@ namespace ComputerStoreBusinessLogic.BusinessLogic }); } - public void SaveConsignmentsToExcelFile(ReportComponentsBindingModel model) + public byte[] SaveConsignmentsToExcelFile(ReportComponentsBindingModel model) { - _saveToExcel.CreateReport(new ExcelInfo + return _saveToExcel.CreateReport(new ExcelInfo { FileName = model.FileName, Title = "Consignments list", @@ -156,9 +156,9 @@ namespace ComputerStoreBusinessLogic.BusinessLogic }); } - public void SaveConsignmentsToWordFile(ReportComponentsBindingModel model) + public byte[] SaveConsignmentsToWordFile(ReportComponentsBindingModel model) { - _saveToWord.CreateDoc(new WordInfo + return _saveToWord.CreateDoc(new WordInfo { FileName = model.FileName, Title = "Consignments list", diff --git a/ComputerStoreBusinessLogic/OfficePackage/AbstractSaveToExcel.cs b/ComputerStoreBusinessLogic/OfficePackage/AbstractSaveToExcel.cs index e69d168..cb7acd1 100644 --- a/ComputerStoreBusinessLogic/OfficePackage/AbstractSaveToExcel.cs +++ b/ComputerStoreBusinessLogic/OfficePackage/AbstractSaveToExcel.cs @@ -10,8 +10,9 @@ namespace ComputerStoreBusinessLogic.OfficePackage { public abstract class AbstractSaveToExcel { - public void CreateReport(ExcelInfo info) + public byte[] CreateReport(ExcelInfo info) { + CreateExcel(info); InsertCellInWorksheet(new ExcelCellParameters { @@ -70,7 +71,9 @@ namespace ComputerStoreBusinessLogic.OfficePackage }); rowIndex++; } - SaveExcel(info); + return SaveExcel(info); + + } protected abstract void CreateExcel(ExcelInfo info); @@ -79,6 +82,6 @@ namespace ComputerStoreBusinessLogic.OfficePackage protected abstract void MergeCells(ExcelMergeParameters excelParams); - protected abstract void SaveExcel(ExcelInfo info); + protected abstract byte[] SaveExcel(ExcelInfo info); } } diff --git a/ComputerStoreBusinessLogic/OfficePackage/AbstractSaveToWord.cs b/ComputerStoreBusinessLogic/OfficePackage/AbstractSaveToWord.cs index 2d7aef7..9686ef1 100644 --- a/ComputerStoreBusinessLogic/OfficePackage/AbstractSaveToWord.cs +++ b/ComputerStoreBusinessLogic/OfficePackage/AbstractSaveToWord.cs @@ -10,7 +10,7 @@ namespace ComputerStoreBusinessLogic.OfficePackage { public abstract class AbstractSaveToWord { - public void CreateDoc(WordInfo info) + public byte[] CreateDoc(WordInfo info) { CreateWord(info); CreateParagraph(new WordParagraph @@ -48,11 +48,11 @@ namespace ComputerStoreBusinessLogic.OfficePackage } } - SaveWord(info); + return SaveWord(info); } protected abstract void CreateWord(WordInfo info); protected abstract void CreateParagraph(WordParagraph paragraph); - protected abstract void SaveWord(WordInfo info); + protected abstract byte[] SaveWord(WordInfo info); } } diff --git a/ComputerStoreBusinessLogic/OfficePackage/Implements/SaveToExcel.cs b/ComputerStoreBusinessLogic/OfficePackage/Implements/SaveToExcel.cs index d9add37..0ee4acb 100644 --- a/ComputerStoreBusinessLogic/OfficePackage/Implements/SaveToExcel.cs +++ b/ComputerStoreBusinessLogic/OfficePackage/Implements/SaveToExcel.cs @@ -18,7 +18,7 @@ namespace ComputerStoreBusinessLogic.OfficePackage.Implements private SpreadsheetDocument? _spreadsheetDocument; private SharedStringTablePart? _shareStringPart; private Worksheet? _worksheet; - + private MemoryStream? mem; private static void CreateStyles(WorkbookPart workbookpart) { var sp = workbookpart.AddNewPart(); @@ -210,9 +210,9 @@ namespace ComputerStoreBusinessLogic.OfficePackage.Implements } protected override void CreateExcel(ExcelInfo info) - { - _spreadsheetDocument = SpreadsheetDocument.Create(info.FileName, - SpreadsheetDocumentType.Workbook); + { + mem = new MemoryStream(); + _spreadsheetDocument = SpreadsheetDocument.Create(mem, SpreadsheetDocumentType.Workbook); var workbookpart = _spreadsheetDocument.AddWorkbookPart(); workbookpart.Workbook = new Workbook(); @@ -226,17 +226,17 @@ namespace ComputerStoreBusinessLogic.OfficePackage.Implements : _spreadsheetDocument.WorkbookPart.AddNewPart(); - + if (_shareStringPart.SharedStringTable == null) { _shareStringPart.SharedStringTable = new SharedStringTable(); } - + var worksheetPart = workbookpart.AddNewPart(); worksheetPart.Worksheet = new Worksheet(new SheetData()); - + var sheets = _spreadsheetDocument.WorkbookPart.Workbook.AppendChild(new Sheets()); var sheet = new Sheet() @@ -341,14 +341,16 @@ namespace ComputerStoreBusinessLogic.OfficePackage.Implements mergeCells.Append(mergeCell); } - protected override void SaveExcel(ExcelInfo info) + protected override byte[] SaveExcel(ExcelInfo info) { if (_spreadsheetDocument == null) { - return; + return null; } _spreadsheetDocument.WorkbookPart!.Workbook.Save(); _spreadsheetDocument.Dispose(); + + return mem.ToArray(); } } } diff --git a/ComputerStoreBusinessLogic/OfficePackage/Implements/SaveToWord.cs b/ComputerStoreBusinessLogic/OfficePackage/Implements/SaveToWord.cs index 48f38d4..e65a4f8 100644 --- a/ComputerStoreBusinessLogic/OfficePackage/Implements/SaveToWord.cs +++ b/ComputerStoreBusinessLogic/OfficePackage/Implements/SaveToWord.cs @@ -15,7 +15,7 @@ namespace ComputerStoreBusinessLogic.OfficePackage.Implements { private WordprocessingDocument? _wordDocument; private Body? _docBody; - + private MemoryStream mem; private static JustificationValues GetJustificationValues(WordJustificationType type) { return type switch @@ -96,21 +96,23 @@ namespace ComputerStoreBusinessLogic.OfficePackage.Implements protected override void CreateWord(WordInfo info) { - _wordDocument = WordprocessingDocument.Create(info.FileName, WordprocessingDocumentType.Document); + mem = new MemoryStream(); + _wordDocument = WordprocessingDocument.Create(mem, WordprocessingDocumentType.Document); MainDocumentPart mainPart = _wordDocument.AddMainDocumentPart(); mainPart.Document = new Document(); _docBody = mainPart.Document.AppendChild(new Body()); } - protected override void SaveWord(WordInfo info) + protected override byte[] SaveWord(WordInfo info) { if (_docBody == null || _wordDocument == null) { - return; + return null; } _docBody.AppendChild(CreateSectionProperties()); _wordDocument.MainDocumentPart!.Document.Save(); _wordDocument.Dispose(); + return mem.ToArray(); } } } diff --git a/ComputerStoreContracts/BusinessLogicContracts/IEmployeeReportLogic.cs b/ComputerStoreContracts/BusinessLogicContracts/IEmployeeReportLogic.cs index 544b698..850b0c5 100644 --- a/ComputerStoreContracts/BusinessLogicContracts/IEmployeeReportLogic.cs +++ b/ComputerStoreContracts/BusinessLogicContracts/IEmployeeReportLogic.cs @@ -15,7 +15,7 @@ namespace ComputerStoreContracts.BusinessLogicContracts List GetConsignmentsByComponents(ReportComponentsBindingModel model); void SavePCsAndProductsToPdfFile(ReportDateBindingModel model); - void SaveConsignmentsToExcelFile(ReportComponentsBindingModel model); - void SaveConsignmentsToWordFile(ReportComponentsBindingModel model); + byte[] SaveConsignmentsToExcelFile(ReportComponentsBindingModel model); + byte[] SaveConsignmentsToWordFile(ReportComponentsBindingModel model); } } diff --git a/ComputerStoreRestAPI/Controllers/MainController.cs b/ComputerStoreRestAPI/Controllers/MainController.cs index 03d9f84..bb4d542 100644 --- a/ComputerStoreRestAPI/Controllers/MainController.cs +++ b/ComputerStoreRestAPI/Controllers/MainController.cs @@ -2,6 +2,7 @@ using ComputerStoreContracts.BusinessLogicContracts; using ComputerStoreContracts.SearchModels; using ComputerStoreContracts.ViewModels; +using DocumentFormat.OpenXml.Packaging; using Microsoft.AspNetCore.Mvc; using System.Windows; @@ -508,5 +509,25 @@ namespace ComputerStoreRestAPI.Controllers { return _employeeReportLogic.GetConsignmentsByComponents(model); } - } + + [HttpGet] + public byte[] SaveReportConsignmentsToExcel(ReportComponentsBindingModel model) + { + return _employeeReportLogic.SaveConsignmentsToExcelFile(new ReportComponentsBindingModel + { + FileName = "ReportConsignments", + Components = model.Components + }); + } + + [HttpGet] + public byte[] SaveReportConsignmentsToWord(ReportComponentsBindingModel model) + { + return _employeeReportLogic.SaveConsignmentsToWordFile(new ReportComponentsBindingModel + { + FileName = "ReportConsignments", + Components = model.Components + }); + } + } }