CourseWork_BankYouBankrupt/BankYouBankrupt/BankYouBankruptRestAPI/Controllers/ReportController.cs

260 lines
7.0 KiB
C#
Raw Normal View History

using BankYouBankruptBusinessLogic.BusinessLogics;
using BankYouBankruptContracts.BindingModels;
using BankYouBankruptContracts.BusinessLogicsContracts;
using BankYouBankruptContracts.SearchModels;
using BankYouBankruptContracts.ViewModels;
2023-05-19 20:11:24 +04:00
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;
2023-05-18 14:45:28 +04:00
public ReportController(ILogger<ReportController> logger, IReportClientLogic reportClientLogic, IReportCashierLogic reportCashierLogic)
{
_logger = logger;
_reportClientLogic = reportClientLogic;
_reportCashierLogic = reportCashierLogic;
}
2023-05-19 23:32:09 +04:00
#region Работа с pdf
//метод генерации отчёта за период по картам клиента
[HttpPost]
public ReportClientViewModelForHTML CreateClientReport(ReportSupportBindingModel model)
{
try
{
var result = _reportClientLogic.SaveClientReportToPdfFile(new ReportBindingModel
{
FileName = "Отчёт_поартам.pdf",
DateFrom = model.DateFrom,
2023-05-20 01:43:20 +04:00
DateTo = model.DateTo,
Role = MailsEnum.Клиент,
2023-05-20 02:03:01 +04:00
Email = model.Email
});
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,
2023-05-20 02:03:01 +04:00
DateTo = model.DateTo,
Role = MailsEnum.Кассир,
Email = model.Email
});
return result;
}
catch (Exception ex)
{
_logger.LogError(ex, "Ошибка входа в систему");
throw;
}
}
2023-05-19 23:32:09 +04:00
#endregion
#region Работа с Excel
2023-05-19 20:11:24 +04:00
//отчёт клиента Excel по переводу денег
[HttpPost]
2023-05-19 20:11:24 +04:00
public void CreateExcelClient(ReportSupportBindingModel model)
{
try
{
2023-05-19 20:11:24 +04:00
_reportClientLogic.SaveToExcelFile(new ReportBindingModel
{
2023-05-19 23:32:09 +04:00
FileName = "Отчёт по переводам.xlsx",
2023-05-20 04:48:52 +04:00
CardList = model.CardList,
Email = model.Email
2023-05-19 23:32:09 +04:00
}, OfficeOperationEnum.Между_cчетами);
}
catch (Exception ex)
{
_logger.LogError(ex, "Ошибка входа в систему");
throw;
}
}
2023-05-19 20:11:24 +04:00
//отчёт клиента Excel по переводу денег
[HttpPost]
2023-05-19 20:11:24 +04:00
public void CreateExcelCrediting(ReportSupportBindingModel model)
{
try
{
2023-05-19 20:11:24 +04:00
_reportClientLogic.SaveToExcelFile(new ReportBindingModel
{
2023-05-19 23:32:09 +04:00
FileName = "Отчёт по пополнениям.xlsx",
2023-05-20 04:48:52 +04:00
CardList = model.CardList,
Email = model.Email
2023-05-19 23:32:09 +04:00
}, OfficeOperationEnum.Пополнениеарт);
}
catch (Exception ex)
{
_logger.LogError(ex, "Ошибка входа в систему");
throw;
}
}
2023-05-19 20:32:27 +04:00
//отчёт клиента Excel по выдаче денег
[HttpPost]
public void CreateExcelDebiting(ReportSupportBindingModel model)
{
try
{
_reportClientLogic.SaveToExcelFile(new ReportBindingModel
{
2023-05-19 23:32:09 +04:00
FileName = "Отчёт по снятиям.xlsx",
2023-05-20 04:48:52 +04:00
CardList = model.CardList,
Email = model.Email
2023-05-19 23:32:09 +04:00
}, OfficeOperationEnum.Cнятие_сарты);
2023-05-19 20:32:27 +04:00
}
catch (Exception ex)
{
_logger.LogError(ex, "Ошибка входа в систему");
throw;
}
}
//отчёт клиента Excel по переводу денег
[HttpPost]
public void CreateExcelCashier(ReportSupportBindingModel model)
{
try
{
2023-05-19 20:40:03 +04:00
_reportCashierLogic.SaveAccountsToExcelFile(new ReportBindingModel
2023-05-19 20:32:27 +04:00
{
2023-05-19 23:32:09 +04:00
FileName = "Отчёт по зявкам на снятие.xlsx",
2023-05-20 04:48:52 +04:00
AccountId = model.AccountId,
Email = model.Email
2023-05-19 23:32:09 +04:00
});
}
catch (Exception ex)
{
_logger.LogError(ex, "Ошибка входа в систему");
throw;
}
}
#endregion
#region Работа с word
//отчёт клиента Word по переводу денег
[HttpPost]
public void CreateWordClient(ReportSupportBindingModel model)
{
try
{
_reportClientLogic.SaveToWordFile(new ReportBindingModel
{
FileName = "Отчёт по переводам.docx",
2023-05-20 04:48:52 +04:00
CardList = model.CardList,
Email = model.Email
2023-05-19 23:32:09 +04:00
}, OfficeOperationEnum.Между_cчетами);
}
catch (Exception ex)
{
_logger.LogError(ex, "Ошибка входа в систему");
throw;
}
}
//отчёт клиента Word по переводу денег
[HttpPost]
public void CreateWordCrediting(ReportSupportBindingModel model)
{
try
{
_reportClientLogic.SaveToWordFile(new ReportBindingModel
{
FileName = "Отчёт по пополнениям.docx",
2023-05-20 04:48:52 +04:00
CardList = model.CardList,
Email = model.Email
2023-05-19 23:32:09 +04:00
}, OfficeOperationEnum.Пополнениеарт);
}
catch (Exception ex)
{
_logger.LogError(ex, "Ошибка входа в систему");
throw;
}
}
//отчёт клиента Word по выдаче денег
[HttpPost]
public void CreateWordDebiting(ReportSupportBindingModel model)
{
try
{
_reportClientLogic.SaveToWordFile(new ReportBindingModel
{
FileName = "Отчёт по снятиям.docx",
2023-05-20 04:48:52 +04:00
CardList = model.CardList,
Email = model.Email
2023-05-19 23:32:09 +04:00
}, OfficeOperationEnum.Cнятие_сарты);
}
catch (Exception ex)
{
_logger.LogError(ex, "Ошибка входа в систему");
throw;
}
}
//отчёт клиента Word по переводу денег
[HttpPost]
public void CreateWordCashier(ReportSupportBindingModel model)
{
try
{
_reportCashierLogic.SaveAccountsToWordFile(new ReportBindingModel
{
FileName = "Отчёт по зявкам на снятие.docx",
2023-05-20 04:48:52 +04:00
AccountId = model.AccountId,
Email = model.Email
2023-05-19 20:40:03 +04:00
});
2023-05-19 20:32:27 +04:00
}
catch (Exception ex)
{
_logger.LogError(ex, "Ошибка входа в систему");
throw;
}
}
2023-05-19 23:32:09 +04:00
#endregion
}
}