// // GET: /POI/Edit/5 public ActionResult Edit(int?id) { if (id > 0) { var poi = new POIManager().Get((int)id); if (poi != null) { InitEditReferenceData(poi); var refData = new POIBrowseModel(); ViewBag.ReferenceData = refData; ViewBag.HideAdvancedInfo = true; try { var user = new UserManager().GetUser((int)Session["UserID"]); if (POIManager.CanUserEditPOI(poi, user)) { ViewBag.HideAdvancedInfo = false; } } catch (Exception) { ;; //user not signed in } //enable advanced edit options for full editors/admin return(View(poi)); } } //no applicable poi, jump back to browse return(RedirectToAction("Index", "POI")); }
public async Task <ActionResult> Edit(int?id, bool createCopy = false) { ViewBag.IsReadOnlyMode = this.IsReadOnlyMode; if (id > 0) { ChargePoint poi = null; if (createCopy) { //get version of POI with location details removed, copying equipment etc poi = await new POIManager().GetCopy((int)id, true); } else { poi = await new POIManager().Get((int)id); } if (poi != null) { InitEditReferenceData(poi); var refData = new POIBrowseModel(GetCoreReferenceData()); ViewBag.ReferenceData = refData; ViewBag.HideAdvancedInfo = true; if (!createCopy) { try { var user = new UserManager().GetUser((int)UserID); if (POIManager.CanUserEditPOI(poi, user)) { ViewBag.HideAdvancedInfo = false; } } catch (Exception) { ;; //user not signed in } } //enable advanced edit options for full editors/admin return(View(poi)); } } //no applicable poi, jump back to browse return(RedirectToAction("Index", "POI")); }
//[AuthSignedInOnly] public ActionResult Add() { var refData = new POIBrowseModel(); refData.AllowOptionalCountrySelection = false; ViewBag.ReferenceData = refData; ViewBag.ConnectionIndex = 0; //connection counter shared by equipment detais ViewBag.EnableEditView = false; //get a default new POI using std core reference data var coreReferenceData = new ReferenceDataManager().GetCoreReferenceData(); coreReferenceData.ChargePoint.OperatorInfo.ID = 1; // Unknown Operator coreReferenceData.ChargePoint.StatusType.ID = 50; //Operational coreReferenceData.ChargePoint.UsageType.ID = 6; //private for staff and visitors coreReferenceData.ChargePoint.SubmissionStatus = null; //let system decide on submit coreReferenceData.ChargePoint.SubmissionStatusTypeID = null; return(View("Edit", coreReferenceData.ChargePoint)); }
public async Task <ActionResult> Index(POIBrowseModel filter) { if (filter?.ReferenceData == null) { if (filter == null) { filter = new POIBrowseModel(); filter.ShowAdvancedOptions = true; } filter.ReferenceData = await GetCoreReferenceDataAsync(); } var cpManager = new API.Common.POIManager(); //dropdown selections of -1 represent an intended null selection, fix this by nulling relevant items filter.CountryIDs = this.ConvertNullableSelection(filter.CountryIDs); filter.LevelIDs = this.ConvertNullableSelection(filter.LevelIDs); filter.ConnectionTypeIDs = this.ConvertNullableSelection(filter.ConnectionTypeIDs); filter.OperatorIDs = this.ConvertNullableSelection(filter.OperatorIDs); filter.StatusTypeIDs = this.ConvertNullableSelection(filter.StatusTypeIDs); filter.UsageTypeIDs = this.ConvertNullableSelection(filter.UsageTypeIDs); filter.DataProviderIDs = this.ConvertNullableSelection(filter.DataProviderIDs); filter.IncludeComments = true; if (IsRequestByRobot) { //force mirror db when browser is a robot filter.AllowMirrorDB = true; filter.AllowDataStoreDB = false; } if (!String.IsNullOrWhiteSpace(filter.Country)) { //TODO: cache country id lookup using (var refData = new OCM.API.Common.ReferenceDataManager()) { var countrySelected = refData.GetCountryByName(filter.Country); if (countrySelected != null) { filter.CountryIDs = new int[] { countrySelected.ID }; } } } else { //default to UK // if (filter.CountryIDs == null) filter.CountryIDs = new int[] { 1 }; } filter.MaxResults = 100; if (!String.IsNullOrWhiteSpace(filter.SearchLocation)) { if (filter.SearchLocation.ToUpper().StartsWith("OCM-")) { filter.SearchLocation = filter.SearchLocation.Replace("OCM-", ""); } if (filter.SearchLocation.ToUpper().StartsWith("OCM")) { filter.SearchLocation = filter.SearchLocation.Replace("OCM", ""); } if (IsNumeric(filter.SearchLocation.Trim())) { int poiID = -1; //treat numbers as OCM ref if (int.TryParse(filter.SearchLocation.Trim(), out poiID)) { filter.ChargePointIDs = new int[] { poiID }; } } else { //attempt to geocode var geocode = new GeocodingHelper(_settings); string searchCountryName = null; if (filter.CountryIDs != null && filter.CountryIDs.Count() > 0) { var searchCountry = filter.ReferenceData.Countries.FirstOrDefault(c => c.ID == filter.CountryIDs[0]); searchCountryName = searchCountry.Title; } API.Common.Model.Extended.GeocodingResult position = null; // FIXME: geocoding is disabled, find an laternative service to use //geocode.GeolocateAddressInfo_Google(filter.SearchLocation.Trim() + (searchCountryName != null ? ", " + searchCountryName : "")); if (filter.SearchLocation.Contains(",")) { var vals = filter.SearchLocation.Split(','); if (IsNumeric(vals[0]) && IsNumeric(vals[1])) { position = new API.Common.Model.Extended.GeocodingResult { Latitude = double.Parse(vals[0]), Longitude = double.Parse(vals[1]) }; } } if (position != null) { filter.Latitude = position.Latitude; filter.Longitude = position.Longitude; if (filter.Distance == null) { filter.Distance = 50; } filter.DistanceUnit = API.Common.Model.DistanceUnit.Miles; //TODO: distance unit KM //if (distanceunit == "km") searchfilters.DistanceUnit = API.Common.Model.DistanceUnit.KM; ViewBag.FormattedAddress = position.Address ?? ""; } } } filter.POIList = (await cpManager.GetPOIListAsync((OCM.API.Common.APIRequestParams)filter, filter.ReferenceData)).ToList(); return(View(filter)); }
public async Task <ActionResult> Edit(ChargePoint poi) { CheckForReadOnly(); var refData = new POIBrowseModel(GetCoreReferenceData()); refData.AllowOptionalCountrySelection = false; ViewBag.ReferenceData = refData; ViewBag.ConnectionIndex = 0; //connection counter shared by equipment details ViewBag.EnableEditView = true; if (Request.Form["editoption"] == "addconnection") { //add a placeholder for new equipment details if (poi.Connections == null) { poi.Connections = new List <API.Common.Model.ConnectionInfo>(); } //TODO: setup defaults poi.Connections.Add(new API.Common.Model.ConnectionInfo()); return(View(poi)); } if (Request.Form["editoption"].ToString().StartsWith("remove-equipment")) { //TODO:remove requested connection //poi.Connections.Remove(); string[] equipmentElementIDs = Request.Form["editoption"].ToString().Split('-'); int itemIndex = int.Parse(equipmentElementIDs[2]); poi.Connections.RemoveAt(itemIndex); return(View(poi)); } if (Request.Form["editoption"] == "preview") { //preview poi ViewBag.EnablePreviewMode = true; //reset any values provided as -1 to a standard default (unknown etc) PrepareDefaultsForBlankSelections(poi); //update preview of poi with fully populated reference data poi = new POIManager().PreviewPopulatedPOIFromModel(poi, refData.ReferenceData); InitEditReferenceData(poi); return(View(poi)); } if (ModelState.IsValid) { try { User user = null; if (IsUserSignedIn) { user = new UserManager().GetUser((int)UserID); } //reset any values provided as -1 to a standard default (unknown etc) PrepareDefaultsForBlankSelections(poi); if (poi.AddressInfo.Country == null || poi.AddressInfo.Country.ID == -1) { ModelState.AddModelError("Country", "Required"); } //perform actual POI submission, then redirect to POI details if we can var poiSubmissionResult = await new SubmissionManager().PerformPOISubmission(poi, user); if (poiSubmissionResult.IsValid) { if (poiSubmissionResult.ItemId > 0) { return(RedirectToAction("Details", "POI", new { id = poiSubmissionResult.ItemId, status = "editsubmitted" })); } else { return(RedirectToAction("Index")); } } else { ViewBag.ValidationFailed = true; ModelState.AddModelError("Country", "Required"); } } catch { //return View(poi); } } else { foreach (var modelState in ViewData.ModelState.Values) { foreach (var error in modelState.Errors) { System.Diagnostics.Debug.WriteLine(error.ToString()); } } } ViewBag.ReferenceData = new POIBrowseModel(GetCoreReferenceData()); return(View(poi)); }
// GET: /POI/ public ActionResult Index(POIBrowseModel filter) { if (filter == null) { filter = new POIBrowseModel(); filter.ShowAdvancedOptions = true; } var cpManager = new API.Common.POIManager(); //dropdown selections of -1 represent an intended null selection, fix this by nulling relevant items filter.CountryIDs = this.ConvertNullableSelection(filter.CountryIDs); filter.LevelIDs = this.ConvertNullableSelection(filter.LevelIDs); filter.ConnectionTypeIDs = this.ConvertNullableSelection(filter.ConnectionTypeIDs); filter.OperatorIDs = this.ConvertNullableSelection(filter.OperatorIDs); filter.StatusTypeIDs = this.ConvertNullableSelection(filter.StatusTypeIDs); filter.UsageTypeIDs = this.ConvertNullableSelection(filter.UsageTypeIDs); filter.DataProviderIDs = this.ConvertNullableSelection(filter.DataProviderIDs); filter.IncludeComments = true; if (IsRequestByRobot) { //force mirror db when browser is a robot filter.AllowMirrorDB = true; } if (!String.IsNullOrWhiteSpace(filter.Country)) { //TODO: cache country id lookup var countrySelected = new OCM.API.Common.ReferenceDataManager().GetCountryByName(filter.Country); if (countrySelected != null) { filter.CountryIDs = new int[] { countrySelected.ID }; } } else { //default to UK // if (filter.CountryIDs == null) filter.CountryIDs = new int[] { 1 }; } filter.MaxResults = 100; if (!String.IsNullOrWhiteSpace(filter.SearchLocation)) { if (filter.SearchLocation.ToUpper().StartsWith("OCM-")) { filter.SearchLocation = filter.SearchLocation.Replace("OCM-", ""); } if (filter.SearchLocation.ToUpper().StartsWith("OCM")) { filter.SearchLocation = filter.SearchLocation.Replace("OCM", ""); } if (IsNumeric(filter.SearchLocation.Trim())) { int poiID = -1; //treat numbers as OCM ref if (int.TryParse(filter.SearchLocation.Trim(), out poiID)) { filter.ChargePointIDs = new int[] { poiID }; } } else { //attempt to geocode var geocode = new GeocodingHelper(); string searchCountryName = null; if (filter.CountryIDs != null && filter.CountryIDs.Count() > 0) { var searchCountry = filter.ReferenceData.Countries.FirstOrDefault(c => c.ID == filter.CountryIDs[0]); searchCountryName = searchCountry.Title; } var position = geocode.GeolocateAddressInfo_Google(filter.SearchLocation.Trim() + (searchCountryName != null ? ", " + searchCountryName : "")); if (position != null) { filter.Latitude = position.Latitude; filter.Longitude = position.Longitude; if (filter.Distance == null) { filter.Distance = 50; } filter.DistanceUnit = API.Common.Model.DistanceUnit.Miles; //TODO: distance unit KM //if (distanceunit == "km") searchfilters.DistanceUnit = API.Common.Model.DistanceUnit.KM; ViewBag.FormattedAddress = position.Address; } } } filter.POIList = cpManager.GetChargePoints((OCM.API.Common.APIRequestParams)filter); return(View(filter)); }
public ActionResult Edit(ChargePoint poi) { var refData = new POIBrowseModel(); refData.AllowOptionalCountrySelection = false; ViewBag.ReferenceData = refData; ViewBag.ConnectionIndex = 0; //connection counter shared by equipment details ViewBag.EnableEditView = true; if (Request["editoption"] == "addconnection") { //add a placeholder for new equipment details if (poi.Connections == null) { poi.Connections = new List <ConnectionInfo>(); } //TODO: setup defaults poi.Connections.Add(new ConnectionInfo()); return(View(poi)); } if (Request["editoption"].ToString().StartsWith("remove-equipment")) { //TODO:remove requested connection //poi.Connections.Remove(); string[] equipmentElementIDs = Request["editoption"].ToString().Split('-'); int itemIndex = int.Parse(equipmentElementIDs[2]); poi.Connections.RemoveAt(itemIndex); return(View(poi)); } if (Request["editoption"] == "preview") { //preview poi ViewBag.EnablePreviewMode = true; //update preview of poi with fully populated reference data poi = new POIManager().PreviewPopulatedPOIFromModel(poi); InitEditReferenceData(poi); return(View(poi)); } if (ModelState.IsValid) { try { User user = null; if (IsUserSignedIn) { user = new UserManager().GetUser((int)Session["UserID"]); } //reset any values provided as -1 to a standard default (unknown etc) //the binding method varies between hidden fields and dropdown values (FIXME) if (poi.DataProvider != null && poi.DataProvider.ID > 0) { poi.DataProviderID = poi.DataProvider.ID; } if (poi.DataProviderID == -1 || poi.DataProviderID == null) { poi.DataProvider = null; poi.DataProviderID = (int)StandardDataProviders.OpenChargeMapContrib; } if (poi.OperatorInfo != null) { poi.OperatorID = poi.OperatorInfo.ID; } else { poi.OperatorID = (int)StandardOperators.UnknownOperator; } if (poi.UsageType != null) { poi.UsageTypeID = poi.UsageType.ID; } else { poi.UsageTypeID = (int)StandardUsageTypes.Unknown; } if (poi.StatusType != null && (poi.StatusTypeID == -1 || poi.StatusTypeID == null)) { poi.StatusTypeID = poi.StatusType.ID; } if (poi.StatusTypeID == -1 || poi.StatusTypeID == null) { poi.StatusType = null; poi.StatusTypeID = (int)StandardStatusTypes.Unknown; } if (poi.SubmissionStatusTypeID == -1) { poi.SubmissionStatus = null; poi.SubmissionStatusTypeID = null; } if (poi.Connections != null) { foreach (var connection in poi.Connections) { if (connection.ConnectionTypeID == -1) { connection.ConnectionType = null; connection.ConnectionTypeID = (int)StandardConnectionTypes.Unknown; } if (connection.CurrentTypeID == -1) { connection.CurrentType = null; connection.CurrentTypeID = null; } if (connection.StatusTypeID == -1) { connection.StatusType = null; connection.StatusTypeID = (int)StandardStatusTypes.Unknown; } if (connection.LevelID == -1) { connection.Level = null; connection.LevelID = null; } } } if (poi.AddressInfo.Country == null || poi.AddressInfo.Country.ID == -1) { ModelState.AddModelError("Country", "Required"); } //perform actual POI submission, then redirect to POI details if we can int poiSubmissionID = new SubmissionManager().PerformPOISubmission(poi, user); if (poiSubmissionID > -1) { if (poiSubmissionID > 0) { return(RedirectToAction("Details", "POI", new { id = poiSubmissionID, status = "editsubmitted" })); } else { return(RedirectToAction("Index")); } } else { ViewBag.ValidationFailed = true; } } catch { //return View(poi); } } else { foreach (ModelState modelState in ViewData.ModelState.Values) { foreach (ModelError error in modelState.Errors) { System.Diagnostics.Debug.WriteLine(error.ToString()); } } } ViewBag.ReferenceData = new POIBrowseModel(); return(View(poi)); }