private async Task <CalcFeedAreaModel> GetFeedAreaAsync(string fieldName) { //var analytic = _ud.GetFeedForageAnalysis(fieldName); var field = _ud.GetFieldDetails(fieldName); var region = _sd.GetRegion(_ud.FarmDetails().FarmRegion.Value); CalcFeedAreaModel model = null; if (field.FeedForageAnalyses != null && field.FeedForageAnalyses.Any()) { model = new CalcFeedAreaModel { FieldId = field.Id, FieldName = fieldName, NAgroBalance = _feedCalculator.GetNitrogenAgronomicBalance(field, region), P205AgroBalance = _feedCalculator.GetP205AgronomicBalance(field), K20AgroBalance = _feedCalculator.GetK20AgronomicBalance(field), NCropRemovalValue = _feedCalculator.GetNitrogenCropRemovalValue(field, region), P205CropRemovalValue = _feedCalculator.GetP205CropRemovalValue(field), K20CropRemovalValue = _feedCalculator.GetK20CropRemovalValue(field) }; } return(await Task.FromResult(model)); }
public ChemicalBalances GetChemicalBalances(Field field, int farmRegionId, string year) { chemicalBalances.balance_AgrN = 0; chemicalBalances.balance_AgrP2O5 = 0; chemicalBalances.balance_AgrK2O = 0; chemicalBalances.balance_CropN = 0; chemicalBalances.balance_CropP2O5 = 0; chemicalBalances.balance_CropK2O = 0; //List<FieldCrop> crps = _ud.GetFieldCrops(fldName); foreach (var c in field.Crops) { chemicalBalances.balance_AgrN -= Convert.ToInt64(c.reqN); chemicalBalances.balance_AgrP2O5 -= Convert.ToInt64(c.reqP2o5); chemicalBalances.balance_AgrK2O -= Convert.ToInt64(c.reqK2o); chemicalBalances.balance_CropN -= Convert.ToInt64(c.remN); chemicalBalances.balance_CropP2O5 -= Convert.ToInt64(c.remP2o5); chemicalBalances.balance_CropK2O -= Convert.ToInt64(c.remK2o); } if (field.HasNutrients) { //List<NutrientManure> manures = _ud.GetFieldNutrientsManures(fldName); foreach (var m in field.Nutrients.nutrientManures) { chemicalBalances.balance_AgrN += Convert.ToInt64(m.yrN); chemicalBalances.balance_AgrP2O5 += Convert.ToInt64(m.yrP2o5); chemicalBalances.balance_AgrK2O += Convert.ToInt64(m.yrK2o); chemicalBalances.balance_CropN += Convert.ToInt64(m.ltN); chemicalBalances.balance_CropP2O5 += Convert.ToInt64(m.ltP2o5); chemicalBalances.balance_CropK2O += Convert.ToInt64(m.ltK2o); } //List<NutrientFertilizer> fertilizers = _ud.GetFieldNutrientsFertilizers(fldName); foreach (var f in field.Nutrients.nutrientFertilizers) { chemicalBalances.balance_AgrN += Convert.ToInt64(f.fertN); chemicalBalances.balance_AgrP2O5 += Convert.ToInt64(f.fertP2o5); chemicalBalances.balance_AgrK2O += Convert.ToInt64(f.fertK2o); chemicalBalances.balance_CropN += Convert.ToInt64(f.fertN); chemicalBalances.balance_CropP2O5 += Convert.ToInt64(f.fertP2o5); chemicalBalances.balance_CropK2O += Convert.ToInt64(f.fertK2o); } //List<NutrientOther> others = _ud.GetFieldNutrientsOthers(fldName); foreach (var m in field.Nutrients.nutrientOthers) { chemicalBalances.balance_AgrN += Convert.ToInt64(m.ltN); chemicalBalances.balance_AgrP2O5 += Convert.ToInt64(m.ltP2o5); chemicalBalances.balance_AgrK2O += Convert.ToInt64(m.ltK); chemicalBalances.balance_CropN += Convert.ToInt64(m.yrN); chemicalBalances.balance_CropP2O5 += Convert.ToInt64(m.yrP2o5); chemicalBalances.balance_CropK2O += Convert.ToInt64(m.yrK); } } if (field.IsSeasonalFeedingArea && field.FeedForageAnalyses != null && field.FeedForageAnalyses.Any()) { var region = _sd.GetRegion(farmRegionId); chemicalBalances.balance_AgrN += Convert.ToInt64(_feedCalculator.GetNitrogenAgronomicBalance(field, region)); chemicalBalances.balance_AgrP2O5 += Convert.ToInt64(_feedCalculator.GetP205AgronomicBalance(field)); chemicalBalances.balance_AgrK2O += Convert.ToInt64(_feedCalculator.GetK20AgronomicBalance(field)); chemicalBalances.balance_CropN += Convert.ToInt64(_feedCalculator.GetNitrogenCropRemovalValue(field, region)); chemicalBalances.balance_CropP2O5 += Convert.ToInt64(_feedCalculator.GetP205CropRemovalValue(field)); chemicalBalances.balance_CropK2O += Convert.ToInt64(_feedCalculator.GetK20CropRemovalValue(field)); } // include the Nitrogren credit as a result of adding manure in previous years // lookup default Nitrogen credit. //Field field = _ud.GetFieldDetails(fldName); if (field.Crops != null) { if (field.PreviousYearManureApplicationNitrogenCredit != null && field.Crops.Count() > 0) { chemicalBalances.balance_AgrN += Convert.ToInt32(field.PreviousYearManureApplicationNitrogenCredit); } else { // accomodate previous version of farm data - lookup default Nitrogen credit. chemicalBalances.balance_AgrN += CalcPrevYearManureApplDefault(field); } if (field.SoilTest != null) { if (_sd.IsNitrateCreditApplicable(farmRegionId, field.SoilTest.sampleDate, Convert.ToInt16(year))) { if (field.SoilTestNitrateOverrideNitrogenCredit != null && field.Crops.Count() > 0) { chemicalBalances.balance_AgrN += Convert.ToInt32(Math.Round(Convert.ToDecimal(field.SoilTestNitrateOverrideNitrogenCredit))); } else { // accomodate previous version of farm data - lookup default Nitrogen credit. chemicalBalances.balance_AgrN += Convert.ToInt32(Math.Round(CalcSoitTestNitrateDefault(field))); } } } } return(chemicalBalances); }
public void GetP205AgronomicBalanceShouldBeCorrectValue() { var result = _calculator.GetP205AgronomicBalance(GetTestField()); result.ShouldBe(99); }