public MovieEditorWindowViewModel(IMovieEditorWindow view, Movie movie, MovieRepository repository)
        {
            if (movie == null)
            {
                createMode = true;
                movie      = new Movie();
            }

            this.view       = view;
            this.repository = repository;
            Movie           = movie;

            Genres    = new ObservableCollection <Genre>(repository.GetGenres());
            AgeLimits = repository.GetAgeLimits().ToList();

            if (createMode)
            {
                return;
            }

            var limit = AgeLimits.FirstOrDefault(_ => _.Id == movie.AgeLimit.Id);

            view.SelectedAgeLimitIndex = AgeLimits.IndexOf(limit);

            var selectedGenres = Genres.Join(movie.Genres,
                                             genre => genre.Id,
                                             genre => genre.Id,
                                             (genre1, genre2) => genre1).ToList();

            selectedGenres.ForEach(_ => _.IsSelected = true);
        }
        public MovieEditorWindowViewModel(IMovieEditorWindow view, Movie movie, MovieRepository repository)
        {
            if (movie == null)
            {
                createMode = true;
                movie = new Movie();
            }

            this.view = view;
            this.repository = repository;
            Movie = movie;

            Genres = new ObservableCollection<Genre>(repository.GetGenres());
            AgeLimits = repository.GetAgeLimits().ToList();

            if (createMode) return;

            var limit = AgeLimits.FirstOrDefault(_ => _.Id == movie.AgeLimit.Id);
            view.SelectedAgeLimitIndex = AgeLimits.IndexOf(limit);

            var selectedGenres = Genres.Join(movie.Genres,
                genre => genre.Id,
                genre => genre.Id,
                (genre1, genre2) => genre1).ToList();

            selectedGenres.ForEach(_ => _.IsSelected = true);
        }