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 _baseUrlFabtime = "https://localhost:7196/api/FabTime/"; private static readonly string _baseUrlScrapeDb = "https://localhost:7196/api/ScrapeDB/"; public async static Task SetUpDailyReport() { List>> tasksEQState = new(); List>> tasksState = new(); DailyReport report = new(); 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")); report.QuarterlyTargets = await ApiCaller.GetApi(_baseUrlScrapeDb + "Targets"); Dictionary> entries = JsonFileHandler.LoadJSONFile>>(_dailyRptFilePath); report.CurrentEntries = entries["Current Week"]; report.PreviousEntries = entries["Previous Week"]; 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.SetRDSInfo(await ApiCaller.GetApi>(_baseUrlScrapeDb + "RDS")); report.SetReactorInfo(await ApiCaller.GetApi>(_baseUrlScrapeDb + "Reactors"), GetUnscheduledReactors(report)); report.CurrentWeek.SetYieldInformation(task1.Result); report.PreviousWeek.SetYieldInformation(task2.Result); report.ReverseLists(); entries["Current Week"] = report.CurrentEntries; JsonFileHandler.SaveJSONFile(entries, _dailyRptFilePath); 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; } } }