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;
        }
Ejemplo n.º 3
0
 public IActionResult AddNewNode([FromBody] AddNewNodeQueryParams parameters)
 {
     _nodeApplication.AddNewNode(parameters);
     return(Ok());
 }
Ejemplo n.º 4
0
 public SmartIrrigationModels.Models.DTOS.Node AddNewNode(AddNewNodeQueryParams parameters, int?locationIdLocation, int idNearStation) =>
 _nodeRepository.AddNewNode(parameters, locationIdLocation, idNearStation);