public async Task AddAsync(CityTemperature cityTemperature)
        {
            const string insertCommand = @"insert into CityTemperature ([Key], [CityKey], [Temperature], [CreatedOn]) Values (@key, @cityKey, @temperature, @createdOn)";

            using (var connection = GetConnection())
            {
                try
                {
                    using (var command = connection.CreateCommand())
                    {
                        command.CommandText = insertCommand;
                        command.Parameters.Add(CreateParameter("@key", SqlDbType.UniqueIdentifier, cityTemperature.Key));
                        command.Parameters.Add(CreateParameter("@cityKey", SqlDbType.UniqueIdentifier, cityTemperature.CityKey));
                        command.Parameters.Add(CreateParameter("@temperature", SqlDbType.Int, cityTemperature.Temperature));
                        command.Parameters.Add(CreateParameter("@createdOn", SqlDbType.DateTime, cityTemperature.CreatedOn));
                        connection.Open();
                        command.Prepare();
                        await command.ExecuteNonQueryAsync();
                    }
                }
                finally
                {
                    connection.Close();
                }
            }
        }
        public void Remove(CityTemperature cityTemp)
        {
            if (cityTemp == null)
            {
                throw new ArgumentNullException(nameof(cityTemp));
            }

            _context.CityTemperatures.Remove(cityTemp);
            _context.SaveChanges();
        }
Exemplo n.º 3
0
        public void OnCreateCityTemperatureWithCityKeyAndTemperature()
        {
            var cityKey     = Guid.NewGuid();
            var temperature = Faker.RandomNumber.Next(0, 30);

            var cityTemperature = new CityTemperature(cityKey, temperature);

            cityTemperature.CreatedOn.Should().BeBefore(DateTime.UtcNow);
            cityTemperature.DeletedAt.Should().BeNull();
            cityTemperature.IsDeleted.Should().BeFalse();
            cityTemperature.CityKey.Should().Be(cityKey);
            cityTemperature.Temperature.Should().Be(temperature);
        }
Exemplo n.º 4
0
        public void OnCreateCityTemperature()
        {
            var key         = Guid.NewGuid();
            var cityKey     = Guid.NewGuid();
            var temperature = Faker.RandomNumber.Next(0, 30);
            var createdOn   = DateTime.UtcNow.AddDays(-24);

            var cityTemperature = new CityTemperature(key, cityKey, temperature, createdOn);

            cityTemperature.CreatedOn.Should().Be(createdOn);
            cityTemperature.DeletedAt.Should().BeNull();
            cityTemperature.IsDeleted.Should().BeFalse();
            cityTemperature.CityKey.Should().Be(cityKey);
            cityTemperature.Temperature.Should().Be(temperature);
            cityTemperature.Key.Should().Be(key);
        }
Exemplo n.º 5
0
        /// <summary>
        /// Get the city temperature
        /// </summary>
        /// <param name="cityName">City name</param>
        /// <param name="metric">Metric in celsius/fahrenheit</param>
        public async Task <CityTemperature> GetCityTemperature(string cityName, Metric metric)
        {
            var client    = _httpClientFactory.CreateClient("WeatherClient");
            var url       = $"http://api.openweathermap.org/data/2.5/weather?q={cityName}&appid={_options.APIKEY}";
            var stringRes = await client.GetStringAsync(url);

            var res = JsonSerializer.Deserialize <WeatherResponce>(stringRes);

            var temp = metric == Metric.Celsius
                ? ConvertKelvinToCelsius(res.Main.Temp)
                : ConvertKelvinToFarenheit(res.Main.Temp);

            var result = new CityTemperature
            {
                City        = cityName,
                Metric      = metric,
                Temperature = temp
            };

            return(result);
        }
Exemplo n.º 6
0
        public async Task <AddTemperatureResponseDto> AddTemperatureAsync(Guid cityKey, AddTemperatureRequestDto addTemperatureRequestDto)
        {
            var city = await CityRepository.GetByKeyAsync(cityKey);

            if (city == null)
            {
                return new AddTemperatureResponseDto {
                           Success = false, Message = "City not found."
                }
            }
            ;

            var weather = await WeatherService.GetWeatherByCityAsync(city.Name);

            if (weather.HasFailed)
            {
                return new AddTemperatureResponseDto {
                           Success = false, Message = "Failed on try get city temperature."
                }
            }
            ;

            var temperature = new CityTemperature(city.Key, weather.Results.Temperature);

            await CityTemperatureRepository.AddAsync(temperature);

            return(new AddTemperatureResponseDto
            {
                Data = new CityTemperatureDto
                {
                    City = city.Name,
                    Temperature = temperature.Temperature,
                    CreatedOn = temperature.CreatedOn.ToString("s")
                },

                Success = true
            });
        }
 public void AddCityTemperature(CityTemperature cityTemperature)
 {
     _cityTemperatures.Add(cityTemperature);
 }