public ViewResult EditWqmpParcels(WaterQualityManagementPlanPrimaryKey waterQualityManagementPlanPrimaryKey)
        {
            var waterQualityManagementPlan = waterQualityManagementPlanPrimaryKey.EntityObject;
            var viewModel = new EditWqmpParcelsViewModel(waterQualityManagementPlan);

            return(ViewEditWqmpParcels(waterQualityManagementPlan, viewModel));
        }
        private ViewResult ViewEditWqmpParcels(WaterQualityManagementPlan waterQualityManagementPlan, EditWqmpParcelsViewModel viewModel)
        {
            var wqmpParcelGeometries =
                waterQualityManagementPlan.WaterQualityManagementPlanParcels.Select(x => x.Parcel.ParcelGeometry4326);
            var mapInitJson = new MapInitJson("editWqmpParcelMap", 0, new List <LayerGeoJson>(), new BoundingBox(wqmpParcelGeometries));
            var viewData    = new EditWqmpParcelsViewData(CurrentPerson, waterQualityManagementPlan, mapInitJson);

            return(RazorView <EditWqmpParcels, EditWqmpParcelsViewData, EditWqmpParcelsViewModel>(viewData, viewModel));
        }
        public ActionResult EditWqmpParcels(WaterQualityManagementPlanPrimaryKey waterQualityManagementPlanPrimaryKey, EditWqmpParcelsViewModel viewModel)
        {
            var waterQualityManagementPlan = waterQualityManagementPlanPrimaryKey.EntityObject;

            if (!ModelState.IsValid)
            {
                return(ViewEditWqmpParcels(waterQualityManagementPlan, viewModel));
            }

            var oldBoundary = waterQualityManagementPlan.WaterQualityManagementPlanBoundary;

            viewModel.UpdateModels(waterQualityManagementPlan);
            SetMessageForDisplay($"Successfully edited {FieldDefinitionType.Parcel.GetFieldDefinitionLabelPluralized()} for {FieldDefinitionType.WaterQualityManagementPlan.GetFieldDefinitionLabel()}.");

            var newBoundary = waterQualityManagementPlan.WaterQualityManagementPlanBoundary;

            if (!(oldBoundary == null && newBoundary == null))
            {
                ModelingEngineUtilities.QueueLGURefreshForArea(oldBoundary, newBoundary);
            }

            NereidUtilities.MarkWqmpDirty(waterQualityManagementPlan, HttpRequestStorage.DatabaseEntities);

            return(RedirectToAction(new SitkaRoute <WaterQualityManagementPlanController>(c => c.Detail(waterQualityManagementPlan))));
        }