public ViewResult Detail(WaterQualityManagementPlanPrimaryKey waterQualityManagementPlanPrimaryKey) { var waterQualityManagementPlan = waterQualityManagementPlanPrimaryKey.EntityObject; var parcels = waterQualityManagementPlan.WaterQualityManagementPlanParcels .Select(x => x.Parcel).ToList(); var parcelGeoJsonFeatureCollection = parcels.ToGeoJsonFeatureCollection(); var treatmentBMPs = CurrentPerson.GetInventoriedBMPsForWQMP(waterQualityManagementPlanPrimaryKey); var treatmentBmpGeoJsonFeatureCollection = treatmentBMPs.ToGeoJsonFeatureCollection(); treatmentBmpGeoJsonFeatureCollection.Features.ForEach(x => { var treatmentBmpID = x.Properties.ContainsKey("TreatmentBMPID") ? int.Parse(x.Properties["TreatmentBMPID"].ToString()) : (int?)null; if (treatmentBmpID != null) { x.Properties.Add("PopupUrl", SitkaRoute <TreatmentBMPController> .BuildUrlFromExpression(c => c.MapPopup(treatmentBmpID))); } }); //var boundingBoxGeometries = new List<DbGeometry>(); //boundingBoxGeometries.AddRange(treatmentBMPs.Select(x=>x.LocationPoint4326)); //boundingBoxGeometries.AddRange(parcels.Select(x=>x.ParcelGeometry4326)); var layerGeoJsons = new List <LayerGeoJson> { new LayerGeoJson(FieldDefinitionType.Parcel.GetFieldDefinitionLabelPluralized(), parcelGeoJsonFeatureCollection, ParcelModelExtensions.ParcelColor, 1, LayerInitialVisibility.Show), new LayerGeoJson(FieldDefinitionType.TreatmentBMP.GetFieldDefinitionLabelPluralized(), treatmentBmpGeoJsonFeatureCollection, "#935f59", 1, LayerInitialVisibility.Show) }; //var mapInitJson = new MapInitJson("waterQualityManagementPlanMap", 0, layerGeoJsons, // new BoundingBox(boundingBoxGeometries)); var mapInitJson = new MapInitJson("waterQualityManagementPlanMap", 0, layerGeoJsons, BoundingBox.MakeBoundingBoxFromLayerGeoJsonList(layerGeoJsons)); if (treatmentBMPs.Any(x => x.Delineation != null)) { mapInitJson.Layers.Add(StormwaterMapInitJson.MakeDelineationLayerGeoJson( treatmentBMPs.Where(x => x.Delineation != null).Select(x => x.Delineation))); } var waterQualityManagementPlanVerifies = HttpRequestStorage.DatabaseEntities.WaterQualityManagementPlanVerifies.Where(x => x.WaterQualityManagementPlanID == waterQualityManagementPlan.PrimaryKey).OrderByDescending(x => x.VerificationDate).ToList(); var waterQualityManagementPlanVerifyDraft = waterQualityManagementPlanVerifies.SingleOrDefault(x => x.IsDraft); var waterQualityManagementPlanVerifyQuickBMP = HttpRequestStorage.DatabaseEntities.WaterQualityManagementPlanVerifyQuickBMPs.Where(x => x.WaterQualityManagementPlanVerify.WaterQualityManagementPlanID == waterQualityManagementPlan.WaterQualityManagementPlanID).ToList(); var waterQualityManagementPlanVerifyTreatmentBMP = HttpRequestStorage.DatabaseEntities.WaterQualityManagementPlanVerifyTreatmentBMPs.Where(x => x.WaterQualityManagementPlanVerify.WaterQualityManagementPlanID == waterQualityManagementPlan.WaterQualityManagementPlanID).ToList(); var anyLspcBasins = waterQualityManagementPlan.WaterQualityManagementPlanBoundary != null && HttpRequestStorage.DatabaseEntities.LSPCBasins.Any(x => x.LSPCBasinGeometry.Intersects(waterQualityManagementPlan.WaterQualityManagementPlanBoundary)); var dryWeatherFlowOverrides = DryWeatherFlowOverride.All; var waterQualityManagementPlanModelingApproaches = WaterQualityManagementPlanModelingApproach.All; var viewData = new DetailViewData(CurrentPerson, waterQualityManagementPlan, waterQualityManagementPlanVerifyDraft, mapInitJson, treatmentBMPs, new ParcelGridSpec(), waterQualityManagementPlanVerifies, waterQualityManagementPlanVerifyQuickBMP, waterQualityManagementPlanVerifyTreatmentBMP, new HRUCharacteristicsViewData(waterQualityManagementPlan, ((IHaveHRUCharacteristics)waterQualityManagementPlan).GetHRUCharacteristics().ToList()), anyLspcBasins, dryWeatherFlowOverrides, waterQualityManagementPlanModelingApproaches, new ModeledPerformanceViewData(waterQualityManagementPlan, CurrentPerson)); return(RazorView <Detail, DetailViewData>(viewData)); }