public void AddNewNode(AddNewNodeQueryParams parameters) { GeocodingAddressModelQueryParams address = new GeocodingAddressModelQueryParams(parameters.Street, parameters.DoorNumber, parameters.PostalCode, parameters.County, parameters.District); Station stationAdded = new Station(); //TODO: REFACTOR THIS RootGeocodingDataModel <GeocodingAddressResponseModel> coords = _geocodingDomain.GetCoordsFromAddress(address); Location location = _locationDomain.RetrieveLocation(coords.Data.FirstOrDefault().Latitude, coords.Data.FirstOrDefault().Longitude); if (location == null) { District district = _districtDomain.GetDistrictByDistrictName(address.District); County county = _countyDomain.GetCountyByCountyName(address.County); _locationDomain.InsertLocationData(location, district.Id_District, county.CountyId); location = _locationDomain.RetrieveLocation(coords.Data.FirstOrDefault().Latitude, coords.Data.FirstOrDefault().Longitude); } //SE nao for um sensor real procurar a estação metereologica mais proxima, adicionar a bd, e depois adiconar o no a apontar para a estação if (parameters.IsRealSensor != true) { var stationAddedInfo = _weatherStationApplication .AddWeatherStationToDatabase(address); stationAdded = _weatherStationApplication.RetrieveStationByStationName(stationAddedInfo.station.Name); Location locationStationAddded = stationAddedInfo.locationStations; SmartIrrigationModels.Models.DTOS.Node nodeAdded = _nodeDomain.AddNewNode(parameters, location.Id_Location, stationAdded.Id_Station ?? -1); _weatherStationApplication.AddWeatherStationDataToDatabase(stationAdded, locationStationAddded, nodeAdded); } else { //se for um sensor real, adiciona o no com o IdNearStation a -1 e depois adiciona os sensores a apontar para o no No _nodeDomain.AddNewNode(parameters, location.Id_Location, -1); foreach (var sensor in parameters.SensorsImplemented) { _sensorDomain.AddNewSensor(parameters.Street, sensor, location.Id_Location ?? -1); } } }
public int InsertLocationData(RootGeocodingDataModel <GeocodingAddressResponseModel> data, int Id_District, int Id_County) { int affectedRows = 0; using (IDbConnection db = new SqlConnection(_connectionString)) { foreach (GeocodingAddressResponseModel location in data.Data) { string sql = "IF NOT EXISTS (SELECT Latitude,Longitude FROM Location WHERE Latitude = @Latitude AND Longitude=@Longitude) INSERT INTO Location (Latitude,Longitude,Altitude,Description,id_District,Id_Countie) Values (@Latitude,@Longitude,@Altitude,@Description,@Id_District,@Id_County)"; affectedRows += db.Execute(sql, new { Latitude = location.Latitude, Longitude = location.Longitude, Altitude = 0, Description = location.Name, Id_District = Id_District, Id_County = Id_County }); } } return(affectedRows); }
public void SaveNewLocation(GeocodingAddressModelQueryParams parameters) { //get data from API RootGeocodingDataModel <GeocodingAddressResponseModel> data = _geocodingDomain.GetCoordsFromAddress(parameters); County county = _countiesDomain.GetCountyByCountyName(parameters.County); if (county != null) { District district = _districtDomain.RetrieveDistrictByCountyName(parameters.County); //save in database int affectedRows = _locationDomain.InsertLocationData(data, district.Id_District, county.CountyId); } }
public RootGeocodingDataModel <GeocodingAddressResponseModel> GetCoordsFromAddress(GeocodingAddressModelQueryParams queryparams) { RestClient client = new RestClient($"{_config.GetConfiguration("PositionStackAPI:APIBASICURI")}forward"); var request = new RestRequest(); request.AddHeader("Accept", "*/*"); request.AddHeader("Accept-Encoding", "gzip, deflate"); request.AddHeader("User-Agent", "runscope/0.1"); request.Method = Method.GET; request.AddParameter("access_key", _config.GetConfiguration("PositionStackAPI:APIKEY")); request.AddParameter("query", $"{queryparams.Street}, {queryparams.County},{queryparams.District}"); var response = client.Execute(request); RootGeocodingDataModel <GeocodingAddressResponseModel> content = JsonConvert.DeserializeObject <RootGeocodingDataModel <GeocodingAddressResponseModel> >(response.Content); foreach (var data in content.Data) { data.Latitude.Replace(',', '.'); data.Longitude.Replace(',', '.'); } return(content); }
public IActionResult GetAdressFromCoords(string latitude, string longitude) { RootGeocodingDataModel <GeocodingAddressResponseModel> data = _geocodingApplication.GetAddressFromCoords(latitude, longitude); return(Ok(data)); }
public IActionResult GetCoordsFromAddress([FromQuery] GeocodingAddressModelQueryParams queryparams) { RootGeocodingDataModel <GeocodingAddressResponseModel> data = _geocodingApplication.GetCoordsFromAddress(queryparams); return(Ok(data)); }
public int InsertLocationData(RootGeocodingDataModel <GeocodingAddressResponseModel> data, int Id_District, int Id_County) => _locationRepository.InsertLocationData(data, Id_District, Id_County);