public AppliedImportedManure(List <FieldAppliedManure> fieldAppliedManures, ImportedManure importedManure) : base(fieldAppliedManures) { ImportedManure = importedManure; }
private List <FieldAppliedManure> CalculateFieldAppliedImportedManure(YearData yearData, FarmManure farmManure, ImportedManure importedManure) { var fieldAppliedManures = new List <FieldAppliedManure>(); var fieldsAppliedWithImportedManure = yearData .GetFieldsAppliedWithManure(farmManure) .Where(f => !fieldAppliedManures.Any(fam => fam.FieldId == f.Id)).ToList(); foreach (var field in fieldsAppliedWithImportedManure) { var nutrientManures = field?.Nutrients.nutrientManures .Where(nm => Convert.ToInt32(nm.manureId) == farmManure.Id) .ToList() ?? new List <NutrientManure>(); foreach (var nutrientManure in nutrientManures) { var fieldAppliedManure = new FieldAppliedManure() { FieldId = field.Id }; if (importedManure.ManureType == ManureMaterialType.Liquid) { var convertedRate = _manureUnitConversionCalculator .GetLiquidUSGallonsPerAcreApplicationRate(nutrientManure.rate, (ApplicationRateUnits)Convert.ToInt32(nutrientManure.unitId)); fieldAppliedManure.USGallonsApplied = field.Area * convertedRate; } else { var convertedRate = _manureUnitConversionCalculator .GetSolidsTonsPerAcreApplicationRate(importedManure.Moisture.Value, nutrientManure.rate, (ApplicationRateUnits)Convert.ToInt32(nutrientManure.unitId)); fieldAppliedManure.TonsApplied = field.Area * convertedRate; } fieldAppliedManures.Add(fieldAppliedManure); } } return(fieldAppliedManures); }