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 string _dailyRptFilePath = "wwwroot/Assets/DailyReportInfo.json"; private readonly string _toolStateOwnerFilePath = "wwwroot/Assets/ToolStates.json"; private readonly string _baseDBUrl; public ProductionReportController(ILogger logger) { _logger = logger; _baseDBUrl = "http://localhost:50201/api/"; _logger.LogInformation("Base Database Address: {baseUrl}", _baseDBUrl); } public IActionResult Index() => View(); public IActionResult DailyReport() { string baseScrapeDbUrl = _baseDBUrl + "ScrapeDB/"; try { DailyReport dailyReport = DailyReportHelper.SetUpDailyReport(_logger, baseScrapeDbUrl); 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() { ManualReportEntries entries = JsonFileHandler.LoadJSONFile(_dailyRptFilePath); return View(entries); } [HttpPost] public IActionResult EditDailyReport(ManualReportEntries rpt) { rpt.Date = DateTime.Now.Date; JsonFileHandler.SaveJSONFile(rpt, _dailyRptFilePath); return RedirectToAction("DailyReport"); } }