private async Task <String> GetRoute(ParkingYard.YardLocation Origin, ParkingYard.YardLocation Destination) { StringBuilder googleRoutesUrl = new StringBuilder(@"https://maps.googleapis.com/maps/api/directions/json"); googleRoutesUrl.Append("?origin=" + Origin.Latitude + ',' + Origin.Longitude); googleRoutesUrl.Append("&destination=" + Destination.Latitude + ',' + Destination.Longitude); googleRoutesUrl.Append("&sensor=true"); googleRoutesUrl.Append("&key=" + APIKEY); string url = googleRoutesUrl.ToString(); WebRequest request = WebRequest.Create(url); WebResponse response = request.GetResponse(); Stream data = response.GetResponseStream(); StreamReader reader = new StreamReader(data); string responseFromServer = reader.ReadToEnd(); response.Close(); return(responseFromServer); }
public async Task <Response> GetNearByPlaces(double Lat, double Lng, String Category, double Proximity_Radius) { StringBuilder googlePlacesUrl = new StringBuilder(@"https://maps.googleapis.com/maps/api/place/nearbysearch/json?"); googlePlacesUrl.Append("location=" + Lat + "," + Lng); googlePlacesUrl.Append("&radius=" + Proximity_Radius); googlePlacesUrl.Append("&type=" + Category); googlePlacesUrl.Append("&sensor=true"); googlePlacesUrl.Append("&key=" + APIKEY); string url = googlePlacesUrl.ToString(); Response rsp = new Response(); try { HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url); HttpWebResponse response = (HttpWebResponse)request.GetResponse(); rsp.Code = Convert.ToInt32(response.StatusCode); Stream data = response.GetResponseStream(); StreamReader reader = new StreamReader(data); // json-formatted string from maps api string responseFromServer = reader.ReadToEnd(); StringBuilder Response = new StringBuilder(); JObject JSONObject = JObject.Parse(responseFromServer); JArray jarr = new JArray(); jarr = (JArray)JSONObject["results"]; response.Close(); String res = null; for (int count = 0; count < jarr.Count; count++) { JObject Location = new JObject(); Location = (JObject)jarr[count]["geometry"]["location"]; res = Location.GetValue("lat").ToString(); ParkingYard.YardLocation DestinPark, OriginPark; OriginPark = new ParkingYard.YardLocation(); OriginPark.Latitude = Lat; OriginPark.Longitude = Lng; DestinPark = new ParkingYard.YardLocation(); DestinPark.Latitude = Convert.ToDouble(Location.GetValue("lat")); DestinPark.Longitude = Convert.ToDouble(Location.GetValue("lng")); string RouteResult = await GetRoute(OriginPark, DestinPark); JArray PhotosArray = (JArray)jarr[count]["photos"]; string PlaceImage = null; if (PhotosArray != null) { PlaceImage = await GetPlaceImage((PhotosArray[0]["photo_reference"]).ToString()); } else { PlaceImage = null; } JObject RoutesObject = JObject.Parse(RouteResult); JObject JarrObject = (JObject)jarr[count]; JarrObject.Add("place image", PlaceImage); JarrObject.Add("routes", RoutesObject); jarr[count] = JarrObject; } rsp.Data = jarr.ToString(); rsp.Message = response.StatusDescription; } catch (WebException e) { rsp = new Response(); if (e.Status == WebExceptionStatus.ProtocolError) { rsp.Code = Convert.ToInt32(((HttpWebResponse)e.Response).StatusCode); } rsp.Code = 404; rsp.Message = "No Internet Connection"; } return(rsp); }
public async Task <JObject> Parks([FromUri] double lat, [FromUri] double lng) { maps mp = new maps(); Response Response = new Response(); Response = await mp.GetNearByPlaces(lat, lng, "parking", 10000); JObject Error = new JObject(); if (Response.Code == 200) { Error.Add("Code", Response.Code); Error.Add("Message", "Success"); ParkingYard Yard = new ParkingYard(); JArray jarr = JArray.Parse(Response.Data); for (int count = 0; count < jarr.Count; count++) { Yard.Image = jarr[count]["place image"].ToString(); Yard.Name = jarr[count]["name"].ToString(); Yard.Place_ID = jarr[count]["place_id"].ToString(); Yard.Reference = jarr[count]["reference"].ToString(); ParkingYard.YardLocation YardLocation = new ParkingYard.YardLocation(); YardLocation.Name = jarr[count]["vicinity"].ToString(); YardLocation.Latitude = Convert.ToDouble(jarr[count]["geometry"]["location"]["lat"]); YardLocation.Longitude = Convert.ToDouble(jarr[count]["geometry"]["location"]["lng"]); Yard.Location = YardLocation; ParkRepo = new ParkRepository(); if (await ParkRepo.CreateParkingYard(Yard)) { Response.Message = "Parking Created Successfully"; } else { Response.Message = "Parking Already exists"; } JObject Parking = new JObject(); ParkingYard py = ParkRepo.GetParkingYard(Yard.Place_ID); JObject Space = new JObject(); Space.Add("space id", py.Spaces.Space_ID); Space.Add("space count", py.Spaces.Count); Space.Add("used spaces", py.Spaces.UsedSpaces); JObject Location = new JObject(); Location.Add("id", py.Location.id); Location.Add("name", py.Location.Name); Parking.Add("park_id", py.id); Parking.Add("Space", Space); Parking.Add("Location", Location); JObject FinalJarr = (JObject)jarr[count]; FinalJarr.Add("Park Data", Parking); jarr[count] = FinalJarr; } // JArray FinalJSONArray = (JArray)jarr; Error.Add("values", jarr); } else { Error.Add("Code", Response.Code); Error.Add("Message", Response.Message); Error.Add("Values", Response.Data); } return(Error); }
public ParkingYard [] GetParkingYards() { List <ParkingYard> YardList = new List <ParkingYard>(); using (Con = new SqlConnection(GC.ConnectionString)) { if (Con.State == ConnectionState.Closed) { Con.Open(); } Query = "Select * from Park p left join Park_Location pl on p.ID=pl.Park_ID left join Park_spaces on pl.park_id=park_spaces.park_id"; using (Com = new SqlCommand(Query, Con)) { Reader = Com.ExecuteReader(); while (Reader.Read()) { ParkingYard Yard = new ParkingYard(); Yard.id = Convert.ToInt32(Reader["ID"].ToString()); Yard.Name = Reader["Name"].ToString(); Yard.Reference = Reader["placeref"].ToString(); Yard.Place_ID = Reader["placeid"].ToString(); Yard.Image = Reader["Image"].ToString(); //Get Yard Location ParkingYard.YardLocation yardlocation = new ParkingYard.YardLocation(); if (Reader["L_ID"] != DBNull.Value) { yardlocation.id = Convert.ToInt32(Reader["L_ID"].ToString()); } if (Reader["Long"] != DBNull.Value) { yardlocation.Longitude = Convert.ToDouble(Reader["Long"].ToString()); } if (Reader["Lat"] != DBNull.Value) { yardlocation.Latitude = Convert.ToDouble(Reader["Lat"].ToString()); } if (Reader["Vicinity"] != DBNull.Value) { yardlocation.Name = Reader["Vicinity"].ToString(); } Yard.Location = yardlocation; //Get Yard Spaces ParkingYard.YardSpaces yardspaces = new ParkingYard.YardSpaces(); if (Reader["Space_id"] != DBNull.Value) { yardspaces.Space_ID = Convert.ToInt32(Reader["Space_id"].ToString()); } if (Reader["SpaceCount"] != DBNull.Value) { yardspaces.Count = Convert.ToInt32(Reader["SpaceCount"].ToString()); } if (Reader["UsedSpace"] != DBNull.Value) { yardspaces.UsedSpaces = Convert.ToInt32(Reader["UsedSpace"].ToString()); } Yard.Spaces = yardspaces; YardList.Add(Yard); } Com.Dispose(); } Con.Close(); } return(YardList.ToArray()); }
public ParkingYard GetParkingYard(int ParkID) { ParkingYard Yard = new ParkingYard(); using (Con = new MySqlConnection(GC.ConnectionString)) { if (Con.State == ConnectionState.Closed) { Con.Open(); } Query = "Select * from Parks left join park_geometry on Parks.ID=park_geometry.Park_ID left join Park_spaces on park_geometry.park_id=park_spaces.park_id where Parks.ID='" + ParkID + "'"; using (Com = new MySqlCommand(Query, Con)) { Reader = Com.ExecuteReader(); while (Reader.Read()) { Yard.id = Convert.ToInt32(Reader["ID"].ToString()); Yard.Name = Reader["Name"].ToString(); Yard.Reference = Reader["Reference"].ToString(); Yard.Place_ID = Reader["Place_ID"].ToString(); Yard.Image = Reader["Image"].ToString(); //Get Yard Location ParkingYard.YardLocation yardlocation = new ParkingYard.YardLocation(); if (Reader["L_ID"] != DBNull.Value) { yardlocation.id = Convert.ToInt32(Reader["L_ID"].ToString()); } if (Reader["Longitude"] != DBNull.Value) { yardlocation.Longitude = Convert.ToDouble(Reader["Longitude"].ToString()); } if (Reader["Latitude"] != DBNull.Value) { yardlocation.Latitude = Convert.ToDouble(Reader["Latitude"].ToString()); } if (Reader["Vicinity"] != DBNull.Value) { yardlocation.Name = Reader["Vicinity"].ToString(); } Yard.Location = yardlocation; //Get Yard Spaces ParkingYard.YardSpaces yardspaces = new ParkingYard.YardSpaces(); if (Reader["Space_id"] != DBNull.Value) { yardspaces.Space_ID = Convert.ToInt32(Reader["Space_id"].ToString()); } if (Reader["Space_Count"] != DBNull.Value) { yardspaces.Count = Convert.ToInt32(Reader["Space_Count"].ToString()); } if (Reader["Used"] != DBNull.Value) { yardspaces.UsedSpaces = Convert.ToInt32(Reader["Used"].ToString()); } Yard.Spaces = yardspaces; } Com.Dispose(); } Con.Close(); } return(Yard); }