using SimpleMVVM.Data;
using System.Collections.Generic;

namespace SimpleMVVM.ViewModels
{
    public class ViewModelLocator
    {
        private Dictionary<string, ViewModelBase> modSet;
        private FakeDatabase dbContext;

        public ViewModelLocator()
        {
            modSet = new Dictionary<string, ViewModelBase>();

            dbContext = new FakeDatabase();

            InitializeDatabase();

            MovieListViewModel movieListViewModel = new MovieListViewModel(dbContext);

            modSet.Add("MovieListViewModel", movieListViewModel);

            MovieDetailViewModel movieDetailViewModel = new MovieDetailViewModel();

            modSet.Add("MovieDetailViewModel", movieDetailViewModel);
        }

        public MovieListViewModel MovieListViewModel
        {
            get => (MovieListViewModel)modSet["MovieListViewModel"];
        }

        public MovieDetailViewModel MovieDetailViewModel
        {
            get => (MovieDetailViewModel)modSet["MovieDetailViewModel"];
        }

        public async void InitializeDatabase()
        {
            await dbContext.LoadMoviesFromFile();
        }
    }
}