using Apollon.Domain.Commands; using Apollon.Domain.Models; using Apollon.Domain.Queries; using Apollon.EntityFramework; using Apollon.EntityFramework.Commands; using Apollon.EntityFramework.Queries; using Apollon.WPF.Stores; using Apollon.WPF.ViewModels; using Microsoft.EntityFrameworkCore; using System; using System.Collections.Generic; using System.Configuration; using System.Data; using System.Linq; using System.Threading.Tasks; using System.Windows; namespace Apollon.WPF { /// /// Interaction logic for App.xaml /// public partial class App : Application { private readonly NavigationStore _navigationStore; private readonly ModalNavigationStore _modalNavigationStore; private readonly TournamentsDbContextFactory _tournamentsDbContextFactory; private readonly IGetAllTournamentsQuery _getAllTournamentQuery; private readonly ICreateTournamentCommand _createTournamentCommand; private readonly IUpdateTournamentCommand _updateTournamentCommand; private readonly IDeleteTournamentCommand _deleteTournamentCommand; private readonly TournamentsStore _tournamentStore; private readonly SelectedTournamentsStore _selectedTournamentStore; public App() { string connectionString = "Server=NATHALIE-PC\\NATLINUXDB;Database=Apollon;Trusted_Connection=True;MultipleActiveResultSets=true"; _navigationStore = new NavigationStore(); _modalNavigationStore = new ModalNavigationStore(); _tournamentsDbContextFactory = new TournamentsDbContextFactory( new DbContextOptionsBuilder().UseSqlServer(connectionString).Options); _getAllTournamentQuery = new GetAllTournamentsQuery(_tournamentsDbContextFactory); _createTournamentCommand = new CreateTournamentCommand(_tournamentsDbContextFactory); _updateTournamentCommand = new UpdateTournamentCommand(_tournamentsDbContextFactory); _deleteTournamentCommand = new DeleteTournamentCommand(_tournamentsDbContextFactory); _tournamentStore = new TournamentsStore(_getAllTournamentQuery, _createTournamentCommand, _updateTournamentCommand, _deleteTournamentCommand); _selectedTournamentStore = new SelectedTournamentsStore(_tournamentStore); } protected override void OnStartup(StartupEventArgs e) { using(TournamentsDbContext context = _tournamentsDbContextFactory.Create()) { context.Database.Migrate(); } OverviewViewModel overviewViewModel = OverviewViewModel.LoadViewModel( _selectedTournamentStore, _modalNavigationStore, _tournamentStore, _navigationStore); _navigationStore.CurrentViewModel = OverviewViewModel.LoadViewModel( _selectedTournamentStore, _modalNavigationStore, _tournamentStore, _navigationStore); MainWindow = new MainWindow() { DataContext = new MainViewModel(_modalNavigationStore, overviewViewModel,_navigationStore) }; MainWindow.Show(); base.OnStartup(e); } } }