Exemplo n.º 1
0
        public IActionResult AddNewSensor([FromBody] GeocodingAddressModelQueryParams address, bool isEnable = false)
        {
            var data = _sensorApplication.AddNewSensor(address, isEnable);

            if (data == -1)
            {
                return(NotFound("Node not found for this Sensor, please create a node first"));
            }
            return(Ok(data));
        }
        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 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 (Station station, Location locationStations) AddWeatherStationToDatabase(GeocodingAddressModelQueryParams parameters)
        {
            #region LocationOfParametersSent

            GeocodingAddressResponseModel locationquerycoords = _geocodingDomain.GetCoordsFromAddress(parameters).Data.FirstOrDefault();
            District district = _districtDomain.GetDistrictByDistrictName(parameters.District);
            County   county   = _countiesDomain.GetCountyByCountyName(parameters.County);

            Location locationquery = new Location(locationquerycoords.Latitude, locationquerycoords.Longitude, "0", locationquerycoords.Name, district.Id_District, county.CountyId);
            _locationDomain.InsertLocationData(locationquery, district.Id_District, county.CountyId);

            WeatherStationWithParamsModel nearbyWeatherStation =
                _weatherStationDomain.FindNearByStationFromLatLong(new FindNearbyStationModel(float.Parse(locationquerycoords.Latitude, CultureInfo.InvariantCulture.NumberFormat),
                                                                                              float.Parse(locationquerycoords.Longitude, CultureInfo.InvariantCulture.NumberFormat), 8, null));

            #endregion LocationOfParametersSent

            //Location id nearbyWeatherStation
            Location locationStation = new Location(nearbyWeatherStation.Latitude.ToString().Replace(',', '.'), nearbyWeatherStation.Longitude.ToString().Replace(',', '.'), nearbyWeatherStation.Elevation.ToString().Replace(',', '.'), nearbyWeatherStation.Name.En, district.Id_District, county.CountyId);

            //Insert if not exists
            _locationDomain.InsertLocationData(locationStation, district.Id_District, county.CountyId);

            //Add Weather station if not exists
            Station stationAdded = new Station(null, nearbyWeatherStation.Name.En, nearbyWeatherStation.Country, nearbyWeatherStation.Region, nearbyWeatherStation.National, nearbyWeatherStation.Wmo, nearbyWeatherStation.Icao, nearbyWeatherStation.Iata, nearbyWeatherStation.Elevation, nearbyWeatherStation.Timezone, nearbyWeatherStation.Active, _locationDomain.RetrieveLocation(nearbyWeatherStation.Latitude.ToString().Replace(',', '.'), nearbyWeatherStation.Longitude.ToString().Replace(',', '.')).Id_Location);
            _weatherStationDomain.AddWeatherStationToDatabase(stationAdded);



            return(stationAdded, locationStation);
        }
 public RootGeocodingDataModel <GeocodingAddressResponseModel> GetCoordsFromAddress(GeocodingAddressModelQueryParams queryparams) =>
 _forwardGeocoding.GetCoordsFromAddress(queryparams);
Exemplo n.º 6
0
        public IActionResult GetCoordsFromAddress([FromQuery] GeocodingAddressModelQueryParams queryparams)
        {
            RootGeocodingDataModel <GeocodingAddressResponseModel> data = _geocodingApplication.GetCoordsFromAddress(queryparams);

            return(Ok(data));
        }
 public IActionResult SaveNewLocation([FromBody] GeocodingAddressModelQueryParams parameters)
 {
     _locationApplication.SaveNewLocation(parameters);
     return(Ok());
 }
        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 RootGeocodingDataModel <GeocodingAddressResponseModel> GetCoordsFromAddress(GeocodingAddressModelQueryParams queryparams) =>
 _geocodongDomain.GetCoordsFromAddress(queryparams);
 public int AddNewSensor(GeocodingAddressModelQueryParams address, in bool isEnable)
        public IActionResult AddWeatherStationToDatabase([FromBody] GeocodingAddressModelQueryParams parameters)
        {
            var stationAdded = _weatherStationApplication.AddWeatherStationToDatabase(parameters);

            return(Ok(stationAdded.station));
        }