using ReportingServices.Shared.Models.ProductionReport; namespace ReportingServices.Shared.ViewModels.ProductionReport { public class YieldStatistics { public DateTime StartDate { get; set; } public List OutsByDay { get; set; } public List ScrapByDay { get; set; } public bool IsCurrentWeek { get; set; } public YieldStatistics(DateTime startDate, bool isCurrentWeek) { StartDate = startDate; IsCurrentWeek = isCurrentWeek; } public void SetYieldInformation(List outs, List scrap) { OutsByDay = GetReactorOutsByDay(outs); ScrapByDay = scrap; } public static List GetDistinctDatesFromReactorOuts(List outs) { List dates = new(); foreach (ReactorOutsByRDS rout in outs) { if (!dates.Contains(DateTime.Parse(rout.EndProcessTime).Date.ToString())) dates.Add(DateTime.Parse(rout.EndProcessTime).Date.ToString()); } return dates; } public static List GetReactorOutsByDay(List outs) { List outsByDay = new(); List dates = GetDistinctDatesFromReactorOuts(outs); foreach (string date in dates) { int waferCount = 0; foreach (ReactorOutsByRDS rout in outs) { if (DateTime.Parse(rout.EndProcessTime).Date.ToString() == date) waferCount += (int)float.Parse(rout.Units); } outsByDay.Add(new ReactorOutsByDay { StartDate = date, TotalWafers = waferCount }); } return outsByDay; } } }