public WeatherForecastController(IDropdownCity cityList, IWeatherForecast weatherService,
     IFavoriteCityContext context)
 {
     this.cityList = cityList;
     this.weatherService = weatherService;
     this.context = context;
 }
        // GET: /WeatherForecast/Index
        public async Task<ActionResult> Index()
        {
            var favoriteCitiesList = new List<City>();
            using (context = new FavoriteCityContext())
            {
                foreach (var item in await context.Cities.ToListAsync())
                {
                    if (!favoriteCitiesList.Any(x => x.Name.Equals(item.Name)))
                        favoriteCitiesList.Add(new City() {Name = item.Name});
                }
            }

            return View(favoriteCitiesList);
        }
        // GET: /WeatherForecast/Index
        public async Task<ActionResult> AddToFavorite(City city)
        {
            using (context = new FavoriteCityContext())
            {
                if (!context.CheckCity(city))
                {
                    await context.AddCity(city);
                }
                else
                {
                    return View("ErrorRequest",
                        new RootObject {Cod = 409, ErrorMessage = "A city with the same name already exists!"});
                }
            }

            return Redirect("/WeatherForecast/Index");
        }
        // GET: /WeatherForecast/Index
        public async Task<RedirectResult> DeleteFromFavorite(string city)
        {
            using (context = new FavoriteCityContext())
            {
                await context.RemoveCity(city);
            }

            return Redirect("/WeatherForecast/Index");
        }
 // GET: /WeatherForecast/ForecastHistory
 public async Task<ActionResult> ForecastHistory()
 {
     var temp = new List<RootObject>();
     using (context = new FavoriteCityContext())
     {
         await context.GetRootObjectList(temp);
     }
     return View(temp);
 }