using Microsoft.AspNetCore.Mvc; using ReportingServices.Shared.HelperClasses; using ReportingServices.Shared.Models.ProductionReport; using ReportingServices.Shared.ViewModels.ProductionReport; namespace ReportingServices.UI.Controllers { public class ProductionReportController : Controller { private readonly ILogger _logger; private readonly int _reportIndex = (int)DateTime.Now.DayOfWeek; private readonly string _dailyRptFilePath = "wwwroot/Assets/DailyReportInfo.json"; private readonly string _toolStateOwnerFilePath = "wwwroot/Assets/ToolStates.json"; public ProductionReportController(ILogger logger) { _logger = logger; } public IActionResult Index() { return View(); } public IActionResult DailyReport() { try { DailyReport dailyReport = DailyReportHelper.SetUpDailyReport().Result; Dictionary> toolStateOwners = JsonFileHandler.LoadJSONFile>>(_toolStateOwnerFilePath); dailyReport.ToolStatesByOwner = toolStateOwners; return View(dailyReport); } catch (Exception ex) { _logger.LogCritical(ex, "Failed to load report"); return View(); } } public IActionResult EditDailyReport() { Dictionary> entries = JsonFileHandler.LoadJSONFile>>(_dailyRptFilePath); ManualReportEntries rpt = entries["Current Week"][_reportIndex]; return View(rpt); } [HttpPost] public IActionResult EditDailyReport(ManualReportEntries rpt) { Dictionary> report = JsonFileHandler.LoadJSONFile>>(_dailyRptFilePath); rpt.Date = DateTime.Parse(DateTime.Now.ToShortDateString()); rpt.Day = DateTime.Now.DayOfWeek; report["Current Week"][_reportIndex] = rpt; JsonFileHandler.SaveJSONFile(report, _dailyRptFilePath); return RedirectToAction("DailyReport"); } } }