using DichtheitManagement.Contract; using Mappings; using Models; using Ninject; using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Input; namespace GuiWPF.ViewModel { enum MenuEntries { AUFTRAGGEBER = 0, BAUVORHABEN = 1, INSPEKTIONSOBJEKTE = 2 } public class MainWindowViewModel : ViewModelBase { private MenuEntries _selectedMenu; public ICommand LoadHomePageCommand { get; private set; } public ICommand LoadSettingsPageCommand { get; private set;} public ICommand LoadAuftraggeberListPageCommand { get; private set; } public ICommand LoadEditAuftraggeberPageCommand { get; private set; } public ICommand AddNewInspektionsObjektCommand { get; private set; } public ICommand NextMenuEntriePageCommand { get; set; } private Models.Auftraggeber _selectedAuftraggeber; private Models.Bauvorhaben _selectedBauvorhaben; private Models.Inspektionsobjekt _selectedsewerobject; public List BauvorhabenListe { get { if(SelectedAuftraggeber != null && SelectedAuftraggeber.Baustellen != null) return SelectedAuftraggeber.Baustellen.ToList(); return new List(); } set { OnPropertyChanged(); } } public List InspektionsobjekteListe { get { if(SelectedAuftraggeber != null && SelectedBauvorhaben.Prüfobjekte != null) return SelectedBauvorhaben.Prüfobjekte.ToList(); return new List(); } set { OnPropertyChanged(); } } public Models.Bauvorhaben SelectedBauvorhaben { get => _selectedBauvorhaben; set { if(value != _selectedBauvorhaben) { _selectedBauvorhaben = value; OnPropertyChanged(); InspektionsobjekteListe.Clear(); InspektionsobjekteListe = _selectedBauvorhaben.Prüfobjekte; } } } public Models.Auftraggeber SelectedAuftraggeber { get => _selectedAuftraggeber; set { if(value != _selectedAuftraggeber) { _selectedAuftraggeber = value; OnPropertyChanged(); } } } public Models.Inspektionsobjekt SelectedSewerObject { get => _selectedsewerobject; set { if(value != _selectedsewerobject) { _selectedsewerobject = value; OnPropertyChanged(); CurrentViewModel = new SewerObjectDetailsPageViewModel(SelectedSewerObject); } } } private ViewModelBase _currentViewModel; private ViewModelBase _aktuellmenu; private IQueryable auftraggeberlist = null; private IAuftraggeberManager auftraggeberManager = null; private IBaustelleManager baustellenManager = null; private StandardKernel kernel = null; public ViewModelBase CurrentViewModel { get => _currentViewModel; set { _currentViewModel = value; OnPropertyChanged(); } } public ViewModelBase AktuellMenu { get => _aktuellmenu; set { _aktuellmenu = value; OnPropertyChanged(); } } void SetMenu(MenuEntries newMenu) { switch(newMenu) { case MenuEntries.AUFTRAGGEBER: AktuellMenu = new AuftraggeberListPageViewModel(kernel); _selectedMenu = MenuEntries.AUFTRAGGEBER; break; case MenuEntries.BAUVORHABEN: AktuellMenu = new BauvorhabenListPageViewModel(kernel,SelectedAuftraggeber); _selectedMenu = MenuEntries.BAUVORHABEN; break; case MenuEntries.INSPEKTIONSOBJEKTE: AktuellMenu = new SewerObjectListPageViewModel(kernel, SelectedBauvorhaben, this); _selectedMenu = MenuEntries.INSPEKTIONSOBJEKTE; break; } } public MainWindowViewModel() { this.LoadHomePage(); this.LoadAuftraggeberListPageCommand = new DelegateCommand(o => this.LoadAuftraggeberListPage()); this.LoadEditAuftraggeberPageCommand = new DelegateCommand(o => this.LoadAuftraggeberEditPage()); this.LoadHomePageCommand = new DelegateCommand(o => this.LoadHomePage()); this.LoadSettingsPageCommand = new DelegateCommand(o => this.LoadSettingsPage()); this.AddNewInspektionsObjektCommand = new DelegateCommand(o => this.AddNewInspektionsObjekt()); this.NextMenuEntriePageCommand = new DelegateCommand(o => this.NextMenuEntrie()); kernel = new StandardKernel(); new KernelInitializer().Initialize(kernel); /*auftraggeberManager = kernel.Get(); baustellenManager = kernel.Get(); auftraggeberlist = auftraggeberManager.GetAllAuftraggeber();*/ SetMenu(MenuEntries.AUFTRAGGEBER); } private void NextMenuEntrie() { switch(_selectedMenu) { case MenuEntries.AUFTRAGGEBER: SelectedAuftraggeber = (AktuellMenu as AuftraggeberListPageViewModel).SelectedAuftraggeber; SetMenu(MenuEntries.BAUVORHABEN); break; case MenuEntries.BAUVORHABEN: SelectedBauvorhaben = (AktuellMenu as BauvorhabenListPageViewModel).SelectedBauvorhaben; SetMenu(MenuEntries.INSPEKTIONSOBJEKTE); break; case MenuEntries.INSPEKTIONSOBJEKTE: break; } } private void AddNewInspektionsObjekt() { if (SelectedBauvorhaben.Prüfobjekte == null) SelectedBauvorhaben.Prüfobjekte = new List(); SelectedBauvorhaben.Prüfobjekte.Add(new Models.Inspektionsobjekt()); auftraggeberManager.Update(SelectedAuftraggeber); } private void LoadHomePage() { CurrentViewModel = new HomePageViewModel( new HomePage { PageTitle = "This is the Home Page" }); } private void LoadSettingsPage() { CurrentViewModel = new SettingsPageViewModel( new SettingsPage() { PageTitle = "This is the SettingsPage" }); //auftraggeberManager.Update(auftraggeberlist.OrderBy(y => y.Id).Last()); BauvorhabenEditPageViewModel bauvorhaben = new BauvorhabenEditPageViewModel(); } private void LoadAuftraggeberEditPage() { CurrentViewModel = new AuftraggeberEditPageViewModel(auftraggeberManager.GetAllAuftraggeber().OrderBy(y => y.Id).Last(),auftraggeberManager); } private void LoadAuftraggeberListPage() { //CurrentViewModel = new AuftraggeberListPageViewModel(auftraggeberManager); } } }