Beispiel #1
0
        public ActionResult AddCitiesToUser([FromBody] JWTWithObject <List <string> > JWTWithCityNames)
        {
            var jwtFromDb = _db.JWTs
                            .FirstOrDefault(o => o.Value == JWTWithCityNames.JwtValue);

            if (jwtFromDb == null)
            {
                return(NotFound("No such JWT"));
            }

            var userFromDb = _db.Users
                             .FirstOrDefault(o => o.JWT == jwtFromDb);

            if (userFromDb == null)
            {
                return(NotFound("No such JWT"));
            }

            //подгружаем его прогнозы для нахожденія повторок
            _db.Entry(userFromDb).Collection(u => u.UserWeatherForecasts).Load();

            //для каждого города із переданного спіска
            foreach (var city in JWTWithCityNames.Object)
            {
                var forecastFromDb = _db.WeatherForecasts
                                     .FirstOrDefault(f => f.City == city);
                //еслі данного города нет, то нічего не делаем
                if (forecastFromDb == null)
                {
                    continue;
                }

                //еслі данный город уже есть в спіске у юзера, то нічего не делаем
                if (userFromDb.UserWeatherForecasts.
                    FirstOrDefault(uwf => uwf.WeatherForecastId == forecastFromDb.Id) != null)
                {
                    continue;
                }

                //іначе добавляем прогноз к юзеру
                var uwf = new UserWeatherForecast
                {
                    UserLogin         = userFromDb.Login,
                    WeatherForecastId = forecastFromDb.Id,
                };
                userFromDb.UserWeatherForecasts.Add(uwf);
                forecastFromDb.UserWeatherForecasts.Add(uwf);
            }
            _db.SaveChanges();
            return(Ok());
        }
Beispiel #2
0
        public UserWeatherForecast Get()
        {
            _logger.LogInformation("Getting Five Day Forecast");

            _logger.LogDebug("Checking for user token");

            int?userId = null;
            var uwf    = new UserWeatherForecast()
            {
                UserId = userId
            };

            if (userId.HasValue)
            {
                _logger.LogDebug("Token found: Reading database for user details");
            }
            else
            {
                _logger.LogDebug("Anonymous access: Returning default weather");
                uwf.UserLocationForecasts = new List <ForecastLocation>();

                var defaultLocation = new ForecastLocation()
                {
                    LocationCode = 0,
                    LocationName = "Default Location",
                    Forecast     = new List <WeatherForecast>()
                };

                uwf.UserLocationForecasts.Add(defaultLocation);
            }

            foreach (var loc in uwf.UserLocationForecasts)
            {
                loc.Forecast.AddRange(GetRandomFiveDays());
            }

            return(uwf);
        }