public IActionResult MaterialUsage() { MaterialUsageViewModel materials = new MaterialUsageViewModel(_materialDetailsRepository, _BatchRepository) { //DateSelectorModal = _dateSelector.GetDateSelectorDetails() }; materials.DateSelectorModal.TimeFrame = "year"; materials.DateSelectorModal.Week = 35; materials.DateSelectorModal.Year = 2020; return(View(materials)); }
public IActionResult MaterialUsageSingle(string name, DateSelectorModal dateSelectorModal) { List <BatchReport> reports = new List <BatchReport>(); MaterialDetails details = _materialDetailsRepository.GetSingleMaterial(name); MaterialUsageViewModel materialUsageViewModel = new MaterialUsageViewModel(); materialUsageViewModel.Name = details.Name; materialUsageViewModel.ProductCode = details.ProductCode; materialUsageViewModel.ShortName = details.ShortName; materialUsageViewModel.CostPerTon = details.CostPerTon; materialUsageViewModel.DateSelectorModal = dateSelectorModal; reports = helper.GetBatchReportsForDateSelector(materialUsageViewModel.DateSelectorModal); materialUsageViewModel.streamInfo = GetStreamMatVarBreakdown(reports, details.Name); CalculateWeeklyUsageForSetTimePeriod(materialUsageViewModel, reports, details); materialUsageViewModel.WeeklyUsage = materialUsageViewModel.WeeklyUsage.OrderBy(x => x.Year).ThenBy(x => x.WeekNo).ToList(); return(View("MaterialUsageSingle", materialUsageViewModel)); }
private void CalculateWeeklyUsageForSetTimePeriod(MaterialUsageViewModel materialUsageViewModel, List <BatchReport> reports, MaterialDetails details) { foreach (var report in reports) { foreach (var vessel in report.AllVessels) { foreach (var material in vessel.Materials) { if (material.Name == details.Name) { double target = material.TargetWeight; double actual = material.ActualWeight; if (material.Name.Contains("DYE")) { target = helper.CalculateDyeAmountInSolution(material.Name, material.TargetWeight); actual = helper.CalculateDyeAmountInSolution(material.Name, material.ActualWeight); } if (materialUsageViewModel.WeeklyUsage.Any(x => x.WeekNo == report.WeekNo && x.Year == report.StartTime.Year)) { materialUsageViewModel.WeeklyUsage.Find(x => x.WeekNo == report.WeekNo && x.Year == report.StartTime.Year).Target += target; materialUsageViewModel.WeeklyUsage.Find(x => x.WeekNo == report.WeekNo && x.Year == report.StartTime.Year).Actual += actual; } else { materialUsageViewModel.WeeklyUsage.Add( new SingleMaterialWeeklyUsage(report.WeekNo, report.StartTime.Year, target, actual, materialUsageViewModel.CostPerTon)); } materialUsageViewModel.TotalBatchesMadeWithMaterial++; } } } } materialUsageViewModel.CalculateTotals(); }