private void GetMovies( string movieName = null, int year = 0, string country = null, string director = null, string actor = null) { GetMoviesAsyncHelper.OnCompletedEventHandler onCompletedHandler = null; var criteriaParts = new List <string>(); if (!String.IsNullOrEmpty(movieName)) { criteriaParts.Add(String.Format("\"{0}\"", movieName)); } if (year != 0) { criteriaParts.Add(year.ToString()); } if (!String.IsNullOrEmpty(country)) { criteriaParts.Add(String.Format("\"{0}\"", country)); } if (!String.IsNullOrEmpty(director)) { criteriaParts.Add(String.Format("\"{0}\"", director)); } if (!String.IsNullOrEmpty(actor)) { criteriaParts.Add(String.Format("\"{0}\"", actor)); } var criteria = String.Join(", ", criteriaParts); onCompletedHandler = ((movies) => { getMovies.OnCompleted -= onCompletedHandler; catalogView.Invoke(new Action(() => { moviesGridViewModel.Movies = movies; catalogView.SetGridTitle(criteria == "" ? Properties.Resources.GridTitleAllMovies : String.Format(Properties.Resources.GridTitleSearchResult, criteria)); catalogView.SetGridStatus(true); catalogView.SetEnabledState(true); })); }); getMovies.OnCompleted += onCompletedHandler; getMovies.GetMovies(movieName, year, country, director, actor); }
internal Form RenderMainView() { InitSearchView(); catalogView = new CatalogView(moviesGridViewModel, new DirectorsAutocompleteSource(directorRepository), new ActorsAutocompleteSource(actorRepository)); catalogView.RefillDatabase += (async() => { await actorRepository.DropAll(); await directorRepository.DropAll(); await movieRepository.DropAll(); await DefaultDataHelper.FillRepositories(movieRepository, directorRepository, actorRepository); GetMovies(); }); catalogView.SaveMovie += SaveMovie; catalogView.DeleteFilm += DeleteMovie; catalogView.EditFilm += (List <Movie> selected) => { if (selected.Count > 0) { var movie = selected[0]; editMovieViewModel = new EditMovieViewModel(); catalogView.ShowMovieEditForm(editMovieViewModel); editMovieViewModel.MovieId = movie.MovieId; editMovieViewModel.Name = movie.Name; editMovieViewModel.Year = movie.Year; editMovieViewModel.Country = movie.Country; editMovieViewModel.Image = movie.Image; editMovieViewModel.Actors = new List <Actor>(movie.Actors); editMovieViewModel.Director = movie.Director; } }; catalogView.AddMovieActor += (async(name) => { var query = actorRepository.GetAll().Where(actor => actor.Name == name); var foundActor = (await actorRepository.ToListAsync(query)).FirstOrDefault(); if (foundActor != null) { editMovieViewModel.Actors.Add(foundActor); } else { var newActor = new Actor() { Name = name }; await actorRepository.Save(newActor); editMovieViewModel.Actors.Add(newActor); } }); catalogView.FindFilm += (() => { if (searchView.IsDisposed) { InitSearchView(); } searchView.Show(); searchView.Activate(); searchView.Left = catalogView.Left + catalogView.Width / 2 - searchView.Width / 2; catalogView.FindMovieMenuItem.Checked = true; catalogView.ExitMenuItem.Enabled = false; }); catalogView.GoBack += (() => { GetMovies(); catalogView.ShowMovieGrid(); }); catalogView.AboutOpen += (() => { var aboutView = new AboutView(); aboutView.ShowDialog(); }); catalogView.DeleteActor += ((position) => { editMovieViewModel.ActorsRemoveAt(position); }); getMovies.OnStarted += (() => { catalogView.SetEnabledState(false); catalogView.SetGridStatus(false); catalogView.SetGridTitle(Properties.Resources.GridTitleLoading); }); GetMovies(); return(catalogView); }