public static double GetTotalMatVarCost(List <BatchIssue> issues, IMaterialDetailsRepository materialDetailsRepository) { double cost = 0; foreach (var issue in issues) { switch (issue.FaultType) { case BatchIssue.FaultTypes.Overweigh: cost += materialDetailsRepository.GetCostMaterialLoss(issue.MaterialName, issue.WeightDiffference); break; case BatchIssue.FaultTypes.Underweigh: cost += materialDetailsRepository.GetCostMaterialLoss(issue.MaterialName, issue.WeightDiffference); break; default: break; } } return(cost); }
private List <MaterialTotals> GetUnsortedTotals(List <BatchReport> reports, List <MaterialDetails> allMaterialDetails) { List <MaterialTotals> totals = new List <MaterialTotals>(); var materialsNamesIncludedInMatVar = _materialDetailsRepository.GetMaterialNamesThatAreIncludedInMatVar(); foreach (var report in reports) { foreach (var vessel in report.AllVessels) { foreach (var material in vessel.Materials) { if (materialsNamesIncludedInMatVar.Contains(material.Name)) { var tempMaterialDetail = allMaterialDetails.Where(x => x.Name == material.Name).FirstOrDefault(); double totalKg = material.TargetWeight - material.ActualWeight; if (material.Name.Contains("DYE")) { totalKg = helper.CalculateDyeAmountInSolution(material.Name, material.TargetWeight - material.ActualWeight); } if (totals.Any(x => x.Name == material.Name)) { totals.Find(x => x.Name == material.Name).TotalKg += totalKg; } else { totals.Add(new MaterialTotals { Name = material.Name, ShortName = ShortNameTo13Charactors(tempMaterialDetail.ShortName), ProductCode = tempMaterialDetail.ProductCode, TotalKg = Math.Round(totalKg, 2), Cost = Math.Round(_materialDetailsRepository.GetCostMaterialLoss(material.Name, totalKg), 2), CostPerTon = tempMaterialDetail.CostPerTon }); } } } } } return(totals); }