From e36b57e9fd4fa001f3c503b53036dc755c75ba00 Mon Sep 17 00:00:00 2001 From: Programmist73 Date: Fri, 19 May 2023 23:32:09 +0400 Subject: [PATCH] =?UTF-8?q?=D0=93=D0=BE=D1=82=D0=BE=D0=B2=D1=8B=D0=B5=20?= =?UTF-8?q?=D0=BE=D1=82=D1=87=D1=91=D1=82=D1=8B.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../BusinessLogics/ReportCashierLogic.cs | 15 +- .../BusinessLogics/ReportClientLogic.cs | 46 ++- .../OfficePackage/AbstractSaveToExcel.cs | 50 ++- .../AbstractSaveToExcelCashier.cs | 51 ---- .../OfficePackage/AbstractSaveToWord.cs | 286 ++++++++++++++++++ .../OfficePackage/AbstractSaveToWordClient.cs | 43 --- .../OfficePackage/HelperModels/WordInfo.cs | 12 +- .../HelperModels/WordParagraph.cs | 4 +- .../OfficePackage/Implements/SaveToWord.cs | 77 ++++- .../Implements/SaveToWordCashier.cs | 27 -- .../IReportClientLogic.cs | 4 +- ...perationEnum.cs => OfficeOperationEnum.cs} | 2 +- .../Controllers/ReportController.cs | 114 +++++-- .../BankYouBankruptRestAPI/Program.cs | 5 +- ... по зявкам на снятие.docx | Bin 0 -> 1837 bytes ... по зявкам на снятие.xlsx | Bin 0 -> 3482 bytes .../Отчёт по переводам.docx | Bin 0 -> 1608 bytes .../Отчёт по переводам.xls | Bin 3483 -> 1514 bytes ...тчёт по пополнениям.docx | Bin 0 -> 1793 bytes .../Отчёт по снятиям.docx | Bin 0 -> 1856 bytes 20 files changed, 562 insertions(+), 174 deletions(-) delete mode 100644 BankYouBankrupt/BankYouBankruptBusinessLogic/OfficePackage/AbstractSaveToExcelCashier.cs create mode 100644 BankYouBankrupt/BankYouBankruptBusinessLogic/OfficePackage/AbstractSaveToWord.cs delete mode 100644 BankYouBankrupt/BankYouBankruptBusinessLogic/OfficePackage/AbstractSaveToWordClient.cs delete mode 100644 BankYouBankrupt/BankYouBankruptBusinessLogic/OfficePackage/Implements/SaveToWordCashier.cs rename BankYouBankrupt/BankYouBankruptDataModels/Enums/{ExcelOperationEnum.cs => OfficeOperationEnum.cs} (90%) create mode 100644 BankYouBankrupt/BankYouBankruptRestAPI/Отчёт по зявкам на снятие.docx create mode 100644 BankYouBankrupt/BankYouBankruptRestAPI/Отчёт по зявкам на снятие.xlsx create mode 100644 BankYouBankrupt/BankYouBankruptRestAPI/Отчёт по переводам.docx create mode 100644 BankYouBankrupt/BankYouBankruptRestAPI/Отчёт по пополнениям.docx create mode 100644 BankYouBankrupt/BankYouBankruptRestAPI/Отчёт по снятиям.docx diff --git a/BankYouBankrupt/BankYouBankruptBusinessLogic/BusinessLogics/ReportCashierLogic.cs b/BankYouBankrupt/BankYouBankruptBusinessLogic/BusinessLogics/ReportCashierLogic.cs index 9b66f74..3d92073 100644 --- a/BankYouBankrupt/BankYouBankruptBusinessLogic/BusinessLogics/ReportCashierLogic.cs +++ b/BankYouBankrupt/BankYouBankruptBusinessLogic/BusinessLogics/ReportCashierLogic.cs @@ -29,14 +29,14 @@ namespace BankYouBankruptBusinessLogic.BusinessLogics private readonly AbstractSaveToExcel _saveToExcel; - private readonly AbstractSaveToWordCashier _saveToWord; + private readonly AbstractSaveToWord _saveToWord; private readonly AbstractSaveToPdf _saveToPdf; //инициализируем поля класса через контейнер public ReportCashierLogic(IMoneyTransferStorage moneyTransferStorage, ICashWithdrawalStorage cashWithdrawalStorage, IClientStorage clientStorage, AbstractSaveToExcel saveToExcel, - AbstractSaveToWordCashier saveToWord, AbstractSaveToPdf saveToPdf, + AbstractSaveToWord saveToWord, AbstractSaveToPdf saveToPdf, IDebitingStorage debitingStorage, ICardStorage cardStorage) { _moneyTransferStorage = moneyTransferStorage; @@ -124,7 +124,14 @@ namespace BankYouBankruptBusinessLogic.BusinessLogics //Сохранение мороженных в файл-Word public void SaveAccountsToWordFile(ReportBindingModel model) { - throw new NotImplementedException(); + _saveToWord.CreateDoc(new WordInfo + { + FileName = model.FileName, + + Title = "Заявки на снятия со счёта", + + Debiting = GetDebitings(model) + }, OfficeOperationEnum.Для_кассира); } //Сохранение заготовок с указаеним изделий в файл-Excel @@ -137,7 +144,7 @@ namespace BankYouBankruptBusinessLogic.BusinessLogics Title = "Заявки на счёт", Debiting = GetDebitings(model) - }, ExcelOperationEnum.Для_кассира); + }, OfficeOperationEnum.Для_кассира); } //Сохранение заказов в файл-Pdf diff --git a/BankYouBankrupt/BankYouBankruptBusinessLogic/BusinessLogics/ReportClientLogic.cs b/BankYouBankrupt/BankYouBankruptBusinessLogic/BusinessLogics/ReportClientLogic.cs index de204e4..f08fe3b 100644 --- a/BankYouBankrupt/BankYouBankruptBusinessLogic/BusinessLogics/ReportClientLogic.cs +++ b/BankYouBankrupt/BankYouBankruptBusinessLogic/BusinessLogics/ReportClientLogic.cs @@ -24,11 +24,11 @@ namespace BankYouBankruptBusinessLogic.BusinessLogics private readonly IMoneyTransferStorage _moneyTransferStorage; private readonly AbstractSaveToExcel _saveToExcel; - private readonly AbstractSaveToWordClient _saveToWord; + private readonly AbstractSaveToWord _saveToWord; private readonly AbstractSaveToPdf _saveToPdf; public ReportClientLogic(ICreditingStorage creditingStorage, IDebitingStorage debitingStorage, - AbstractSaveToExcel saveToExcel, AbstractSaveToWordClient saveToWord, AbstractSaveToPdf saveToPdf, + AbstractSaveToExcel saveToExcel, AbstractSaveToWord saveToWord, AbstractSaveToPdf saveToPdf, ICardStorage cardStorage, IMoneyTransferStorage moneyTransferStorage) { _creditingStorage = creditingStorage; @@ -136,9 +136,9 @@ namespace BankYouBankruptBusinessLogic.BusinessLogics return totalList; } - public void SaveToExcelFile(ReportBindingModel model, ExcelOperationEnum operationEnum) + public void SaveToExcelFile(ReportBindingModel model, OfficeOperationEnum operationEnum) { - if(operationEnum == ExcelOperationEnum.Между_cчетами) + if(operationEnum == OfficeOperationEnum.Между_cчетами) { _saveToExcel.CreateReport(new ExcelInfo { @@ -148,7 +148,7 @@ namespace BankYouBankruptBusinessLogic.BusinessLogics }, operationEnum); } - if (operationEnum == ExcelOperationEnum.Пополнение_карт) + if (operationEnum == OfficeOperationEnum.Пополнение_карт) { _saveToExcel.CreateReport(new ExcelInfo { @@ -158,7 +158,7 @@ namespace BankYouBankruptBusinessLogic.BusinessLogics }, operationEnum); } - if (operationEnum == ExcelOperationEnum.Cнятие_с_карты) + if (operationEnum == OfficeOperationEnum.Cнятие_с_карты) { _saveToExcel.CreateReport(new ExcelInfo { @@ -169,10 +169,38 @@ namespace BankYouBankruptBusinessLogic.BusinessLogics } } - public void SaveToWordFile(ReportBindingModel model) + public void SaveToWordFile(ReportBindingModel model, OfficeOperationEnum operationEnum) { - throw new NotImplementedException(); - } + if (operationEnum == OfficeOperationEnum.Между_cчетами) + { + _saveToWord.CreateDoc(new WordInfo + { + FileName = model.FileName, + Title = "Отчёт по переводам", + MoneyTransfer = GetMoneyTransfer(model) + }, operationEnum); + } + + if (operationEnum == OfficeOperationEnum.Пополнение_карт) + { + _saveToWord.CreateDoc(new WordInfo + { + FileName = model.FileName, + Title = "Отчёт по пополнениям (переводам из налички на карту)", + Crediting = GetExcelCrediting(model) + }, operationEnum); + } + + if (operationEnum == OfficeOperationEnum.Cнятие_с_карты) + { + _saveToWord.CreateDoc(new WordInfo + { + FileName = model.FileName, + Title = "Отчёт по снятиям денежных средств", + Debiting = GetExcelDebiting(model) + }, operationEnum); + } + } //отчёт в формате PDF для клиента public ReportClientViewModelForHTML SaveClientReportToPdfFile(ReportBindingModel model) diff --git a/BankYouBankrupt/BankYouBankruptBusinessLogic/OfficePackage/AbstractSaveToExcel.cs b/BankYouBankrupt/BankYouBankruptBusinessLogic/OfficePackage/AbstractSaveToExcel.cs index 30c4179..d35fa44 100644 --- a/BankYouBankrupt/BankYouBankruptBusinessLogic/OfficePackage/AbstractSaveToExcel.cs +++ b/BankYouBankrupt/BankYouBankruptBusinessLogic/OfficePackage/AbstractSaveToExcel.cs @@ -12,24 +12,24 @@ namespace BankYouBankruptBusinessLogic.OfficePackage public abstract class AbstractSaveToExcel { //Создание отчета. Описание методов ниже - public void CreateReport(ExcelInfo info, ExcelOperationEnum operationEnum) + public void CreateReport(ExcelInfo info, OfficeOperationEnum operationEnum) { - if(operationEnum == ExcelOperationEnum.Между_cчетами) + if(operationEnum == OfficeOperationEnum.Между_cчетами) { CreateMoneyTransferExcel(info); } - if (operationEnum == ExcelOperationEnum.Пополнение_карт) + if (operationEnum == OfficeOperationEnum.Пополнение_карт) { CreateCreditingExcel(info); } - if (operationEnum == ExcelOperationEnum.Cнятие_с_карты) + if (operationEnum == OfficeOperationEnum.Cнятие_с_карты) { CreateDebitingExcel(info); } - if (operationEnum == ExcelOperationEnum.Для_кассира) + if (operationEnum == OfficeOperationEnum.Для_кассира) { CreateCashierExcel(info); } @@ -130,6 +130,26 @@ namespace BankYouBankruptBusinessLogic.OfficePackage }); rowIndex++; + + //Вставляет слово "Сумма перевода" + InsertCellInWorksheet(new ExcelCellParameters + { + ColumnName = "A", + RowIndex = rowIndex, + Text = "Дата операции: ", + StyleInfo = ExcelStyleInfoType.Text + }); + + //подсчитывает общее кол-во заготовок в изделии + InsertCellInWorksheet(new ExcelCellParameters + { + ColumnName = "C", + RowIndex = rowIndex, + Text = mt.DateOperation.ToString(), + StyleInfo = ExcelStyleInfoType.Text + }); + + rowIndex++; } rowIndex++; @@ -442,6 +462,26 @@ namespace BankYouBankruptBusinessLogic.OfficePackage }); rowIndex++; + + //строчка с номером счёта получателя + InsertCellInWorksheet(new ExcelCellParameters + { + ColumnName = "B", + RowIndex = rowIndex, + Text = "Дата: ", + StyleInfo = ExcelStyleInfoType.TextWithBorder + }); + + //вставка номера отправителя + InsertCellInWorksheet(new ExcelCellParameters + { + ColumnName = "C", + RowIndex = rowIndex, + Text = cr.DateClose == null ? "В обработке" : cr.DateClose.ToString(), + StyleInfo = ExcelStyleInfoType.TextWithBorder + }); + + rowIndex++; } rowIndex++; diff --git a/BankYouBankrupt/BankYouBankruptBusinessLogic/OfficePackage/AbstractSaveToExcelCashier.cs b/BankYouBankrupt/BankYouBankruptBusinessLogic/OfficePackage/AbstractSaveToExcelCashier.cs deleted file mode 100644 index dee00d6..0000000 --- a/BankYouBankrupt/BankYouBankruptBusinessLogic/OfficePackage/AbstractSaveToExcelCashier.cs +++ /dev/null @@ -1,51 +0,0 @@ -using BankYouBankruptBusinessLogic.OfficePackage.HelperEnums; -using BankYouBankruptBusinessLogic.OfficePackage.HelperModels; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace BankYouBankruptBusinessLogic.OfficePackage -{ - public abstract class AbstractSaveToExcelCashier - { - //Создание отчета. Описание методов ниже - public void CreateReport(ExcelInfo info) - { - CreateExcel(info); - - InsertCellInWorksheet(new ExcelCellParameters - { - ColumnName = "A", - RowIndex = 1, - Text = info.Title, - StyleInfo = ExcelStyleInfoType.Title - }); - - MergeCells(new ExcelMergeParameters - { - CellFromName = "A1", - CellToName = "C1" - }); - - uint rowIndex = 2; - - ///TODO - - SaveExcel(info); - } - - //Создание excel-файла - protected abstract void CreateExcel(ExcelInfo info); - - //Добавляем новую ячейку в лист - protected abstract void InsertCellInWorksheet(ExcelCellParameters excelParams); - - //Объединение ячеек - protected abstract void MergeCells(ExcelMergeParameters excelParams); - - //Сохранение файла - protected abstract void SaveExcel(ExcelInfo info); - } -} diff --git a/BankYouBankrupt/BankYouBankruptBusinessLogic/OfficePackage/AbstractSaveToWord.cs b/BankYouBankrupt/BankYouBankruptBusinessLogic/OfficePackage/AbstractSaveToWord.cs new file mode 100644 index 0000000..0f012a3 --- /dev/null +++ b/BankYouBankrupt/BankYouBankruptBusinessLogic/OfficePackage/AbstractSaveToWord.cs @@ -0,0 +1,286 @@ +using BankYouBankruptBusinessLogic.OfficePackage.HelperEnums; +using BankYouBankruptBusinessLogic.OfficePackage.HelperModels; +using BankYouBankruptDataModels.Enums; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace BankYouBankruptBusinessLogic.OfficePackage +{ + public abstract class AbstractSaveToWord + { + //метод создания документа + public void CreateDoc(WordInfo info, OfficeOperationEnum operationEnum) + { + if (operationEnum == OfficeOperationEnum.Между_cчетами) + { + CreateMoneyTransferWord(info); + } + + if (operationEnum == OfficeOperationEnum.Пополнение_карт) + { + CreateCreditingWord(info); + } + + if (operationEnum == OfficeOperationEnum.Cнятие_с_карты) + { + CreateDebitingWord(info); + } + + if (operationEnum == OfficeOperationEnum.Для_кассира) + { + CreateCashierWord(info); + } + } + + private void CreateMoneyTransferWord(WordInfo info) + { + CreateWord(info); + + CreateParagraph(new WordParagraph + { + Texts = new List<(string, WordTextProperties)> { (info.Title, new WordTextProperties { Bold = true, Size = "24" }) }, + TextProperties = new WordTextProperties + { + Size = "24", + JustificationType = WordJustificationType.Center + } + }); + + foreach (var transfer in info.MoneyTransfer) + { + List> rowList = new() + { + new() + { + new("Номер счёта отправителя", new WordTextProperties { Bold = true, Size = "20" } ), + new("Номер счёта получателя", new WordTextProperties { Bold = true, Size = "20" } ), + new("Сумма операции", new WordTextProperties { Bold = true, Size = "20" } ), + new("Дата перевода", new WordTextProperties { Bold = true, Size = "20" } ) + } + }; + + CreateParagraph(new WordParagraph + { + Texts = new List<(string, WordTextProperties)> { ("Перевод №" + transfer.Id.ToString(), new WordTextProperties { Bold = true, Size = "24" }) }, + TextProperties = new WordTextProperties + { + Size = "24", + JustificationType = WordJustificationType.Center + } + }); + + List<(string, WordTextProperties)> cellList = new() + { + new(transfer.AccountSenderNumber, new WordTextProperties { Size = "20" }), + new(transfer.AccountPayeeNumber, new WordTextProperties { Size = "20" }), + new(transfer.Sum.ToString(), new WordTextProperties { Size = "20"}), + new(transfer.DateOperation.ToString(), new WordTextProperties { Size = "20"}), + }; + + rowList.Add(cellList); + + CreateTable(new WordParagraph + { + RowTexts = rowList, + TextProperties = new WordTextProperties + { + Size = "24", + JustificationType = WordJustificationType.Center + } + }); + } + + SaveWord(info); + } + + private void CreateCreditingWord(WordInfo info) + { + CreateWord(info); + + CreateParagraph(new WordParagraph + { + Texts = new List<(string, WordTextProperties)> { (info.Title, new WordTextProperties { Bold = true, Size = "24" }) }, + TextProperties = new WordTextProperties + { + Size = "24", + JustificationType = WordJustificationType.Center + } + }); + + foreach (var crediting in info.Crediting) + { + List> rowList = new() + { + new() + { + new("Номер карты", new WordTextProperties { Bold = true, Size = "24" } ), + new("Сумма пополнения", new WordTextProperties { Bold = true, Size = "24" } ), + new("Дата выполнения", new WordTextProperties { Bold = true, Size = "24" } ) + } + }; + + CreateParagraph(new WordParagraph + { + Texts = new List<(string, WordTextProperties)> { ("Пополнение №" + crediting.Id.ToString(), new WordTextProperties { Bold = true, Size = "24" }) }, + TextProperties = new WordTextProperties + { + Size = "24", + JustificationType = WordJustificationType.Center + } + }); + + List<(string, WordTextProperties)> cellList = new() + { + new(crediting.CardNumber, new WordTextProperties { Size = "24" }), + new(crediting.Sum.ToString(), new WordTextProperties { Size = "24" }), + new(crediting.DateClose == null ? "В обработке" : crediting.DateClose.ToString(), new WordTextProperties { Size = "24" }) + }; + + rowList.Add(cellList); + + CreateTable(new WordParagraph + { + RowTexts = rowList, + TextProperties = new WordTextProperties + { + Size = "24", + JustificationType = WordJustificationType.Center + } + }); + } + + SaveWord(info); + } + + private void CreateDebitingWord(WordInfo info) + { + CreateWord(info); + + CreateParagraph(new WordParagraph + { + Texts = new List<(string, WordTextProperties)> { (info.Title, new WordTextProperties { Bold = true, Size = "24" }) }, + TextProperties = new WordTextProperties + { + Size = "24", + JustificationType = WordJustificationType.Center + } + }); + + foreach (var crediting in info.Debiting) + { + List> rowList = new() + { + new() + { + new("Номер карты", new WordTextProperties { Bold = true, Size = "24" } ), + new("Сумма снятия", new WordTextProperties { Bold = true, Size = "24" } ), + new("Дата выполнения", new WordTextProperties { Bold = true, Size = "24" } ) + } + }; + CreateParagraph(new WordParagraph + { + Texts = new List<(string, WordTextProperties)> { ("Снятие №" + crediting.Id.ToString(), new WordTextProperties { Bold = true, Size = "24" }) }, + TextProperties = new WordTextProperties + { + Size = "24", + JustificationType = WordJustificationType.Center + } + }); + + List<(string, WordTextProperties)> cellList = new() + { + new(crediting.CardNumber, new WordTextProperties { Size = "24" }), + new(crediting.Sum.ToString(), new WordTextProperties { Size = "24" }), + new(crediting.DateClose == null ? "В обработке" : crediting.DateClose.ToString(), new WordTextProperties { Size = "24" }) + }; + + rowList.Add(cellList); + + CreateTable(new WordParagraph + { + RowTexts = rowList, + TextProperties = new WordTextProperties + { + Size = "24", + JustificationType = WordJustificationType.Center + } + }); + } + + SaveWord(info); + } + + private void CreateCashierWord(WordInfo info) + { + CreateWord(info); + + CreateParagraph(new WordParagraph + { + Texts = new List<(string, WordTextProperties)> { (info.Title, new WordTextProperties { Bold = true, Size = "24" }) }, + TextProperties = new WordTextProperties + { + Size = "24", + JustificationType = WordJustificationType.Center + } + }); + + foreach (var crediting in info.Debiting) + { + List> rowList = new() + { + new() + { + new("Сумма заявки", new WordTextProperties { Bold = true, Size = "24" } ), + new("Дата открытия", new WordTextProperties { Bold = true, Size = "24" } ), + new("Статус", new WordTextProperties { Bold = true, Size = "24" } ) + } + }; + CreateParagraph(new WordParagraph + { + Texts = new List<(string, WordTextProperties)> { ("Заявка №" + crediting.Id.ToString(), new WordTextProperties { Bold = true, Size = "24" }) }, + TextProperties = new WordTextProperties + { + Size = "24", + JustificationType = WordJustificationType.Center + } + }); + + List<(string, WordTextProperties)> cellList = new() + { + new(crediting.Sum.ToString(), new WordTextProperties { Size = "24" }), + new(crediting.DateOpen.ToString(), new WordTextProperties { Size = "24" }), + new(crediting.Status.ToString(), new WordTextProperties { Size = "24" }) + }; + + rowList.Add(cellList); + + CreateTable(new WordParagraph + { + RowTexts = rowList, + TextProperties = new WordTextProperties + { + Size = "24", + JustificationType = WordJustificationType.Center + } + }); + } + + SaveWord(info); + } + + // Создание doc-файла + protected abstract void CreateWord(WordInfo info); + + // Создание абзаца с текстом + protected abstract void CreateParagraph(WordParagraph paragraph); + + //Создание таблицы + protected abstract void CreateTable(WordParagraph paragraph); + + // Сохранение файла + protected abstract void SaveWord(WordInfo info); + } +} diff --git a/BankYouBankrupt/BankYouBankruptBusinessLogic/OfficePackage/AbstractSaveToWordClient.cs b/BankYouBankrupt/BankYouBankruptBusinessLogic/OfficePackage/AbstractSaveToWordClient.cs deleted file mode 100644 index 1547b3a..0000000 --- a/BankYouBankrupt/BankYouBankruptBusinessLogic/OfficePackage/AbstractSaveToWordClient.cs +++ /dev/null @@ -1,43 +0,0 @@ -using BankYouBankruptBusinessLogic.OfficePackage.HelperEnums; -using BankYouBankruptBusinessLogic.OfficePackage.HelperModels; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace BankYouBankruptBusinessLogic.OfficePackage -{ - public abstract class AbstractSaveToWordClient - { - //метод создания документа - public void CreateDoc(WordInfo info) - { - CreateWord(info); - - //создание ряда абзацев - CreateParagraph(new WordParagraph - { - Texts = new List<(string, WordTextProperties)> { (info.Title, new WordTextProperties { Bold = true, Size = "24", }) }, - TextProperties = new WordTextProperties - { - Size = "24", - JustificationType = WordJustificationType.Center - } - }); - - //TODO - - SaveWord(info); - } - - // Создание doc-файла - protected abstract void CreateWord(WordInfo info); - - // Создание абзаца с текстом - protected abstract void CreateParagraph(WordParagraph paragraph); - - // Сохранение файла - protected abstract void SaveWord(WordInfo info); - } -} diff --git a/BankYouBankrupt/BankYouBankruptBusinessLogic/OfficePackage/HelperModels/WordInfo.cs b/BankYouBankrupt/BankYouBankruptBusinessLogic/OfficePackage/HelperModels/WordInfo.cs index c79d66f..00c3122 100644 --- a/BankYouBankrupt/BankYouBankruptBusinessLogic/OfficePackage/HelperModels/WordInfo.cs +++ b/BankYouBankrupt/BankYouBankruptBusinessLogic/OfficePackage/HelperModels/WordInfo.cs @@ -1,4 +1,5 @@ using BankYouBankruptContracts.ViewModels; +using BankYouBankruptContracts.ViewModels.Client.Default; using System; using System.Collections.Generic; using System.Linq; @@ -14,7 +15,12 @@ namespace BankYouBankruptBusinessLogic.OfficePackage.HelperModels public string Title { get; set; } = string.Empty; - //списки для формирования отчёта клиента - public List Accounts { get; set; } = new(); - } + //списки для отчёта клиента + public List MoneyTransfer { get; set; } = new(); + + public List Crediting { get; set; } = new(); + + //список для отчёта кассира и клиента + public List Debiting { get; set; } = new(); + } } diff --git a/BankYouBankrupt/BankYouBankruptBusinessLogic/OfficePackage/HelperModels/WordParagraph.cs b/BankYouBankrupt/BankYouBankruptBusinessLogic/OfficePackage/HelperModels/WordParagraph.cs index d326090..a2277e0 100644 --- a/BankYouBankrupt/BankYouBankruptBusinessLogic/OfficePackage/HelperModels/WordParagraph.cs +++ b/BankYouBankrupt/BankYouBankruptBusinessLogic/OfficePackage/HelperModels/WordParagraph.cs @@ -14,5 +14,7 @@ namespace BankYouBankruptBusinessLogic.OfficePackage.HelperModels //свойства параграфа, если они есть public WordTextProperties? TextProperties { get; set; } - } + + public List> RowTexts { get; set; } = new(); + } } diff --git a/BankYouBankrupt/BankYouBankruptBusinessLogic/OfficePackage/Implements/SaveToWord.cs b/BankYouBankrupt/BankYouBankruptBusinessLogic/OfficePackage/Implements/SaveToWord.cs index 3da7708..c4e87e8 100644 --- a/BankYouBankrupt/BankYouBankruptBusinessLogic/OfficePackage/Implements/SaveToWord.cs +++ b/BankYouBankrupt/BankYouBankruptBusinessLogic/OfficePackage/Implements/SaveToWord.cs @@ -8,7 +8,7 @@ using DocumentFormat.OpenXml.Wordprocessing; namespace BankYouBankruptBusinessLogic.OfficePackage.Implements { //реализация абстрактного класса сохранения в word - public class SaveToWord : AbstractSaveToWordClient + public class SaveToWord : AbstractSaveToWord { private WordprocessingDocument? _wordDocument; @@ -135,8 +135,79 @@ namespace BankYouBankruptBusinessLogic.OfficePackage.Implements _docBody.AppendChild(docParagraph); } - //метод сохранения документа - protected override void SaveWord(WordInfo info) + //метод, отвечающий за создание таблицы + protected override void CreateTable(WordParagraph paragraph) + { + if (_docBody == null || paragraph == null) + { + return; + } + + Table table = new Table(); + + var tableProp = new TableProperties(); + + tableProp.AppendChild(new TableLayout { Type = TableLayoutValues.Fixed }); + tableProp.AppendChild(new TableBorders( + new TopBorder() { Val = new EnumValue(BorderValues.Single), Size = 4 }, + new LeftBorder() { Val = new EnumValue(BorderValues.Single), Size = 4 }, + new RightBorder() { Val = new EnumValue(BorderValues.Single), Size = 4 }, + new BottomBorder() { Val = new EnumValue(BorderValues.Single), Size = 4 }, + new InsideHorizontalBorder() { Val = new EnumValue(BorderValues.Single), Size = 4 }, + new InsideVerticalBorder() { Val = new EnumValue(BorderValues.Single), Size = 4 } + )); + tableProp.AppendChild(new TableWidth { Type = TableWidthUnitValues.Auto }); + + table.AppendChild(tableProp); + + TableGrid tableGrid = new TableGrid(); + + for (int j = 0; j < paragraph.RowTexts[0].Count; ++j) + { + tableGrid.AppendChild(new GridColumn() { Width = "2500" }); + } + + table.AppendChild(tableGrid); + + for (int i = 0; i < paragraph.RowTexts.Count; ++i) + { + TableRow docRow = new TableRow(); + + for (int j = 0; j < paragraph.RowTexts[i].Count; ++j) + { + var docParagraph = new Paragraph(); + + docParagraph.AppendChild(CreateParagraphProperties(paragraph.RowTexts[i][j].Item2)); + + var docRun = new Run(); + + var properties = new RunProperties(); + + properties.AppendChild(new FontSize { Val = paragraph.RowTexts[i][j].Item2.Size }); + + if (paragraph.RowTexts[i][j].Item2.Bold) + { + properties.AppendChild(new Bold()); + } + + docRun.AppendChild(properties); + + docRun.AppendChild(new Text { Text = paragraph.RowTexts[i][j].Item1, Space = SpaceProcessingModeValues.Preserve }); + + docParagraph.AppendChild(docRun); + TableCell docCell = new TableCell(); + docCell.AppendChild(docParagraph); + docRow.AppendChild(docCell); + } + + table.AppendChild(docRow); + } + + _docBody.AppendChild(table); + } + + //метод сохранения документа + protected override void SaveWord(WordInfo info) { if (_docBody == null || _wordDocument == null) { diff --git a/BankYouBankrupt/BankYouBankruptBusinessLogic/OfficePackage/Implements/SaveToWordCashier.cs b/BankYouBankrupt/BankYouBankruptBusinessLogic/OfficePackage/Implements/SaveToWordCashier.cs deleted file mode 100644 index 19655b9..0000000 --- a/BankYouBankrupt/BankYouBankruptBusinessLogic/OfficePackage/Implements/SaveToWordCashier.cs +++ /dev/null @@ -1,27 +0,0 @@ -using BankYouBankruptBusinessLogic.OfficePackage.HelperModels; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace BankYouBankruptBusinessLogic.OfficePackage.Implements -{ - public class SaveToWordCashier : AbstractSaveToWordCashier - { - protected override void CreateParagraph(WordParagraph paragraph) - { - throw new NotImplementedException(); - } - - protected override void CreateWord(WordInfo info) - { - throw new NotImplementedException(); - } - - protected override void SaveWord(WordInfo info) - { - throw new NotImplementedException(); - } - } -} diff --git a/BankYouBankrupt/BankYouBankruptContracts/BusinessLogicsContracts/IReportClientLogic.cs b/BankYouBankrupt/BankYouBankruptContracts/BusinessLogicsContracts/IReportClientLogic.cs index ba06d3c..bdf3bfc 100644 --- a/BankYouBankrupt/BankYouBankruptContracts/BusinessLogicsContracts/IReportClientLogic.cs +++ b/BankYouBankrupt/BankYouBankruptContracts/BusinessLogicsContracts/IReportClientLogic.cs @@ -18,10 +18,10 @@ namespace BankYouBankruptContracts.BusinessLogicsContracts List? GetDebiting(ReportBindingModel model); //Сохранение отчёта по картам в файл-Word - void SaveToWordFile(ReportBindingModel model); + void SaveToWordFile(ReportBindingModel model, OfficeOperationEnum operationEnum); //Сохранение отчёта по картам в файл-Excel - void SaveToExcelFile(ReportBindingModel model, ExcelOperationEnum operationEnum); + void SaveToExcelFile(ReportBindingModel model, OfficeOperationEnum operationEnum); //Сохранение отчёта по картам в файл-Pdf ReportClientViewModelForHTML SaveClientReportToPdfFile(ReportBindingModel model); diff --git a/BankYouBankrupt/BankYouBankruptDataModels/Enums/ExcelOperationEnum.cs b/BankYouBankrupt/BankYouBankruptDataModels/Enums/OfficeOperationEnum.cs similarity index 90% rename from BankYouBankrupt/BankYouBankruptDataModels/Enums/ExcelOperationEnum.cs rename to BankYouBankrupt/BankYouBankruptDataModels/Enums/OfficeOperationEnum.cs index bafa9e4..70e345f 100644 --- a/BankYouBankrupt/BankYouBankruptDataModels/Enums/ExcelOperationEnum.cs +++ b/BankYouBankrupt/BankYouBankruptDataModels/Enums/OfficeOperationEnum.cs @@ -6,7 +6,7 @@ using System.Threading.Tasks; namespace BankYouBankruptDataModels.Enums { - public enum ExcelOperationEnum + public enum OfficeOperationEnum { Между_cчетами = 0, diff --git a/BankYouBankrupt/BankYouBankruptRestAPI/Controllers/ReportController.cs b/BankYouBankrupt/BankYouBankruptRestAPI/Controllers/ReportController.cs index 83b592b..386f998 100644 --- a/BankYouBankrupt/BankYouBankruptRestAPI/Controllers/ReportController.cs +++ b/BankYouBankrupt/BankYouBankruptRestAPI/Controllers/ReportController.cs @@ -35,6 +35,8 @@ namespace BankYouBankruptRestAPI.Controllers _reportCashierLogic = reportCashierLogic; } + #region Работа с pdf + //метод генерации отчёта за период по картам клиента [HttpPost] public ReportClientViewModelForHTML CreateClientReport(ReportSupportBindingModel model) @@ -80,20 +82,9 @@ namespace BankYouBankruptRestAPI.Controllers } } - /*//передача данных из отчёта кассира - [HttpGet] - public ReportCashierViewModelForHTML GetDataOfCashierReport() - { - try - { - return _reportCashierViewModelForHTML; - } - catch (Exception ex) - { - _logger.LogError(ex, "Ошибка входа в систему"); - throw; - } - }*/ + #endregion + + #region Работа с Excel //отчёт клиента Excel по переводу денег [HttpPost] @@ -103,9 +94,9 @@ namespace BankYouBankruptRestAPI.Controllers { _reportClientLogic.SaveToExcelFile(new ReportBindingModel { - FileName = "Отчёт по переводам.xls", + FileName = "Отчёт по переводам.xlsx", CardList = model.CardList - }, ExcelOperationEnum.Между_cчетами); + }, OfficeOperationEnum.Между_cчетами); } catch (Exception ex) { @@ -122,9 +113,9 @@ namespace BankYouBankruptRestAPI.Controllers { _reportClientLogic.SaveToExcelFile(new ReportBindingModel { - FileName = "Отчёт по пополнениям.xls", + FileName = "Отчёт по пополнениям.xlsx", CardList = model.CardList - }, ExcelOperationEnum.Пополнение_карт); + }, OfficeOperationEnum.Пополнение_карт); } catch (Exception ex) { @@ -141,9 +132,9 @@ namespace BankYouBankruptRestAPI.Controllers { _reportClientLogic.SaveToExcelFile(new ReportBindingModel { - FileName = "Отчёт по снятиям.xls", + FileName = "Отчёт по снятиям.xlsx", CardList = model.CardList - }, ExcelOperationEnum.Cнятие_с_карты); + }, OfficeOperationEnum.Cнятие_с_карты); } catch (Exception ex) { @@ -160,7 +151,7 @@ namespace BankYouBankruptRestAPI.Controllers { _reportCashierLogic.SaveAccountsToExcelFile(new ReportBindingModel { - FileName = "Отчёт по зявкам на снятие.xls", + FileName = "Отчёт по зявкам на снятие.xlsx", AccountId = model.AccountId }); } @@ -171,5 +162,86 @@ namespace BankYouBankruptRestAPI.Controllers } } + #endregion + + #region Работа с word + + //отчёт клиента Word по переводу денег + [HttpPost] + public void CreateWordClient(ReportSupportBindingModel model) + { + try + { + _reportClientLogic.SaveToWordFile(new ReportBindingModel + { + FileName = "Отчёт по переводам.docx", + CardList = model.CardList + }, OfficeOperationEnum.Между_cчетами); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка входа в систему"); + throw; + } + } + + //отчёт клиента Word по переводу денег + [HttpPost] + public void CreateWordCrediting(ReportSupportBindingModel model) + { + try + { + _reportClientLogic.SaveToWordFile(new ReportBindingModel + { + FileName = "Отчёт по пополнениям.docx", + CardList = model.CardList + }, OfficeOperationEnum.Пополнение_карт); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка входа в систему"); + throw; + } + } + + //отчёт клиента Word по выдаче денег + [HttpPost] + public void CreateWordDebiting(ReportSupportBindingModel model) + { + try + { + _reportClientLogic.SaveToWordFile(new ReportBindingModel + { + FileName = "Отчёт по снятиям.docx", + CardList = model.CardList + }, OfficeOperationEnum.Cнятие_с_карты); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка входа в систему"); + throw; + } + } + + //отчёт клиента Word по переводу денег + [HttpPost] + public void CreateWordCashier(ReportSupportBindingModel model) + { + try + { + _reportCashierLogic.SaveAccountsToWordFile(new ReportBindingModel + { + FileName = "Отчёт по зявкам на снятие.docx", + AccountId = model.AccountId + }); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка входа в систему"); + throw; + } + } + + #endregion } } diff --git a/BankYouBankrupt/BankYouBankruptRestAPI/Program.cs b/BankYouBankrupt/BankYouBankruptRestAPI/Program.cs index 4bfc224..922ac20 100644 --- a/BankYouBankrupt/BankYouBankruptRestAPI/Program.cs +++ b/BankYouBankrupt/BankYouBankruptRestAPI/Program.cs @@ -42,11 +42,8 @@ builder.Services.AddTransient(); //общие классы формировани отчётов builder.Services.AddTransient(); - builder.Services.AddTransient(); - -builder.Services.AddTransient(); -builder.Services.AddTransient(); +builder.Services.AddTransient(); builder.Services.AddControllers(); diff --git a/BankYouBankrupt/BankYouBankruptRestAPI/Отчёт по зявкам на снятие.docx b/BankYouBankrupt/BankYouBankruptRestAPI/Отчёт по зявкам на снятие.docx new file mode 100644 index 0000000000000000000000000000000000000000..3b25952e99020ffc56f8c9c91f53fb22b0408293 GIT binary patch literal 1837 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 CV#Fr^ literal 0 HcmV?d00001 diff --git a/BankYouBankrupt/BankYouBankruptRestAPI/Отчёт по переводам.docx b/BankYouBankrupt/BankYouBankruptRestAPI/Отчёт по переводам.docx new file mode 100644 index 0000000000000000000000000000000000000000..dcf9c9d28e87a2e7f88e7b8e6aebee16f3beaacc GIT binary patch literal 1608 zcmWIWW@Zs#VBp|jXx+UzjA5=>cn%W-gOV5ngCGL~LwSBtihfFda%paAUWr~sZqD0? zvwfEh1nQ=qD9K{6^_p$Aqvu3?JD97X_)V zdZ%r%{=j5|pR3EZdV8x*D08kk(ewCZ&;F0;)l-@eFFs(d7UFTtS=v;ZMbe~X=kY@e zdyi!m$J;MwL0 zcGADExSfmmm^7m`Ze7QnZX3P5Gv1zI5qGYT^~f=5-x>QaD=T%w=17MJ9s!<5TNcgx zH)oDY`pNbuM=pq0O|^S=GTZk0{V!hi*Ehy3vkQ5r*p&Ai;IpI}!tk|VzP#`pMj#v9|pYD^RRSw07qa(q(!eo)SA?oGud z9DmC1J=WeBB6sKSa~;*)8>hTEcFF(1xztl3%9WGf`^!pKu|8tDA%AAcy$;)*pJu+VO!Kc?iPn*~ z_H5gn?rYzQjk&k>!7bO-Dm&CpMwxCbm0ohyp!25DtnX{j&Aa+0?{3%6w=r91UA(it z``E6GJ-OdgV@?_w=R1_lu31}4q;qSTyX zeLWEQe)oPGdtl;JC`&CW&dkrVRWj5wP*OZpO)S>SFG$S;%B1BN8T~QO8OXiQc1xx z#a1cE!Z6V=Imsf`Al1;^BsJMkNkQMvMjyq;cBnymUz#aA3K*OqEDQ|NXy^RA5@1G; z2l=8n7L?zK4_dGuGJ`Z3Vy|uq$X;NOx}>HhmgbZwxK;q21Bp?fTa*-_?t=t!VnIPp zW->S`^vm*6(Be%O5`OTq3lwSvMfu68#l^rRk(;9jm&r}c%+m%N4-79XHiJ?aX;wp% z3n*&^4kb0))nQ%vh5| TfHx}}ND(s-?gY}6tRNl$Bs6Os literal 0 HcmV?d00001 diff --git a/BankYouBankrupt/BankYouBankruptRestAPI/Отчёт по переводам.xls b/BankYouBankrupt/BankYouBankruptRestAPI/Отчёт по переводам.xls index 5ca769e950ae34531443bc753a7c1285cb19c693..236f01a6b81541f4fd31f2bece4cfd53cc452838 100644 GIT binary patch literal 1514 zcmWIWW@Zs#VBp|j&{(%QET|!&mXC>nVHY<8gCGL~LwSBtihfFda%paAUWr~sZqD1V zyLp!lMCzuV_JJ9 zcV;cEKJ!M}*f{>or5e-TNDIEZhNTyyw@s;hd^7l)&djcjZ6;r~GzmCYITp?5S~Jg4 zIkEfJ%oV>Qi|Wc!x8Jm@k@ z8s{@Hms<@U&mWvWWB&V}xY5yC_OdPf1#t^MWmhN9s$axC|E+0B;zh3m|CdYsK6mEq zpYN&G%K!ffZ`}AJ*?wDLv$t=Jy1KjK$#FlgFE8r2-ma6#<(Txc zZ=+V+t^%hZ4FQYRD@F@<_1|Vb`1akY2VcH_I9MJ4O*{ZpO)S>SFG$S;%B1BN8T~QO8OYN zMoGal#a1cEGA%VFG07m!+{n_@#K0s;NkQMvMjyq;cBnymUz#aA3K*OqEDQ|NXy^RA z5@1%02l=8n7L+524_dGuGJ`Z3Vy|uq$X;NOx}>HhmgbZwxK;q21Bp?fTa*-_?t=t! zVnIPpW->S`^vm*6(Be%O5`OT~1r%xpMfu68#l^rRk(;9jm&r}c%+m%N4-79XHiJ?a zX;wp%3n*^cLHf?RuB&WT>de* literal 3483 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 C70m4b diff --git a/BankYouBankrupt/BankYouBankruptRestAPI/Отчёт по пополнениям.docx b/BankYouBankrupt/BankYouBankruptRestAPI/Отчёт по пополнениям.docx new file mode 100644 index 0000000000000000000000000000000000000000..2621260eb3695f75a56e1be12100068cfba86a44 GIT binary patch literal 1793 zcmWIWW@Zs#VBp|jn6_hcm=(v*JXK}}h6rZ{20;b}hVuNP6#bO^lr3n|~uUTf}qJNT;7*9*+6T6Qo#;$79% z#lf|w=`WWJXR@`Q#uCqyoi~zC-rIljP0!xAda3+9dpC>!xTN=Vh>dyri?jNKt@&v_h1vr( z6WV`Y3kWT}^>P1I?dv67i-gk;AAe#k(I0;EuI2uZe&RjuOG`>0%l?}o*L*nqrqAYt zZL7At&VRrppV}9{Wcl`T8}A?g?H`5jx_@rF@16tNv6mCNn%2(RXDYqw>V?p|6SjyM zhA!F`)^{~&**Y~{2@h@r%(e|&n{~J;@<7u%;nND!qOv142#6uzwPx1StJE~NJWFgf zyExlrYnCsUuL>(1wtl_0KE!Org;}hk45B@1hPSr5wYuJWT*Vr*zTvfK!Ct0y;Rn8Q znZ~a-;MaK}WvH7ZwRKsm?h;lWorDBNW^Rdy0|yRO`CrkxeCXOAQOZ)X#fnv+-pR8gFf zSx~G1)RI?htCUevQedU8U!0tgnwwaxmtT;Y2b4+6FUn0U0dkAd^$QY{vlG)(^^FV+ z%=CdaBFs=iHB%v^vLKZh6Z6y3GLutXphW@}gY{8WC@F*_7Nw__*edB`6edavo+-9U zL6#|L#s)|rY0r^zyQ#B$1n=2balB%*@jU8xIUGEH;Bu7-?2RlM5(q zB2o(63Vm=$0i%MENrVA+odJvwB!Cg=2<_Oj2SRTMup&arEa)2169Gcwau%#fBEXxK P4Wx(}2zLT$BQOsD{=2sJ literal 0 HcmV?d00001 diff --git a/BankYouBankrupt/BankYouBankruptRestAPI/Отчёт по снятиям.docx b/BankYouBankrupt/BankYouBankruptRestAPI/Отчёт по снятиям.docx new file mode 100644 index 0000000000000000000000000000000000000000..d5829187968a66a399cb498c29bc0457bd8b24eb GIT binary patch literal 1856 zcmWIWW@Zs#VBp|jSg>Pr*uN=;FH@Kq7+8ZD7z7y@7|QdDQuI^ulS^|`^Gft8a&z9! zam>GLAaZ=a*A(mC$?Ia%*Un~PwIB4m6M^B?y`FQO1xn7KgHxii?^Az4nmt5|; zaN|_?hW$+QTc$73^a;`3d+}Ll)Z8Qa=j%GN|9{y&_wL`tc^NWB6IpDsW|g(hVC%Md z#~!#m^IOXAxWjku-+miBzk07;_Y%f$flj}DKRcY75f%1GcEh^aAr)toPGlEfELEM; z)pzyzp?=oy5tABr=Ve&7Tv@wL+9mDPrlWr!oAhp8udd`9SLHTeZdc;vFAEIRd=7i* zt8aYW$bEvlxx@Bt>zd46wkMb0bbRuhUFrLzIU;d$)}A>sD=l(!(-EcO6}RXAzq&l~ zMx^e72N4@uI-S$rt<Wv>ipH;8UtJx&#H+kjeupc*UpV@LQJ@r_^ zW?QrJGk@>4JHIb- z8_&!A?Y{Wg)$Llm;*7PA9fJxVkR7yyny% zf&8<#AElcHnrE$HZ`&27Y};`E<;ywWGDH`yt3B}imnlolVz+Xug}r<~m2GY)vaHej zntAK*s`ruU)w?Y|m{<$6z?uICo?0H-EoRryPRci7s$LaS+RNR zmX*(BzoZ>>&-V zYVVX31OK;&Bw6PK9)J@O22E+fT+-a^-+as(JX_ZmonrgE$j!n54kI+AClvW;U1{K( z6LhK3_WegCIR!Y>Iocfb!Evh9k~uXEyG0AGGOn{a5X!#e6+^h}gQg=jJ%18bbnd#q zY#Jn<#nk+CtJL(#e9t=7R>&==YIw!CiXFt*5Mz5I;OBym(RM3>E@`};$GW?#p<%XI z!DXhrr~|&-J2Dfm`f@L2WSM;-%k#SYnd-C5S{y4B7Bn?*F@YEg3KE(MA(^?Ntcr>A z&K!TZYW@7dTdIF$JBmZybAT;|U2+yT%m$pFrh2j=iR(_&;` z0AX%mmW(e-%_-K`1Cj4{@3*lBW=e&!)S}|d{5)GFLp=i}h19&{{FKbRbX%p;k~Ccl zC3`!Ypwyhi5}=CWjLd>!1)!F^Vq2w*l9B=|ef{F(jMUu3V!ix=)I6X}T7FS(VhNC2 zl&)Wpn4F!Mo~mzTU|^;Xv=L#35~`UBA(aKG#F&_$mX?{E>H;lMuo$e5szOO2B(W$x zwZv9QAEPW%Qt(W%RSGgpOtnlkNU}6AO|>*hN-Aq^2d7=9DP7Rsfv?iBX_i zloX)ug9LJ7K|xMtGB_&q%komt;!PJ4e(*9I6lw)U`N^rp#lR$yo1+Jp$xY16(*_$4 z3@