//[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); }
// // 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; //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); 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) 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 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); }
// // GET: /POI/Edit/5 public ActionResult Edit(int? id, bool createCopy = false) { if (id > 0) { ChargePoint poi = null; if (createCopy) { //get version of POI with location details removed, copying equipment etc poi = new POIManager().GetCopy((int)id, true); } else { poi = new POIManager().Get((int)id); } if (poi != null) { InitEditReferenceData(poi); var refData = new POIBrowseModel(); ViewBag.ReferenceData = refData; ViewBag.HideAdvancedInfo = true; if (!createCopy) { 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"); }