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 Node AddNewNode(AddNewNodeQueryParams parameters, int?IdLocation, int idNearStation) { using (IDbConnection db = new SqlConnection(_connectionString)) { //string sqlSelect = "Select Count(*) From Node"; //int count =db.QueryFirst<int>(sqlSelect); string sqlInsert = $"IF NOT EXISTS (SELECT IdNode FROM Node WHERE IdLocation = @IdLocation) INSERT INTO Node (Description,IdLocation,IdNearStation,IsEnable,IsRealSensor,IsSprinklerOn, IsLightOn, IsSecurityCameraOn) Values (@Description,@IdLocation,@Id_NearStation,@Is_enable,@Is_RealSensor,@Is_Sprinkler, @is_LightOn, @is_SecurityCameraOn)"; int insertedRows = db.Execute(sqlInsert, new { Description = parameters.Street, IdLocation = IdLocation, Altitude = 0, Id_NearStation = idNearStation, Is_enable = 1, Is_RealSensor = parameters.IsRealSensor, Is_Sprinkler = 0, is_LightOn = 0, is_SecurityCameraOn = 0 }); if (insertedRows > 0) { string sqlRetriveveNode = $@"Select top 1 * From Node order by IdNode desc"; return(db.QueryFirstOrDefault <Node>(sqlRetriveveNode)); } else { string sqlRetriveveNode = $@"Select top 1 * From Node WHERE IdLocation = @IdLocation order by IdNode desc"; return(db.QueryFirstOrDefault <Node>(sqlRetriveveNode, new { IdLocation = IdLocation })); } } //return affectedRows; }
public IActionResult AddNewNode([FromBody] AddNewNodeQueryParams parameters) { _nodeApplication.AddNewNode(parameters); return(Ok()); }
public SmartIrrigationModels.Models.DTOS.Node AddNewNode(AddNewNodeQueryParams parameters, int?locationIdLocation, int idNearStation) => _nodeRepository.AddNewNode(parameters, locationIdLocation, idNearStation);