private ViewResult ViewDetail(RegionalSubbasinRevisionRequest regionalSubbasinRevisionRequest)
        {
            var geometry = regionalSubbasinRevisionRequest.RegionalSubbasinRevisionRequestGeometry;
            var feature  = DbGeometryToGeoJsonHelper.FromDbGeometryWithReprojectionCheck(geometry);

            var layerGeoJson = new LayerGeoJson("centralizedDelineationLayer",
                                                new FeatureCollection(new List <Feature> {
                feature
            }), "#ffff00", .5m, LayerInitialVisibility.Show);

            var mapInitJson = new RegionalSubbasinRevisionRequestMapInitJson("revisionRequestMap",
                                                                             MapInitJson.DefaultZoomLevel, new List <LayerGeoJson>(),
                                                                             new BoundingBox(new List <DbGeometry> {
                geometry
            }), layerGeoJson);

            var viewData = new DetailViewData(CurrentPerson, regionalSubbasinRevisionRequest, mapInitJson);

            return(RazorView <Detail, DetailViewData>(viewData));
        }
        public ActionResult New(TreatmentBMPPrimaryKey treatmentBMPPrimaryKey, NewViewModel viewModel)
        {
            var treatmentBMP = treatmentBMPPrimaryKey.EntityObject;
            var openRequest  = treatmentBMP.RegionalSubbasinRevisionRequests.SingleOrDefault(x => x.RegionalSubbasinRevisionRequestStatusID == RegionalSubbasinRevisionRequestStatus.Open.RegionalSubbasinRevisionRequestStatusID);

            Check.Assert(openRequest == null, "You cannot open a new revision request for this BMP because there is already an open revision request.");

            if (!ModelState.IsValid)
            {
                return(ViewNew(viewModel, treatmentBMP));
            }

            var dbGeometrys = viewModel.WktAndAnnotations.Select(x =>
                                                                 DbGeometry.FromText(x.Wkt, CoordinateSystemHelper.WGS_1984_SRID).ToSqlGeometry().MakeValid()
                                                                 .ToDbGeometry());
            var unionListGeometries =
                dbGeometrys.ToList().UnionListGeometries().FixSrid(CoordinateSystemHelper.WGS_1984_SRID);

            var regionalSubbasinRevisionRequest = new RegionalSubbasinRevisionRequest(
                treatmentBMPPrimaryKey.PrimaryKeyValue, unionListGeometries, CurrentPerson.PersonID,
                RegionalSubbasinRevisionRequestStatus.Open.RegionalSubbasinRevisionRequestStatusID, DateTime.Now)
            {
                Notes = viewModel.Notes
            };

            HttpRequestStorage.DatabaseEntities.RegionalSubbasinRevisionRequests.Add(regionalSubbasinRevisionRequest);
            HttpRequestStorage.DatabaseEntities.SaveChanges();

            SendRSBRevisionRequestSubmittedEmail(CurrentPerson, treatmentBMP, regionalSubbasinRevisionRequest);

            SetMessageForDisplay("Successfully submitted the Regional Subbasin Revision Request");

            return(RedirectToAction(
                       new SitkaRoute <RegionalSubbasinRevisionRequestController>(
                           x => x.Detail(regionalSubbasinRevisionRequest))));
        }
        private static void SendRSBRevisionRequestSubmittedEmail(Models.Person requestPerson,
                                                                 Models.TreatmentBMP requestBMP, RegionalSubbasinRevisionRequest request)
        {
            var subject            = $"A new Regional Subbasin Revision Request was submitted";
            var firstName          = requestPerson.FirstName;
            var lastName           = requestPerson.LastName;
            var organizationName   = requestPerson.Organization.OrganizationName;
            var bmpName            = requestBMP.TreatmentBMPName;
            var requestDetails     = request.GetDetailUrl();
            var requestPersonEmail = requestPerson.Email;
            var message            = $@"
<div style='font-size: 12px; font-family: Arial'>
<strong>{subject}</strong><br />
<br />
A new Regional Subbasin Revision Request was just submitted by {firstName} {lastName} ({organizationName}) for BMP {bmpName}.
Please review it, make revisions, and close it at your earliest convenience. <a href='{requestDetails}'>View this Request</a>

<div>You received this email because you are assigned to receive Regional Subbasin Revision Request notifications within the Orange County Stormwater Tools. </div>.
</div>
";
            // Create Notification
            var mailMessage = new MailMessage
            {
                From       = new MailAddress(Common.NeptuneWebConfiguration.DoNotReplyEmail),
                Subject    = subject,
                Body       = message,
                IsBodyHtml = true
            };

            mailMessage.CC.Add(requestPersonEmail);

            foreach (var revisionRequestPeople in HttpRequestStorage.DatabaseEntities.People
                     .GetPeopleWhoReceiveRSBRevisionRequests())
            {
                mailMessage.To.Add(revisionRequestPeople.Email);
            }

            SitkaSmtpClient.Send(mailMessage);
        }