public List <BalanceMessages> DetermineBalanceMessages(string fieldName) { List <BalanceMessages> messages = new List <BalanceMessages>(); bool legume = false; string message = string.Empty; BalanceMessages bm = new BalanceMessages(); //get soil test values ConversionFactor _cf = _sd.GetConversionFactor(); //get the chemical balances ChemicalBalances cb = GetChemicalBalances(fieldName); //determine if a legume is included in the crops List <FieldCrop> fieldCrops = _ud.GetFieldCrops(fieldName); if (fieldCrops.Count > 0) { foreach (var _crop in fieldCrops) { Crop crop = _sd.GetCrop(Convert.ToInt16(_crop.cropId)); if (crop.n_recommcd == 1) // no nitrogen need to be added { legume = true; } } if (legume) { // get sum of agronomic N for manure, fertilizer and other for field // sum the above number with the crop removal N // use the resulting number to determine message long LegumeAgronomicN = GetLegumeAgronomicN(fieldName); int LegumeRemovalN = GetLegumeRemovalN(fieldName); bm = _sd.GetMessageByChemicalBalance("AgrN", LegumeAgronomicN + LegumeRemovalN, legume); if (bm != null) { messages.Add(bm); } } else { bm = _sd.GetMessageByChemicalBalance("AgrN", chemicalBalances.balance_AgrN, legume); if (bm != null) { messages.Add(bm); } } bm = _sd.GetMessageByChemicalBalance("AgrP2O5", chemicalBalances.balance_AgrP2O5, legume); if (bm != null) { messages.Add(bm); } bm = _sd.GetMessageByChemicalBalance("AgrK2O", chemicalBalances.balance_AgrK2O, legume); if (bm != null) { messages.Add(bm); } bm = _sd.GetMessageByChemicalBalance("CropN", chemicalBalances.balance_CropN, legume); if (bm != null) { messages.Add(bm); } bm = _sd.GetMessageByChemicalBalance("CropP2O5", chemicalBalances.balance_CropP2O5, legume); if (bm != null) { messages.Add(bm); } bm = _sd.GetMessageByChemicalBalance("CropK2O", chemicalBalances.balance_CropK2O, legume); if (!string.IsNullOrEmpty(bm.Chemical)) { messages.Add(bm); } bm = _sd.GetMessageByChemicalBalance("AgrP2O5CropP2O5", chemicalBalances.balance_AgrP2O5, chemicalBalances.balance_CropP2O5, "CropP2O5"); if (bm != null) { messages.Add(bm); } } return(messages); }