private Task <CalcCropsViewModel> GetCropAsync(string fldName)
        {
            CalcCropsViewModel mvm = new CalcCropsViewModel();

            mvm.cropList = new List <DisplayCrop>();

            List <FieldCrop> fldCrops = _ud.GetFieldCrops(fldName);

            foreach (var m in fldCrops)
            {
                Crop  cp  = new Crop();
                Yield yld = new Yield();

                if (!string.IsNullOrEmpty(m.cropOther))
                {
                    cp.cropname = m.cropOther + "*";
                    yld         = _sd.GetYield(1);
                }
                else
                {
                    cp  = _sd.GetCrop(Convert.ToInt32(m.cropId));
                    yld = _sd.GetYield(cp.yieldcd);
                }

                if (m.coverCropHarvested.HasValue)
                {
                    cp.cropname = m.coverCropHarvested.Value ? cp.cropname + "(harvested)" : cp.cropname;
                }

                DisplayCrop dm = new DisplayCrop()
                {
                    fldNm    = fldName,
                    cropId   = Convert.ToInt32(m.id),
                    cropName = cp.cropname,
                    yield    = m.yield.ToString() + " tons/ac (" + yld.yielddesc + ")",
                    reqN     = (m.reqN * -1).ToString(),
                    reqP     = (m.reqP2o5 * -1).ToString(),
                    reqK     = (m.reqK2o * -1).ToString(),
                    remN     = (m.remN * -1).ToString(),
                    remP     = (m.remP2o5 * -1).ToString(),
                    remK     = (m.remK2o * -1).ToString()
                };
                mvm.cropList.Add(dm);
            }

            return(Task.FromResult(mvm));
        }