using Microsoft.AspNetCore.Mvc; using ServiceStationBusinessLogic.MailWorker; using ServiceStationContracts.BindingModels; using ServiceStationContracts.BusinessLogicsContracts; namespace ServiceStationRestApi.Controllers { [Route("api/[controller]/[action]")] [ApiController] public class ReportController : Controller { private readonly ILogger _logger; private readonly IExecutorReportLogic _executorReportLogic; private readonly IGuarantorReportLogic _guarantorReportLogic; private readonly AbstractMailWorker _mailWorker; public ReportController(ILogger logger, IExecutorReportLogic executorReportLogic, IGuarantorReportLogic guarantorReportLogic) { _logger = logger; _executorReportLogic = executorReportLogic; _guarantorReportLogic = guarantorReportLogic; _mailWorker = mailWorker; } [HttpPost] public void CreateExecutorReportToWord(ReportExecutorBindingModel model) { try { _executorReportLogic.SaveWorkByCarsWordFile(model); } catch (Exception ex) { _logger.LogError(ex, "Ошибка создания отчета"); throw; } } [HttpPost] public void CreateExecutorReportToExcel(ReportExecutorBindingModel model) { try { _executorReportLogic.SaveWorkByCarsToExcelFile(model); } catch (Exception ex) { _logger.LogError(ex, "Ошибка создания отчета"); throw; } } [HttpPost] public void CreateExecutorReportToPdf(ReportExecutorBindingModel model) { try { _executorReportLogic.SaveTechWorkAndRepairsByCarsToPdfFile(new ReportExecutorBindingModel { FileName = model.FileName, DateFrom = model.DateFrom, DateTo = model.DateTo, ExecutorId = model.ExecutorId, }); } catch (Exception ex) { _logger.LogError(ex, "Ошибка создания отчета"); throw; } } [HttpPost] public void CreateGuarantorReportToWord(ReportGuarantorBindingModel model) { try { _guarantorReportLogic.SaveDefectsToWordFile(model); } catch (Exception ex) { _logger.LogError(ex, "Ошибка создания отчета"); throw; } } [HttpPost] public void CreateGuarantorReportToExcel(ReportGuarantorBindingModel model) { try { _guarantorReportLogic.SaveDefectsToExcelFile(model); } catch (Exception ex) { _logger.LogError(ex, "Ошибка создания отчета"); throw; } } [HttpPost] public void CreateGuarantorReportToPdf(ReportGuarantorBindingModel model) { try { _guarantorReportLogic.SaveSparePartsToPdfFile(new ReportGuarantorBindingModel { FileName = model.FileName, DateFrom = model.DateFrom, DateTo = model.DateTo, GuarantorId = model.GuarantorId, }); } catch (Exception ex) { _logger.LogError(ex, "Ошибка создания отчета"); throw; } } [HttpPost] public void SendPdfToMail(MailSendInfoBindingModel model) { try { _mailWorker.MailSendAsync(model); } catch (Exception ex) { _logger.LogError(ex, "Ошибка отправки письма"); throw; } } } }