using ReportingServices.Shared.Repositories; using ReportingServices.Shared.Models.ProductionReport; using ReportingServices.Shared.ViewModels.ProductionReport; namespace ReportingServices.Shared.HelperClasses { public static class DailyReportHelper { private static readonly string _dailyRptFilePath = "wwwroot/Assets/DailyReportInfo.json"; private static readonly string _SLLFilePath = "wwwroot/Assets/SLLTools.json"; private static readonly string _baseUrlFabtime = "https://localhost:7196/api/FabTime/"; private static readonly string _baseUrlScrapeDb = "https://localhost:7196/api/ScrapeDB/"; public static DailyReport SetUpDailyReport() { List>> tasksEQState = new(); List>> tasksState = new(); DailyReport report = new() { SLLTools = JsonFileHandler.LoadJSONFile>(_SLLFilePath), ManualReportEntries = JsonFileHandler.LoadJSONFile(_dailyRptFilePath) }; Task task1 = ApiCaller.GetApi(_baseUrlFabtime + "ReactorOuts?startDate=" + report.StartDate.ToString() + "&endDate=" + DateTime.Now.ToString()); Task task2 = ApiCaller.GetApi(_baseUrlFabtime + "ReactorOuts?startDate=" + report.StartDate.AddDays(-7).ToString() + "&endDate=" + report.StartDate.ToString()); tasksEQState.Add(ApiCaller.GetApi>(_baseUrlFabtime + "ToolStateTrend?toolType=ASM")); tasksEQState.Add(ApiCaller.GetApi>(_baseUrlFabtime + "ToolStateTrend?toolType=EPP")); tasksEQState.Add(ApiCaller.GetApi>(_baseUrlFabtime + "ToolStateTrend?toolType=HTR")); tasksState.Add(ApiCaller.GetApi>(_baseUrlFabtime + "ToolState?toolType=ASM")); tasksState.Add(ApiCaller.GetApi>(_baseUrlFabtime + "ToolState?toolType=EPP")); tasksState.Add(ApiCaller.GetApi>(_baseUrlFabtime + "ToolState?toolType=HTR")); tasksState.Add(ApiCaller.GetApi>(_baseUrlFabtime + "ToolState?toolType=Metrology")); tasksState.Add(ApiCaller.GetApi>(_baseUrlFabtime + "ToolState?toolType=Cleans")); Task targets = ApiCaller.GetApi(_baseUrlScrapeDb + "Targets"); Task> rds = ApiCaller.GetApi>(_baseUrlScrapeDb + "RDS?date=" + report.StartDate.ToString()); Task> reactors = ApiCaller.GetApi>(_baseUrlScrapeDb + "Reactors"); report.AddToolAvailibilityByType("ASM", tasksEQState[0].Result); report.AddToolAvailibilityByType("EPP", tasksEQState[1].Result); report.AddToolAvailibilityByType("HTR", tasksEQState[2].Result); report.AddToolStateByType("ASM", tasksState[0].Result); report.AddToolStateByType("EPP", tasksState[1].Result); report.AddToolStateByType("HTR", tasksState[2].Result); report.AddToolStateByType("Metrology", tasksState[3].Result); report.AddToolStateByType("Cleans", tasksState[4].Result); report.QuarterlyTargets = targets.Result; report.SetRDSInfo(rds.Result); report.SetReactorInfo(reactors.Result, GetUnscheduledReactors(report)); report.CurrentWeek.SetYieldInformation(task1.Result, report.QuarterlyTargets); report.PreviousWeek.SetYieldInformation(task2.Result, report.QuarterlyTargets); report.ReverseLists(); ManualReportEntries entries = report.ManualReportEntries; List sll = report.SLLTools; JsonFileHandler.SaveJSONFile(entries, _dailyRptFilePath); JsonFileHandler.SaveJSONFile(sll, _SLLFilePath); return report; } public static List GetUnscheduledReactors(DailyReport report) { List reactors = new(); foreach (KeyValuePair keyValuePairs in report.ToolStateByType) { if (keyValuePairs.Key != "Metrology" && keyValuePairs.Key != "Cleans") { foreach (ToolStateCurrent tool in keyValuePairs.Value.ToolStateCurrents) { if (tool.BasicStateDescription != "Productive" && tool.ReactorStatus != "Out of Service") { reactors.Add(int.Parse(tool.Tool.Substring(1))); } } } } return reactors; } } }