public async Task <IActionResult> Index() { try { List <Movie> newCmdbMovies = new List <Movie>(); List <MovieDTO> cmdbList = cmdbRepository.GetMoviesCmdb().Result.ToList(); if (string.IsNullOrEmpty(HttpContext.Session.GetString("MovieList"))) { viewModel = await cmdbRepository.PresentIndex(); HttpContext.Session.SetString("MovieList", JsonConvert.SerializeObject(viewModel.MovieList)); } else if (!string.IsNullOrEmpty(HttpContext.Session.GetString("MovieList"))) { sessionList = JsonConvert.DeserializeObject <List <Movie> >(HttpContext.Session.GetString("MovieList")); if (listHandler.CheckForNewMovies(cmdbList, sessionList)) { newCmdbMovies = await listHandler.AddNewMovies(cmdbList, sessionList); } } viewModel = new HomeViewModel(JsonConvert.DeserializeObject <List <Movie> >(HttpContext.Session.GetString("MovieList"))); viewModel.SavedList = JsonConvert.DeserializeObject <List <Movie> >(HttpContext.Session.GetString("MovieList")); viewModel = listHandler.UpdateChangesHome(newCmdbMovies, cmdbList, viewModel); HttpContext.Session.SetString("MovieList", JsonConvert.SerializeObject(viewModel.SavedList)); return(View(viewModel)); } catch (Exception ex) { ErrorViewModel viewModel = new ErrorViewModel(); viewModel.ErrorMessage = ex.InnerException.Message; return(View("Error", viewModel)); } }