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()); }
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); }