using BankYouBankruptBusinessLogic.BusinessLogics;
using BankYouBankruptContracts.BindingModels;
using BankYouBankruptContracts.BusinessLogicsContracts;
using BankYouBankruptContracts.SearchModels;
using BankYouBankruptContracts.ViewModels;
using BankYouBankruptRestApi.Controllers;
using Microsoft.AspNetCore.Mvc;

namespace BankYouBankruptRestAPI.Controllers
{
	//указание у контроллера, что Route будет строиться не только по наванию контроллера, но и по названию метода (так как у нас два Post-метода)
	[Route("api/[controller]/[action]")]
	[ApiController]
	public class ReportController : Controller
	{
		private readonly ILogger _logger;

		//private readonly IReportCashierLogic _reportCashierLogic;

		private readonly IReportClientLogic _reportClientLogic;

		private readonly IReportCashierLogic _reportCashierLogic;

		public ReportController(ILogger<ReportController> logger, IReportClientLogic reportClientLogic, IReportCashierLogic reportCashierLogic)
		{
			_logger = logger;
			_reportClientLogic = reportClientLogic;
			_reportCashierLogic = reportCashierLogic;
		}

		//метод генерации отчёта за период по картам клиента
		[HttpPost]
		public void CreateClientReport(ReportSupportBindingModel model)
		{
			try
			{
				_reportClientLogic.SaveClientReportToPdfFile(new ReportBindingModel
				{
					FileName = "Отчёт по картам за " + DateTime.Now.ToShortDateString() + ".pdf",
					DateFrom = model.DateFrom,
					DateTo = model.DateTo
				});
			}
			catch (Exception ex)
			{
				_logger.LogError(ex, "Ошибка входа в систему");
				throw;
			}
		}

		//метод генерации отчёта по всем счетм клиентов
		[HttpPost]
		public void CreateCashierReport(ReportSupportBindingModel model)
		{
			try
			{
				_reportCashierLogic.SaveAccountsToPdfFile(new ReportBindingModel
				{
					FileName = "Отчёт по счетам за " + DateTime.Now.ToShortDateString() + ".pdf",
					DateFrom = model.DateFrom,
					DateTo = model.DateTo
				});
			}
			catch (Exception ex)
			{
				_logger.LogError(ex, "Ошибка входа в систему");
				throw;
			}
		}
	}
}