using ReportingServices.Shared.Repositories; using ReportingServices.Shared.Models.ProductionReport; using ReportingServices.Shared.ViewModels.ProductionReport; namespace ReportingServices.Shared.HelperClasses { public static class DailyReportHelper { private static IFabTimeReportingRepository _fabTimeReportingRepository; private static IScrapeDatabaseRepository _scrapeDatabaseRepository; private static readonly string _dailyRptFilePath = "wwwroot/Assets/DailyReportInfo.json"; public static void SetRepositories(IFabTimeReportingRepository fabTimeReportingRepository, IScrapeDatabaseRepository scrapeDatabaseRepository) { _fabTimeReportingRepository = fabTimeReportingRepository; _scrapeDatabaseRepository = scrapeDatabaseRepository; } public static DailyReport SetUpDailyReport() { List tasks = new(); DailyReport report = new(); Task> task1 = _fabTimeReportingRepository.GetMovesTrendData(); Task> task2 = _fabTimeReportingRepository.GetMovesTrendData(startDate: report.StartDate.AddDays(-7).ToString(), endDate: report.StartDate.ToString()); tasks.Add(_fabTimeReportingRepository.GetToolStateTrendData(report, "ASM")); tasks.Add(_fabTimeReportingRepository.GetToolStateTrendData(report, "EPP")); tasks.Add(_fabTimeReportingRepository.GetToolStateTrendData(report, "HTR")); tasks.Add(_fabTimeReportingRepository.GetToolStateData(report, "ASM")); tasks.Add(_fabTimeReportingRepository.GetToolStateData(report, "EPP")); tasks.Add(_fabTimeReportingRepository.GetToolStateData(report, "HTR")); tasks.Add(_fabTimeReportingRepository.GetToolStateData(report, "Metrology")); tasks.Add(_fabTimeReportingRepository.GetToolStateData(report, "Cleans")); report.QuarterlyTargets = _scrapeDatabaseRepository.GetQuarterlyTargets(); Dictionary> entries = JsonFileHandler.LoadJSONFile>>(_dailyRptFilePath); report.CurrentEntries = entries["Current Week"]; report.PreviousEntries = entries["Previous Week"]; report.SetRDSInfo(_scrapeDatabaseRepository.GetRDSForLastDay()); Task.WaitAll(tasks.ToArray()); report.SetReactorInfo(_scrapeDatabaseRepository.GetReactors(), GetUnscheduledReactors(report)); List scrap = _scrapeDatabaseRepository.GetScrapByDay(task1.Result); List previousScrap = _scrapeDatabaseRepository.GetScrapByDay(task2.Result); report.CurrentWeek.SetYieldInformation(task1.Result, scrap); report.PreviousWeek.SetYieldInformation(task2.Result, previousScrap); 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; } } }