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);
        }