using BankYouBankruptBusinessLogic.BusinessLogics; using BankYouBankruptContracts.BindingModels; using BankYouBankruptContracts.BusinessLogicsContracts; using BankYouBankruptContracts.SearchModels; using BankYouBankruptContracts.ViewModels; using BankYouBankruptDataModels.Enums; using BankYouBankruptRestApi.Controllers; using DocumentFormat.OpenXml.Office2016.Drawing.ChartDrawing; using Microsoft.AspNetCore.Mvc; using Org.BouncyCastle.Utilities; using System.Net; namespace BankYouBankruptRestAPI.Controllers { //указание у контроллера, что Route будет строиться не только по наванию контроллера, но и по названию метода (так как у нас два Post-метода) [Route("api/[controller]/[action]")] [ApiController] public class ReportController : Controller { private readonly ILogger _logger; private readonly IReportClientLogic _reportClientLogic; private readonly IReportCashierLogic _reportCashierLogic; //хранят данные для отображения отчёта на вебе private ReportClientViewModelForHTML _reportClientViewModelForHTML; private ReportCashierViewModelForHTML _reportCashierViewModelForHTML; public ReportController(ILogger logger, IReportClientLogic reportClientLogic, IReportCashierLogic reportCashierLogic) { _logger = logger; _reportClientLogic = reportClientLogic; _reportCashierLogic = reportCashierLogic; } #region Работа с pdf //метод генерации отчёта за период по картам клиента [HttpPost] public ReportClientViewModelForHTML CreateClientReport(ReportSupportBindingModel model) { try { var result = _reportClientLogic.SaveClientReportToPdfFile(new ReportBindingModel { FileName = "Отчёт_по_картам.pdf", DateFrom = model.DateFrom, DateTo = model.DateTo }); return result; } catch (Exception ex) { _logger.LogError(ex, "Ошибка входа в систему"); throw; } } //метод генерации отчёта по всем счетм клиентов [HttpPost] public ReportCashierViewModelForHTML CreateCashierReport(ReportSupportBindingModel model) { try { var result = _reportCashierLogic.SaveAccountsToPdfFile(new ReportBindingModel { FileName = "Отчёт_по_счетам.pdf", ClientId = model.ClientId, DateFrom = model.DateFrom, DateTo = model.DateTo }); return result; } catch (Exception ex) { _logger.LogError(ex, "Ошибка входа в систему"); throw; } } #endregion #region Работа с Excel //отчёт клиента Excel по переводу денег [HttpPost] public void CreateExcelClient(ReportSupportBindingModel model) { try { _reportClientLogic.SaveToExcelFile(new ReportBindingModel { FileName = "Отчёт по переводам.xlsx", CardList = model.CardList }, OfficeOperationEnum.Между_cчетами); } catch (Exception ex) { _logger.LogError(ex, "Ошибка входа в систему"); throw; } } //отчёт клиента Excel по переводу денег [HttpPost] public void CreateExcelCrediting(ReportSupportBindingModel model) { try { _reportClientLogic.SaveToExcelFile(new ReportBindingModel { FileName = "Отчёт по пополнениям.xlsx", CardList = model.CardList }, OfficeOperationEnum.Пополнение_карт); } catch (Exception ex) { _logger.LogError(ex, "Ошибка входа в систему"); throw; } } //отчёт клиента Excel по выдаче денег [HttpPost] public void CreateExcelDebiting(ReportSupportBindingModel model) { try { _reportClientLogic.SaveToExcelFile(new ReportBindingModel { FileName = "Отчёт по снятиям.xlsx", CardList = model.CardList }, OfficeOperationEnum.Cнятие_с_карты); } catch (Exception ex) { _logger.LogError(ex, "Ошибка входа в систему"); throw; } } //отчёт клиента Excel по переводу денег [HttpPost] public void CreateExcelCashier(ReportSupportBindingModel model) { try { _reportCashierLogic.SaveAccountsToExcelFile(new ReportBindingModel { FileName = "Отчёт по зявкам на снятие.xlsx", AccountId = model.AccountId }); } catch (Exception ex) { _logger.LogError(ex, "Ошибка входа в систему"); throw; } } #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 } }