using CarServiceContracts.BindingModels; using CarServiceContracts.BusinessLogicsContracts; using CarServiceWebApp.Models; using log4net; using Microsoft.AspNetCore.Mvc; namespace CarServiceWebApp.Controllers { public class ReportController : Controller { private readonly IReportLogic _reportLogic; private readonly IWorkLogic _workLogic; private static List SelectedWorks = new(); private static ReportBindingModel PaymentsModel = new(); public ReportController(IReportLogic reportLogic, IWorkLogic workLogic) { _reportLogic = reportLogic; _workLogic = workLogic; } public IActionResult Index() { if (CurrentUser.UserId < 1) { return Redirect("~/Home/Enter"); } return View(); } public IActionResult ReportRequestsByWorks() { if (CurrentUser.UserId < 1) { return Redirect("~/Home/Enter"); } var requestsByWorks = _reportLogic.GetRequestsByWorks(new() { SelectedWorks = SelectedWorks } ); ViewBag.RequestsByWorks = requestsByWorks; return View(); } [HttpGet] public IActionResult WorksSelection() { if (CurrentUser.UserId < 1) { return Redirect("~/Home/Enter"); } var works = _workLogic.ReadList(new() { Id = CurrentUser.UserId}); ViewBag.Works = works; return View(); } [HttpPost] public IActionResult WorksSelection(List selwor) { SelectedWorks = selwor; return Redirect("~/Report/ReportRequestsByWorks"); } [HttpGet] public IActionResult DateSelection() { if (CurrentUser.UserId < 1) { return Redirect("~/Home/Enter"); } return View(); } [HttpPost] public IActionResult DateSelection(DateTime dateFrom, DateTime dateTo) { PaymentsModel = new() { DateFrom = dateFrom, DateTo = dateTo }; return Redirect("~/Report/ReportPayments"); } public IActionResult ReportPayments() { var payments = _reportLogic.GetPayments(PaymentsModel); ViewBag.Payments = payments; return View(); } public IActionResult SaveToWord() { _reportLogic.SaveComponentsToWordFile(new ReportBindingModel { SelectedWorks = SelectedWorks, FileName = "C:\\Users\\igors\\source\\repos\\ISEbd-21_Melnikov_I.O._CarService\\CarService\\CarServiceWebApp\\Files\\ReportWord.docx" }); return Redirect("~/Report/DownLoadWord"); } public IActionResult DownLoadWord() { string filePath = "C:\\Users\\igors\\source\\repos\\ISEbd-21_Melnikov_I.O._CarService\\CarService\\CarServiceWebApp\\Files\\ReportWord.docx"; string fileName = "Отчет.docx"; byte[] fileBytes = System.IO.File.ReadAllBytes(filePath); return File(fileBytes, "application/force-download", fileName); } } }