using SimpleMVVM.Common;
using SimpleMVVM.Data;
using SimpleMVVM.Models;
using System;
using System.Collections.ObjectModel;
using System.Windows.Input;

namespace SimpleMVVM.ViewModels
{
    public class MovieListViewModel : ViewModelBase
    {
        private ObservableCollection<Movie> movies;
        private ICommand deleteAllMoviesCommand;
        private Movie selectedMovie;
        private FakeDatabase dbConext;

        public ObservableCollection<Movie> Movies
        {
            get => movies;
            set
            {
                movies = value;
                NotifyPropertyChanged("Movies");
            }
        }

        public ICommand DeleteAllMoviesCommand { get => deleteAllMoviesCommand; }

        public Movie SelectedMovie
        {
            get => selectedMovie;
            set
            {
                selectedMovie = value;
                NotifyPropertyChanged("SelectedMovie");
            }
        }

        public MovieListViewModel(FakeDatabase fakeDatabase)
        {
            this.dbConext = fakeDatabase;

            movies = dbConext.Movies;

            deleteAllMoviesCommand = new RelayCommand(new Action(deleteAllMovies));

        }

        private async void deleteAllMovies()
        {
            await dbConext.Clear();

            Movies.Clear();
        }



    }
}