public void UpdateModel(Models.OnlandVisualTrashAssessmentArea onlandVisualTrashAssessmentArea)
        {
            if (IsParcelPicker.GetValueOrDefault())
            {
                // since this is parcel picks, we don't need to reproject; the parcels are already in the correct system (State Plane)
                var unionListGeometries = HttpRequestStorage.DatabaseEntities.Parcels.Where(x => ParcelIDs.Contains(x.ParcelID)).Select(x => x.ParcelGeometry).ToList().UnionListGeometries();
                var onlandVisualTrashAssessmentAreaGeometry2771 = unionListGeometries.FixSrid(CoordinateSystemHelper.NAD_83_HARN_CA_ZONE_VI_SRID);
                onlandVisualTrashAssessmentArea.OnlandVisualTrashAssessmentAreaGeometry     = onlandVisualTrashAssessmentAreaGeometry2771;
                onlandVisualTrashAssessmentArea.OnlandVisualTrashAssessmentAreaGeometry4326 = CoordinateSystemHelper.ProjectWebMercatorToCaliforniaStatePlaneVI(onlandVisualTrashAssessmentAreaGeometry2771);
            }
            else
            {
                var dbGeometrys = WktAndAnnotations.Select(x =>
                                                           DbGeometry.FromText(x.Wkt, CoordinateSystemHelper.NAD_83_HARN_CA_ZONE_VI_SRID).ToSqlGeometry().MakeValid()
                                                           .ToDbGeometry());
                var newGeometry4326 = dbGeometrys.ToList().UnionListGeometries();

                // since this is coming from the browser, we have to transform to State Plane
                onlandVisualTrashAssessmentArea.OnlandVisualTrashAssessmentAreaGeometry =
                    CoordinateSystemHelper.ProjectWebMercatorToCaliforniaStatePlaneVI(newGeometry4326);

                onlandVisualTrashAssessmentArea.OnlandVisualTrashAssessmentAreaGeometry4326 =
                    newGeometry4326.FixSrid(CoordinateSystemHelper.WGS_1984_SRID);

                HttpRequestStorage.DatabaseEntities.SaveChanges();
            }
        }
Beispiel #2
0
 public EditBasicsViewModel(Models.OnlandVisualTrashAssessmentArea onlandVisualTrashAssessmentArea)
 {
     AssessmentAreaName        = onlandVisualTrashAssessmentArea.OnlandVisualTrashAssessmentAreaName;
     AssessmentAreaDescription = onlandVisualTrashAssessmentArea.AssessmentAreaDescription;
     AssessmentAreaID          = onlandVisualTrashAssessmentArea.OnlandVisualTrashAssessmentAreaID;
     StormwaterJurisdictionID  = onlandVisualTrashAssessmentArea.StormwaterJurisdictionID;
 }
Beispiel #3
0
 public static HtmlString GetBaselineScoreAsHtmlString(
     this Models.OnlandVisualTrashAssessmentArea onlandVisualTrashAssessmentArea)
 {
     return(new HtmlString(onlandVisualTrashAssessmentArea.OnlandVisualTrashAssessmentBaselineScore != null
         ? onlandVisualTrashAssessmentArea.OnlandVisualTrashAssessmentBaselineScore
                           .OnlandVisualTrashAssessmentScoreDisplayName
         : "<p class='systemText'>No completed assessments</p>"));
 }
 public TrashMapAssetPanelViewData(Person currentPerson, Models.OnlandVisualTrashAssessmentArea onlandVisualTrashAssessmentArea)
 {
     OnlandVisualTrashAssessmentArea = onlandVisualTrashAssessmentArea;
     UserHasViewDetailsPermission    = new OnlandVisualTrashAssessmentAreaViewFeature().HasPermission(currentPerson, onlandVisualTrashAssessmentArea).HasPermission;
     ScoreHtmlString = new HtmlString(OnlandVisualTrashAssessmentArea.OnlandVisualTrashAssessmentBaselineScore != null
         ? OnlandVisualTrashAssessmentArea.OnlandVisualTrashAssessmentBaselineScore
                                      .OnlandVisualTrashAssessmentScoreDisplayName
         : "<p class='systemText'>No completed assessments</p>");
 }
Beispiel #5
0
        public static HtmlString GetDisplayNameAsDetailUrl(this Models.OnlandVisualTrashAssessmentArea onlandVisualTrashAssessmentArea, Person currentPerson)
        {
            if (!new OnlandVisualTrashAssessmentAreaViewFeature()
                .HasPermission(currentPerson, onlandVisualTrashAssessmentArea).HasPermission)
            {
                return(new HtmlString(onlandVisualTrashAssessmentArea.OnlandVisualTrashAssessmentAreaName));
            }

            return(new HtmlString(
                       $"<a href=\"{onlandVisualTrashAssessmentArea.GetDetailUrl()}\" alt=\"{onlandVisualTrashAssessmentArea.OnlandVisualTrashAssessmentAreaName}\" title=\"{onlandVisualTrashAssessmentArea.OnlandVisualTrashAssessmentAreaName}\" >{onlandVisualTrashAssessmentArea.OnlandVisualTrashAssessmentAreaName}</a>"));
        }
Beispiel #6
0
        public static LayerGeoJson GetAssessmentAreaLayerGeoJson(this Models.OnlandVisualTrashAssessmentArea onlandVisualTrashAssessmentArea)
        {
            var geoJsonFeatureCollection = new List <Models.OnlandVisualTrashAssessmentArea> {
                onlandVisualTrashAssessmentArea
            }
            .ToGeoJsonFeatureCollection();

            var assessmentAreaLayerGeoJson = new LayerGeoJson("parcels", geoJsonFeatureCollection,
                                                              "#ffff00", .5m,
                                                              LayerInitialVisibility.Show);

            return(assessmentAreaLayerGeoJson);
        }
Beispiel #7
0
        public static OnlandVisualTrashAssessmentScore CalculateProgressScore(this Models.OnlandVisualTrashAssessmentArea onlandVisualTrashAssessmentArea)
        {
            var onlandVisualTrashAssessments = onlandVisualTrashAssessmentArea.OnlandVisualTrashAssessments.Where(x =>
                                                                                                                  x.OnlandVisualTrashAssessmentStatusID == OnlandVisualTrashAssessmentStatus.Complete
                                                                                                                  .OnlandVisualTrashAssessmentStatusID && x.IsProgressAssessment).ToList();

            if (!onlandVisualTrashAssessments.Any())
            {
                return(null);
            }

            var average = onlandVisualTrashAssessments.OrderByDescending(x => x.CompletedDate).Take(3).Average(x => x.OnlandVisualTrashAssessmentScore.NumericValue);

            var onlandVisualTrashAssessmentScore = OnlandVisualTrashAssessmentScore.All.Single(x => x.NumericValue == Math.Round(average));

            return(onlandVisualTrashAssessmentScore);
        }
Beispiel #8
0
        public static DbGeometry RecomputeTransectLine(
            this Models.OnlandVisualTrashAssessmentArea onlandVisualTrashAssessmentArea, out Models.OnlandVisualTrashAssessment onlandVisualTrashAssessment)
        {
            var onlandVisualTrashAssessments = onlandVisualTrashAssessmentArea.OnlandVisualTrashAssessments
                                               .Where(x => x.OnlandVisualTrashAssessmentStatusID ==
                                                      OnlandVisualTrashAssessmentStatus.Complete.OnlandVisualTrashAssessmentStatusID).ToList();

            // new transect should come from the earliest completed assessment
            if (onlandVisualTrashAssessments.Any(x => x.OnlandVisualTrashAssessmentStatusID == OnlandVisualTrashAssessmentStatus.Complete.OnlandVisualTrashAssessmentStatusID))
            {
                onlandVisualTrashAssessment = onlandVisualTrashAssessments.MinBy(x => x.CompletedDate);
                return(onlandVisualTrashAssessment.GetTransect()?.FixSrid(CoordinateSystemHelper.NAD_83_HARN_CA_ZONE_VI_SRID));
            }

            onlandVisualTrashAssessment = null;
            return(null);
        }
Beispiel #9
0
        public static LayerGeoJson GetTransectLineLayerGeoJson(this Models.OnlandVisualTrashAssessmentArea onlandVisualTrashAssessmentArea)
        {
            if (onlandVisualTrashAssessmentArea.TransectLine != null)
            {
                var featureCollection = new FeatureCollection();
                var feature           = DbGeometryToGeoJsonHelper.FromDbGeometryWithReprojectionCheck(onlandVisualTrashAssessmentArea.TransectLine);
                featureCollection.Features.AddRange(new List <Feature> {
                    feature
                });

                LayerGeoJson transectLineLayerGeoJson = new LayerGeoJson("transectLine", featureCollection, "#000000",
                                                                         1,
                                                                         LayerInitialVisibility.Show);
                return(transectLineLayerGeoJson);
            }

            return(null);
        }
Beispiel #10
0
        public EditLocationViewData(Person currentPerson, Models.OnlandVisualTrashAssessmentArea ovtaArea, RefineAssessmentAreaMapInitJson mapInitJson) : base(currentPerson, NeptunePage.GetNeptunePageByPageType(NeptunePageType.EditOVTAArea))
        {
            MapInitJson = mapInitJson;
            EntityName  = "OVTA Areas";
            EntityUrl   = SitkaRoute <OnlandVisualTrashAssessmentController> .BuildUrlFromExpression(x => x.Index());

            SubEntityName = ovtaArea.OnlandVisualTrashAssessmentAreaName;
            SubEntityUrl  = SitkaRoute <OnlandVisualTrashAssessmentAreaController> .BuildUrlFromExpression(x => x.Detail(ovtaArea));

            PageTitle = "Edit Location";

            MapFormID    = "editAssessmentAreaMapForm";
            GeoServerUrl = NeptuneWebConfiguration.ParcelMapServiceUrl;
            OnlandVisualTrashAssessmentAreaID = ovtaArea.OnlandVisualTrashAssessmentAreaID;

            ParcelUnionUrl = SitkaRoute <ParcelController> .BuildUrlFromExpression(x => x.Union());

            ParcelsViaTransectUrlTemplate = new UrlTemplate <int>(SitkaRoute <OnlandVisualTrashAssessmentAreaController> .BuildUrlFromExpression(x => x.ParcelsViaTransect(UrlTemplate.Parameter1Int))).UrlTemplateString;
            DetailUrl = ovtaArea.GetDetailUrl();
        }
Beispiel #11
0
        public DetailViewData(Person currentPerson, Models.OnlandVisualTrashAssessmentArea onlandVisualTrashAssessmentArea, OVTAAreaMapInitJson mapInitJson, string newUrl, string editDetailsUrl, string confirmEditLocationUrl) : base(currentPerson)
        {
            EntityName = "OVTA Areas";
            EntityUrl  = SitkaRoute <OnlandVisualTrashAssessmentController> .BuildUrlFromExpression(x => x.Index());

            PageTitle = onlandVisualTrashAssessmentArea.OnlandVisualTrashAssessmentAreaName;
            OnlandVisualTrashAssessmentArea = onlandVisualTrashAssessmentArea;
            MapInitJson = mapInitJson;
            var completedAssessments = OnlandVisualTrashAssessmentArea.OnlandVisualTrashAssessments.Where(x => x.OnlandVisualTrashAssessmentStatus == OnlandVisualTrashAssessmentStatus.Complete).ToList();

            LastAssessmentDateHtmlString = new HtmlString(completedAssessments.Max(x => x.CompletedDate)?.ToShortDateString() ?? "<p class='systemText'>No completed assessments</p>");
            ProgressScoreHtmlString      = new HtmlString(OnlandVisualTrashAssessmentArea.OnlandVisualTrashAssessmentProgressScore != null
                ? OnlandVisualTrashAssessmentArea.OnlandVisualTrashAssessmentProgressScore
                                                          .OnlandVisualTrashAssessmentScoreDisplayName
                : "<p class='systemText'>No completed assessments</p>");
            BaselineScoreHtmlString = new HtmlString(OnlandVisualTrashAssessmentArea.OnlandVisualTrashAssessmentBaselineScore != null
                ? OnlandVisualTrashAssessmentArea.OnlandVisualTrashAssessmentBaselineScore
                                                     .OnlandVisualTrashAssessmentScoreDisplayName
                : "<p class='systemText'>No completed assessments</p>");
            NewUrl                 = newUrl;
            EditDetailsUrl         = editDetailsUrl;
            ConfirmEditLocationUrl = confirmEditLocationUrl;


            UserHasAssessmentAreaManagePermission = new OnlandVisualTrashAssessmentAreaEditFeature().HasPermission(currentPerson, OnlandVisualTrashAssessmentArea).HasPermission;
            UserHasEditLocationPermission         = new JurisdictionManageFeature().HasPermissionByPerson(currentPerson);

            GridSpec = new OnlandVisualTrashAssessmentIndexGridSpec(currentPerson, false)
            {
                ObjectNameSingular  = "Assessment",
                ObjectNamePlural    = "Assessments",
                SaveFiltersInCookie = true
            };
            GridName    = "onlandVisualTrashAssessmentsGrid";
            GridDataUrl =
                SitkaRoute <OnlandVisualTrashAssessmentController> .BuildUrlFromExpression(j => j.OVTAGridJsonDataForAreaDetails(onlandVisualTrashAssessmentArea));

            GeoServerUrl = NeptuneWebConfiguration.ParcelMapServiceUrl;
        }
Beispiel #12
0
 public EditBasicsViewData(Person currentPerson, Models.OnlandVisualTrashAssessmentArea ovtaArea) : base(currentPerson)
 {
     AssessmentAreaName        = ovtaArea.OnlandVisualTrashAssessmentAreaName;
     AssessmentAreaDescription = ovtaArea.AssessmentAreaDescription;
 }
Beispiel #13
0
        public void UpdateModel(Models.OnlandVisualTrashAssessment onlandVisualTrashAssessment,
                                ICollection <OnlandVisualTrashAssessmentPreliminarySourceIdentificationType> allOnlandVisualTrashAssessmentPreliminarySourceIdentificationTypes)
        {
            if (Finalize.GetValueOrDefault())
            {
                onlandVisualTrashAssessment.OnlandVisualTrashAssessmentScoreID = ScoreID;
                onlandVisualTrashAssessment.Notes                = Notes;
                onlandVisualTrashAssessment.CompletedDate        = AssessmentDate;
                onlandVisualTrashAssessment.IsProgressAssessment = IsProgressAssessment;

                // create the assessment area
                if (onlandVisualTrashAssessment.AssessingNewArea.GetValueOrDefault())
                {
                    var onlandVisualTrashAssessmentAreaGeometry2771 =
                        onlandVisualTrashAssessment
                        .DraftGeometry;

                    var onlandVisualTrashAssessmentArea = new Models.OnlandVisualTrashAssessmentArea(AssessmentAreaName,
                                                                                                     onlandVisualTrashAssessment.StormwaterJurisdiction,
                                                                                                     onlandVisualTrashAssessmentAreaGeometry2771)
                    {
                        OnlandVisualTrashAssessmentAreaGeometry4326 = CoordinateSystemHelper.ProjectCaliforniaStatePlaneVIToWebMercator(onlandVisualTrashAssessment.DraftGeometry)
                    };

                    HttpRequestStorage.DatabaseEntities.SaveChanges();

                    onlandVisualTrashAssessment.OnlandVisualTrashAssessmentAreaID =
                        onlandVisualTrashAssessmentArea.OnlandVisualTrashAssessmentAreaID;
                    onlandVisualTrashAssessment.DraftGeometry        = null;
                    onlandVisualTrashAssessment.DraftAreaDescription = null;
                }

                onlandVisualTrashAssessment.OnlandVisualTrashAssessmentStatusID =
                    OnlandVisualTrashAssessmentStatus.Complete.OnlandVisualTrashAssessmentStatusID;

                HttpRequestStorage.DatabaseEntities.SaveChanges();

                onlandVisualTrashAssessment.OnlandVisualTrashAssessmentArea.AssessmentAreaDescription =
                    AssessmentAreaDescription;

                onlandVisualTrashAssessment.OnlandVisualTrashAssessmentArea.OnlandVisualTrashAssessmentBaselineScoreID =
                    onlandVisualTrashAssessment.OnlandVisualTrashAssessmentArea.CalculateScoreFromBackingData(false)?
                    .OnlandVisualTrashAssessmentScoreID;

                if (IsProgressAssessment)
                {
                    onlandVisualTrashAssessment.OnlandVisualTrashAssessmentArea
                    .OnlandVisualTrashAssessmentProgressScoreID =
                        onlandVisualTrashAssessment.OnlandVisualTrashAssessmentScoreID;
                }

                if (onlandVisualTrashAssessment.OnlandVisualTrashAssessmentArea.TransectLine == null && onlandVisualTrashAssessment.OnlandVisualTrashAssessmentObservations.Count >= 2)
                {
                    var transect = onlandVisualTrashAssessment.GetTransect();
                    onlandVisualTrashAssessment.OnlandVisualTrashAssessmentArea.TransectLine = transect;
                    onlandVisualTrashAssessment.IsTransectBackingAssessment = true;

                    var transectBackingAssessment = onlandVisualTrashAssessment.OnlandVisualTrashAssessmentArea.GetTransectBackingAssessment();
                    if (transectBackingAssessment != null)
                    {
                        transectBackingAssessment.IsTransectBackingAssessment = false;
                    }
                }
            }
            else
            {
                onlandVisualTrashAssessment.OnlandVisualTrashAssessmentScoreID = ScoreID;
                onlandVisualTrashAssessment.Notes                = Notes;
                onlandVisualTrashAssessment.DraftAreaName        = AssessmentAreaName;
                onlandVisualTrashAssessment.DraftAreaDescription = AssessmentAreaDescription;
            }

            var onlandVisualTrashAssessmentPreliminarySourceIdentificationTypesToUpdate = PreliminarySourceIdentifications.Where(x => x.Has).Select(x =>
                                                                                                                                                    new OnlandVisualTrashAssessmentPreliminarySourceIdentificationType(
                                                                                                                                                        OnlandVisualTrashAssessmentID.GetValueOrDefault(),
                                                                                                                                                        x.PreliminarySourceIdentificationTypeID.GetValueOrDefault())
            {
                ExplanationIfTypeIsOther = x.ExplanationIfTypeIsOther
            }).ToList();

            onlandVisualTrashAssessment.OnlandVisualTrashAssessmentPreliminarySourceIdentificationTypes.Merge(onlandVisualTrashAssessmentPreliminarySourceIdentificationTypesToUpdate,
                                                                                                              allOnlandVisualTrashAssessmentPreliminarySourceIdentificationTypes,
                                                                                                              (z, w) => z.OnlandVisualTrashAssessmentID == w.OnlandVisualTrashAssessmentID && z.PreliminarySourceIdentificationTypeID == w.PreliminarySourceIdentificationTypeID,
                                                                                                              (z, w) => z.ExplanationIfTypeIsOther = w.ExplanationIfTypeIsOther
                                                                                                              );

            // bug?: why are we nulling these unconditionally?
            onlandVisualTrashAssessment.DraftAreaDescription = null;
            onlandVisualTrashAssessment.DraftAreaName        = null;
            onlandVisualTrashAssessment.DraftGeometry        = null;
        }
Beispiel #14
0
 public void UpdateModel(Models.OnlandVisualTrashAssessmentArea onlandVisualTrashAssessmentArea)
 {
     onlandVisualTrashAssessmentArea.OnlandVisualTrashAssessmentAreaName = AssessmentAreaName;
     onlandVisualTrashAssessmentArea.AssessmentAreaDescription           = AssessmentAreaDescription;
 }
Beispiel #15
0
 public static Models.OnlandVisualTrashAssessment GetTransectBackingAssessment(this Models.OnlandVisualTrashAssessmentArea onlandVisualTrashAssessmentArea)
 {
     return(onlandVisualTrashAssessmentArea.OnlandVisualTrashAssessments.SingleOrDefault(x =>
                                                                                         x.IsTransectBackingAssessment));
 }
 public EditLocationViewModel(Models.OnlandVisualTrashAssessmentArea onlandVisualTrashAssessmentArea)
 {
 }
Beispiel #17
0
 public static string GetDeleteUrl(this Models.OnlandVisualTrashAssessmentArea onlandVisualTrashAssessmentArea)
 {
     return(DeleteUrlTemplate.ParameterReplace(onlandVisualTrashAssessmentArea.OnlandVisualTrashAssessmentAreaID));
 }
Beispiel #18
0
 public static DateTime?GetLastAssessmentDate(
     this Models.OnlandVisualTrashAssessmentArea onlandVisualTrashAssessmentArea)
 {
     return(onlandVisualTrashAssessmentArea.OnlandVisualTrashAssessments.Max(x => x.CompletedDate));
 }
Beispiel #19
0
 public static HtmlString GetDisplayNameAsDetailUrlNoPermissionCheck(this Models.OnlandVisualTrashAssessmentArea onlandVisualTrashAssessmentArea)
 {
     return(new HtmlString(
                $"<a href=\"{onlandVisualTrashAssessmentArea.GetDetailUrl()}\" alt=\"{onlandVisualTrashAssessmentArea.OnlandVisualTrashAssessmentAreaName}\" title=\"{onlandVisualTrashAssessmentArea.OnlandVisualTrashAssessmentAreaName}\" >{onlandVisualTrashAssessmentArea.OnlandVisualTrashAssessmentAreaName}</a>"));
 }
Beispiel #20
0
 public static string GetBeginOVTAUrl(this Models.OnlandVisualTrashAssessmentArea ovtaa)
 {
     return(BeginOVTAUrlTemplate.ParameterReplace(ovtaa.OnlandVisualTrashAssessmentAreaID));
 }