using DichtheitManagement.Contract; using Mappings; using Ninject; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Input; namespace GuiWPF.ViewModel { public class MainWindowViewModel : ViewModelBase { 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; } private Models.Auftraggeber _selectedAuftraggeber; private Models.Bauvorhaben _selectedBauvorhaben; private Models.Inspektionsobjekt _selectedsewerobject; public List AuftraggeberListe { get => auftraggeberlist.ToList(); } 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(); BauvorhabenListe.Clear(); BauvorhabenListe = baustellenManager.GetBauvorhaben(SelectedAuftraggeber); } } } public Models.Inspektionsobjekt SelectedSewerObject { get => _selectedsewerobject; set { if(value != _selectedsewerobject) { _selectedsewerobject = value; OnPropertyChanged(); CurrentViewModel = new SewerObjectDetailsPageViewModel(SelectedSewerObject); } } } private ViewModelBase _currentViewModel; 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 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()); kernel = new StandardKernel(); new KernelInitializer().Initialize(kernel); auftraggeberManager = kernel.Get(); baustellenManager = kernel.Get(); auftraggeberlist = auftraggeberManager.GetAllAuftraggeber(); } 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); } } }