public ActionResult FieldCopy(FieldCopyViewModel fvm)
        {
            int numSel = 0;

            if (ModelState.IsValid)
            {
                foreach (var fld in fvm.fieldList)
                {
                    if (fld.fieldSelected)
                    {
                        List <FieldCrop> toCrops = _ud.GetFieldCrops(fld.fieldName);
                        foreach (var c in toCrops)
                        {
                            _ud.DeleteFieldCrop(fld.fieldName, c.id);
                        }

                        List <NutrientFertilizer> toFert = _ud.GetFieldNutrientsFertilizers(fld.fieldName);
                        foreach (var f in toFert)
                        {
                            _ud.DeleteFieldNutrientsFertilizer(fld.fieldName, f.id);
                        }

                        List <NutrientManure> toMan = _ud.GetFieldNutrientsManures(fld.fieldName);
                        foreach (var m in toMan)
                        {
                            _ud.DeleteFieldNutrientsManure(fld.fieldName, m.id);
                        }

                        List <NutrientOther> toOther = _ud.GetFieldNutrientsOthers(fld.fieldName);
                        foreach (var o in toOther)
                        {
                            _ud.DeleteFieldNutrientsOther(fld.fieldName, o.id);
                        }
                        List <FieldCrop> fromCrops = _ud.GetFieldCrops(fvm.fldName);
                        foreach (var c in fromCrops)
                        {
                            _ud.AddFieldCrop(fld.fieldName, c);
                        }

                        List <NutrientFertilizer> fromFert = _ud.GetFieldNutrientsFertilizers(fvm.fldName);
                        foreach (var f in fromFert)
                        {
                            _ud.AddFieldNutrientsFertilizer(fld.fieldName, f);
                        }

                        List <NutrientManure> fromMan = _ud.GetFieldNutrientsManures(fvm.fldName);
                        foreach (var m in fromMan)
                        {
                            _ud.AddFieldNutrientsManure(fld.fieldName, m);
                        }

                        List <NutrientOther> fromOther = _ud.GetFieldNutrientsOthers(fvm.fldName);
                        foreach (var o in fromOther)
                        {
                            _ud.AddFieldNutrientsOther(fld.fieldName, o);
                        }

                        numSel++;
                    }
                }

                if (numSel == 0)
                {
                    ModelState.AddModelError("", "No fields selected for copying of information.");
                    return(PartialView("FieldCopy", fvm));
                }

                return(Json(new { success = true, reload = true }));
            }
            return(PartialView("FieldCopy", fvm));
        }
Esempio n. 2
0
        public IActionResult CropDetails(CropDetailsViewModel cvm)
        {
            CropDetailsSetup(ref cvm);
            try
            {
                if (cvm.buttonPressed == "TypeChange")
                {
                    ModelState.Clear();
                    cvm.buttonPressed      = "";
                    cvm.btnText            = "Calculate";
                    cvm.crude              = "";
                    cvm.cropDesc           = "";
                    cvm.coverCropHarvested = null;
                    cvm.nCredit            = "0";
                    cvm.stdYield           = true;
                    cvm.yield              = "";
                    cvm.yieldByHarvestUnit = "";
                    cvm.prevOptions        = new List <SelectListItem>();

                    if (cvm.selTypOption != "select")
                    {
                        CropType crpTyp = _sd.GetCropType(Convert.ToInt32(cvm.selTypOption));

                        if (crpTyp.CustomCrop)
                        {
                            cvm.manEntry            = true;
                            cvm.reqN                = string.Empty;
                            cvm.reqP2o5             = string.Empty;
                            cvm.reqK2o              = string.Empty;
                            cvm.remN                = string.Empty;
                            cvm.remP2o5             = string.Empty;
                            cvm.remK2o              = string.Empty;
                            cvm.showHarvestUnitsDDL = false;
                            cvm.selCropOption       = "66";
                        }
                        else
                        {
                            if (_sd.IsCropGrainsAndOilseeds(crpTyp.Id))
                            {
                                cvm.showHarvestUnitsDDL = true;
                                cvm.selHarvestUnits     = _sd.GetHarvestYieldDefaultDisplayUnit().ToString();
                            }
                            else
                            {
                                cvm.showHarvestUnitsDDL = false;
                            }
                            cvm.manEntry = false;
                            CropDetailsReset(ref cvm);
                        }
                    }
                    else
                    {
                        cvm.manEntry            = false;
                        cvm.showHarvestUnitsDDL = false;
                        CropDetailsReset(ref cvm);
                    }
                    return(View(cvm));
                }

                if (cvm.buttonPressed == "PrevChange")
                {
                    ModelState.Clear();
                    cvm.buttonPressed = "";
                    cvm.btnText       = "Calculate";
                    if (cvm.selPrevOption != "select" &&
                        cvm.selPrevOption != "")
                    {
                        cvm.nCredit = _sd.GetPrevCropType(Convert.ToInt32(cvm.selPrevOption)).NitrogenCreditImperial.ToString();
                    }
                    else
                    {
                        cvm.nCredit = "0";
                    }
                    CropDetailsReset(ref cvm);

                    return(View(cvm));
                }

                if (cvm.buttonPressed == "ResetCrude")
                {
                    ModelState.Clear();
                    cvm.buttonPressed = "";
                    cvm.btnText       = "Calculate";

                    cvm.crude = _calculateCropRequirementRemoval.GetCrudeProtienByCropId(Convert.ToInt16(cvm.selCropOption)).ToString("#.#");

                    cvm.stdCrude = true;
                    return(View(cvm));
                }

                if (cvm.buttonPressed == "ResetN")
                {
                    ModelState.Clear();
                    cvm.buttonPressed = "";
                    cvm.btnText       = "Calculate";

                    cvm.reqN = cvm.stdNAmt;

                    cvm.stdN = true;
                    return(View(cvm));
                }

                if (cvm.buttonPressed == "ResetYield")
                {
                    ModelState.Clear();
                    cvm.buttonPressed = "";
                    cvm.btnText       = "Calculate";

                    decimal?defaultYield;
                    // E07US18 - convert defaultYield to bu/ac if required
                    if (cvm.showHarvestUnitsDDL)
                    {
                        defaultYield = _calculateCropRequirementRemoval.GetDefaultYieldByCropId(_ud.FarmDetails(), Convert.ToInt16(cvm.selCropOption), cvm.selHarvestUnits != _sd.GetHarvestYieldDefaultUnit().ToString());
                    }
                    else
                    {
                        defaultYield = _calculateCropRequirementRemoval.GetDefaultYieldByCropId(_ud.FarmDetails(), Convert.ToInt16(cvm.selCropOption), false);
                    }
                    if (defaultYield.HasValue)
                    {
                        cvm.yieldByHarvestUnit = defaultYield.Value.ToString("#.##");
                    }

                    cvm.reqN = cvm.stdNAmt;

                    cvm.stdYield = true;
                    return(View(cvm));
                }

                if (cvm.buttonPressed == "CropChange")
                {
                    ModelState.Clear();
                    cvm.buttonPressed = "";
                    cvm.btnText       = "Calculate";
                    cvm.nCredit       = "0";
                    cvm.stdYield      = true;

                    PreviousCropSetup(ref cvm);
                    CropDetailsReset(ref cvm);

                    if (cvm.selCropOption != "" &&
                        cvm.selCropOption != "0" &&
                        cvm.selCropOption != "select")
                    {
                        Crop  cp  = _sd.GetCrop(Convert.ToInt32(cvm.selCropOption));
                        Yield yld = _sd.GetYieldById(cp.YieldCd);

                        cvm.yieldUnit = "(" + yld.YieldDesc + ")";
                        // E07US18
                        if (cvm.showHarvestUnitsDDL)
                        {
                            cvm.harvestUnitsOptions = _sd.GetCropHarvestUnitsDll();
                            cvm.selHarvestUnits     = _sd.GetHarvestYieldDefaultDisplayUnit().ToString();
                        }
                        if (cvm.showCrude)
                        {
                            cvm.crude    = _calculateCropRequirementRemoval.GetCrudeProtienByCropId(Convert.ToInt16(cvm.selCropOption)).ToString("#.#");
                            cvm.stdCrude = true;
                        }

                        decimal?defaultYield;
                        // E07US18
                        if (cvm.showHarvestUnitsDDL)
                        {
                            defaultYield = _calculateCropRequirementRemoval.GetDefaultYieldByCropId(_ud.FarmDetails(), Convert.ToInt16(cvm.selCropOption), cvm.selHarvestUnits != _sd.GetHarvestYieldDefaultUnit().ToString());
                        }
                        else
                        {
                            defaultYield = _calculateCropRequirementRemoval.GetDefaultYieldByCropId(_ud.FarmDetails(), Convert.ToInt16(cvm.selCropOption), false);
                        }

                        if (defaultYield.HasValue)
                        {
                            cvm.yieldByHarvestUnit = defaultYield.Value.ToString("#.##");
                        }
                    }
                    cvm.selPrevOption = string.Empty;

                    return(View(cvm));
                }

                if (cvm.buttonPressed == "HarvestUnitChange")
                {
                    ModelState.Clear();
                    cvm.buttonPressed = "";
                    cvm.btnText       = "Calculate";

                    if (Convert.ToInt32(cvm.selCropOption) > 0)
                    {
                        Crop crop = _sd.GetCrop(Convert.ToInt32(cvm.selCropOption));

                        if (cvm.selHarvestUnits == _sd.GetHarvestYieldDefaultUnit().ToString())
                        {
                            if (crop.HarvestBushelsPerTon.HasValue)
                            {
                                cvm.yieldByHarvestUnit = (Convert.ToDecimal(cvm.yieldByHarvestUnit) / Convert.ToDecimal(crop.HarvestBushelsPerTon)).ToString("#.##");
                            }
                        }
                        else
                        {
                            if (crop.HarvestBushelsPerTon.HasValue)
                            {
                                cvm.yieldByHarvestUnit = (Convert.ToDecimal(cvm.yieldByHarvestUnit) * Convert.ToDecimal(crop.HarvestBushelsPerTon)).ToString("#.##");
                            }
                        }
                    }
                    return(View(cvm));
                }

                if (ModelState.IsValid)
                {
                    if (cvm.coverCrop)
                    {
                        if (!cvm.coverCropHarvested.HasValue)
                        {
                            ModelState.AddModelError("coverCropHarvested", "Required.");
                            return(View(cvm));
                        }
                    }

                    if (!string.IsNullOrEmpty(cvm.crude))
                    {
                        decimal crd;
                        if (decimal.TryParse(cvm.crude, out crd))
                        {
                            if (crd < 0 || crd > 100)
                            {
                                ModelState.AddModelError("crude", "Not a valid percentage.");
                                return(View(cvm));
                            }
                        }
                        else
                        {
                            ModelState.AddModelError("crude", "Not a valid number.");
                            return(View(cvm));
                        }
                    }

                    decimal tmpDec;
                    if (decimal.TryParse(cvm.yieldByHarvestUnit, out tmpDec))
                    {
                        if (tmpDec <= 0 ||
                            tmpDec > 99999)
                        {
                            ModelState.AddModelError("yieldByHarvestUnit", "Not a valid yield.");
                            return(View(cvm));
                        }
                    }
                    else
                    {
                        ModelState.AddModelError("yieldByHarvestUnit", "Not a valid number.");
                        return(View(cvm));
                    }

                    //if((string.IsNullOrEmpty(cvm.selCropOption) ||
                    //    cvm.selCropOption == "select") &&
                    //    cvm.selTypOption != _settings.OtherCropId)  // none
                    //{
                    //    ModelState.AddModelError("selCropOption", "Required.");
                    //    return View(cvm);
                    //}

                    if (cvm.manEntry)
                    {
                        if (string.IsNullOrEmpty(cvm.cropDesc))
                        {
                            ModelState.AddModelError("cropDesc", "Required.");
                            return(View(cvm));
                        }

                        if (string.IsNullOrEmpty(cvm.reqN))
                        {
                            ModelState.AddModelError("reqN", "Reqd.");
                            return(View(cvm));
                        }
                        else
                        {
                            if (decimal.TryParse(cvm.reqN, out tmpDec))
                            {
                                if (tmpDec < 0 ||
                                    tmpDec > 1000)
                                {
                                    ModelState.AddModelError("reqN", "Invalid.");
                                    return(View(cvm));
                                }
                            }
                            else
                            {
                                ModelState.AddModelError("reqN", "Invalid.");
                                return(View(cvm));
                            }
                        }
                        if (string.IsNullOrEmpty(cvm.reqP2o5))
                        {
                            ModelState.AddModelError("reqP2o5", "Reqd.");
                            return(View(cvm));
                        }
                        else
                        {
                            if (decimal.TryParse(cvm.reqP2o5, out tmpDec))
                            {
                                if (tmpDec < 0 ||
                                    tmpDec > 1000)
                                {
                                    ModelState.AddModelError("reqP2o5", "Invalid.");
                                    return(View(cvm));
                                }
                            }
                            else
                            {
                                ModelState.AddModelError("reqP2o5", "Invalid.");
                                return(View(cvm));
                            }
                        }
                        if (string.IsNullOrEmpty(cvm.reqK2o))
                        {
                            ModelState.AddModelError("reqK2o", "Reqd.");
                            return(View(cvm));
                        }
                        else
                        {
                            if (decimal.TryParse(cvm.reqK2o, out tmpDec))
                            {
                                if (tmpDec < 0 ||
                                    tmpDec > 1000)
                                {
                                    ModelState.AddModelError("reqK2o", "Invalid.");
                                    return(View(cvm));
                                }
                            }
                            else
                            {
                                ModelState.AddModelError("reqK2o", "Invalid.");
                                return(View(cvm));
                            }
                        }
                        if (string.IsNullOrEmpty(cvm.remN))
                        {
                            ModelState.AddModelError("remN", "Reqd.");
                            return(View(cvm));
                        }
                        else
                        {
                            if (decimal.TryParse(cvm.remN, out tmpDec))
                            {
                                if (tmpDec < 0 ||
                                    tmpDec > 1000)
                                {
                                    ModelState.AddModelError("remN", "Invalid.");
                                    return(View(cvm));
                                }
                            }
                            else
                            {
                                ModelState.AddModelError("remN", "Invalid.");
                                return(View(cvm));
                            }
                        }
                        if (string.IsNullOrEmpty(cvm.remP2o5))
                        {
                            ModelState.AddModelError("remP2o5", "Reqd.");
                            return(View(cvm));
                        }
                        else
                        {
                            if (decimal.TryParse(cvm.remP2o5, out tmpDec))
                            {
                                if (tmpDec < 0 ||
                                    tmpDec > 1000)
                                {
                                    ModelState.AddModelError("remP2o5", "Invalid.");
                                    return(View(cvm));
                                }
                            }
                            else
                            {
                                ModelState.AddModelError("remP2o5", "Invalid.");
                                return(View(cvm));
                            }
                        }
                        if (string.IsNullOrEmpty(cvm.remK2o))
                        {
                            ModelState.AddModelError("remK2o", "Reqd.");
                            return(View(cvm));
                        }
                        else
                        {
                            if (decimal.TryParse(cvm.remK2o, out tmpDec))
                            {
                                if (tmpDec < 0 ||
                                    tmpDec > 1000)
                                {
                                    ModelState.AddModelError("remK2o", "Invalid.");
                                    return(View(cvm));
                                }
                            }
                            else
                            {
                                ModelState.AddModelError("remK2o", "Invalid.");
                                return(View(cvm));
                            }
                        }
                    }

                    if (cvm.modNitrogen)
                    {
                        if (decimal.TryParse(cvm.reqN, out tmpDec))
                        {
                            if (tmpDec < 0 ||
                                tmpDec > 1000)
                            {
                                ModelState.AddModelError("reqN", "Not a valid amount.");
                                return(View(cvm));
                            }
                        }
                        else
                        {
                            ModelState.AddModelError("reqN", "Not a valid number.");
                            return(View(cvm));
                        }
                    }

                    if (cvm.btnText == "Calculate")
                    {
                        ModelState.Clear();
                        if (!cvm.manEntry)
                        {
                            // E07US18 - need to convert cvm.yield to tons/acre before passing to calculateCrop
                            var yield = cvm.showHarvestUnitsDDL && !_sd.IsCropHarvestYieldDefaultUnit(Convert.ToInt16(cvm.selHarvestUnits)) ?
                                        _sd.ConvertYieldFromBushelToTonsPerAcre(Convert.ToInt16(cvm.selCropOption), Convert.ToDecimal(cvm.yieldByHarvestUnit)) :
                                        Convert.ToDecimal(cvm.yieldByHarvestUnit);

                            cvm.yield = yield.ToString();

                            var cropRequirementRemoval = _calculateCropRequirementRemoval
                                                         .GetCropRequirementRemoval(Convert.ToInt16(cvm.selCropOption),
                                                                                    yield,
                                                                                    string.IsNullOrEmpty(cvm.crude) ? default(decimal?) : Convert.ToDecimal(cvm.crude),
                                                                                    cvm.coverCropHarvested,
                                                                                    !string.IsNullOrEmpty(cvm.nCredit) ? Convert.ToInt16(cvm.nCredit) : 0,
                                                                                    _ud.FarmDetails().FarmRegion.Value,
                                                                                    _ud.GetFieldDetails(cvm.fieldName)
                                                                                    );

                            if (!cvm.modNitrogen)
                            {
                                cvm.reqN = cropRequirementRemoval.N_Requirement.ToString();
                            }
                            else
                            {
                                if (cvm.reqN != cropRequirementRemoval.N_Requirement.ToString())
                                {
                                    cvm.stdN = false;
                                }
                            }
                            cvm.stdNAmt = cropRequirementRemoval.N_Requirement.ToString();
                            cvm.reqP2o5 = cropRequirementRemoval.P2O5_Requirement.ToString();
                            cvm.reqK2o  = cropRequirementRemoval.K2O_Requirement.ToString();
                            cvm.remN    = cropRequirementRemoval.N_Removal.ToString();
                            cvm.remP2o5 = cropRequirementRemoval.P2O5_Removal.ToString();
                            cvm.remK2o  = cropRequirementRemoval.K2O_Removal.ToString();
                            if (cvm.crude != null)
                            {
                                if (cvm.crude.Replace(".0", "") != _calculateCropRequirementRemoval.GetCrudeProtienByCropId(Convert.ToInt16(cvm.selCropOption)).ToString("#.#"))
                                {
                                    cvm.stdCrude = false;
                                }
                            }

                            if (!cvm.modNitrogen)
                            {
                                CropType crpTyp = _sd.GetCropType(Convert.ToInt32(cvm.selTypOption));
                                if (crpTyp.ModifyNitrogen)
                                {
                                    cvm.modNitrogen = true;
                                    cvm.stdN        = true;
                                }
                            }

                            decimal?defaultYield;
                            if (cvm.showHarvestUnitsDDL)
                            {
                                defaultYield = _calculateCropRequirementRemoval.GetDefaultYieldByCropId(_ud.FarmDetails(), Convert.ToInt16(cvm.selCropOption), cvm.selHarvestUnits != _sd.GetHarvestYieldDefaultUnit().ToString());
                            }
                            else
                            {
                                defaultYield = _calculateCropRequirementRemoval.GetDefaultYieldByCropId(_ud.FarmDetails(), Convert.ToInt16(cvm.selCropOption), false);
                            }
                            cvm.stdYield = true;
                            if (defaultYield.HasValue)
                            {
                                if (cvm.yieldByHarvestUnit != defaultYield.Value.ToString("#.##"))
                                {
                                    cvm.stdYield = false;
                                }
                            }
                        }

                        cvm.btnText = cvm.id == null ? "Add to Field" : "Update Field";
                    }
                    else
                    {
                        if (cvm.id == null)
                        {
                            int prevCrop = 0;
                            if (cvm.selPrevOption != "select")
                            {
                                prevCrop = Convert.ToInt32(cvm.selPrevOption);
                            }

                            int thisCrop = 0;
                            if (cvm.selCropOption != "select")
                            {
                                thisCrop = Convert.ToInt32(cvm.selCropOption);
                            }
                            // E07US18 - convert cvm.yield
                            FieldCrop crp = new FieldCrop()
                            {
                                cropId             = thisCrop.ToString(),
                                cropOther          = cvm.cropDesc,
                                yield              = Convert.ToDecimal(cvm.yieldByHarvestUnit),
                                yieldByHarvestUnit = Convert.ToDecimal(cvm.yieldByHarvestUnit),
                                reqN                        = Convert.ToDecimal(cvm.reqN),
                                reqP2o5                     = Convert.ToDecimal(cvm.reqP2o5),
                                reqK2o                      = Convert.ToDecimal(cvm.reqK2o),
                                remN                        = Convert.ToDecimal(cvm.remN),
                                remP2o5                     = Convert.ToDecimal(cvm.remP2o5),
                                remK2o                      = Convert.ToDecimal(cvm.remK2o),
                                crudeProtien                = string.IsNullOrEmpty(cvm.crude) ? (decimal?)null : Convert.ToDecimal(cvm.crude),
                                prevCropId                  = prevCrop,
                                coverCropHarvested          = cvm.coverCropHarvested,
                                prevYearManureAppl_volCatCd = _sd.GetCropPrevYearManureApplVolCatCd(thisCrop),
                                yieldHarvestUnit            = (cvm.showHarvestUnitsDDL) ? Convert.ToInt16(cvm.selHarvestUnits) : _sd.GetHarvestYieldDefaultUnit()
                            };
                            if (cvm.showHarvestUnitsDDL && (cvm.selHarvestUnits != _sd.GetHarvestYieldDefaultUnit().ToString()))
                            {
                                crp.yield = _sd.ConvertYieldFromBushelToTonsPerAcre(Convert.ToInt16(crp.cropId), Convert.ToDecimal(cvm.yieldByHarvestUnit));
                            }

                            _ud.AddFieldCrop(cvm.fieldName, crp);

                            return(Json(new { success = true, reload = true }));
                        }
                        else
                        {
                            int prevCrop = 0;
                            if (cvm.selPrevOption != "select")
                            {
                                prevCrop = Convert.ToInt32(cvm.selPrevOption);
                            }

                            int thisCrop = 0;
                            if (cvm.selCropOption != "select")
                            {
                                thisCrop = Convert.ToInt32(cvm.selCropOption);
                            }

                            FieldCrop crp = _ud.GetFieldCrop(cvm.fieldName, cvm.id.Value);
                            crp.cropId    = thisCrop.ToString();
                            crp.cropOther = cvm.cropDesc;
                            //E07US18 - need to convert cvm.yield to TONS/acre before assigin to crp.yield
                            crp.yieldByHarvestUnit = Convert.ToDecimal(cvm.yieldByHarvestUnit);
                            if (cvm.showHarvestUnitsDDL && (cvm.selHarvestUnits != _sd.GetHarvestYieldDefaultUnit().ToString()))
                            {
                                crp.yield = _sd.ConvertYieldFromBushelToTonsPerAcre(Convert.ToInt16(crp.cropId), Convert.ToDecimal(cvm.yieldByHarvestUnit));
                            }
                            else
                            {
                                crp.yield = crp.yieldByHarvestUnit;
                            }

                            crp.reqN                        = Convert.ToDecimal(cvm.reqN);
                            crp.reqP2o5                     = Convert.ToDecimal(cvm.reqP2o5);
                            crp.reqK2o                      = Convert.ToDecimal(cvm.reqK2o);
                            crp.remN                        = Convert.ToDecimal(cvm.remN);
                            crp.remP2o5                     = Convert.ToDecimal(cvm.remP2o5);
                            crp.remK2o                      = Convert.ToDecimal(cvm.remK2o);
                            crp.crudeProtien                = string.IsNullOrEmpty(cvm.crude) ? (decimal?)null : Convert.ToDecimal(cvm.crude);
                            crp.prevCropId                  = prevCrop;
                            crp.coverCropHarvested          = cvm.coverCropHarvested;
                            crp.prevYearManureAppl_volCatCd = _sd.GetCropPrevYearManureApplVolCatCd(Convert.ToInt32(crp.cropId));
                            crp.yieldHarvestUnit            = (cvm.showHarvestUnitsDDL) ? Convert.ToInt16(cvm.selHarvestUnits) : _sd.GetHarvestYieldDefaultUnit();

                            _ud.UpdateFieldCrop(cvm.fieldName, crp);

                            return(Json(new { success = true, reload = true }));
                        }
                        //NOTE: NOT SURE IF REQUIRED FOR STANDALONE CROPS
                        //return Json(ReDisplay("#crop", cvm.fieldName));
                    }
                }
            }
            catch (Exception ex)
            {
                ModelState.AddModelError("", "Unexpected system error -" + ex.Message);
            }

            return(PartialView("CropDetails", cvm));
        }