diff --git a/KanSan.ViewModel/Kunden/KundenListViewModel.cs b/KanSan.ViewModel/Kunden/KundenListViewModel.cs index 50f99c0..2eafa1c 100644 --- a/KanSan.ViewModel/Kunden/KundenListViewModel.cs +++ b/KanSan.ViewModel/Kunden/KundenListViewModel.cs @@ -27,6 +27,7 @@ namespace KanSan.ViewModel } public ICommand AddNewClientCommand { get; set; } public ICommand EditClientCommand { get; set; } + public ICommand SelectClientCommand { get; set; } public List Kunden { @@ -42,6 +43,13 @@ namespace KanSan.ViewModel AddNewClientCommand = new RelayCommand(parameter => NewClient()); EditClientCommand = new RelayCommand(parameter => EditClient()); + SelectClientCommand = new RelayCommand(parameter => SelectClient()); + } + + private void SelectClient() + { + if (selectedKunde == null) return; + Mediator.Notify("ClientSelected", selectedKunde); } private void NewClient() diff --git a/KanSan.ViewModel/MainWindowViewModel.cs b/KanSan.ViewModel/MainWindowViewModel.cs index 1cab416..a7d468f 100644 --- a/KanSan.ViewModel/MainWindowViewModel.cs +++ b/KanSan.ViewModel/MainWindowViewModel.cs @@ -243,9 +243,25 @@ namespace KanSan.ViewModel Mediator.Subscribe("GoToListClientScreen", OnGoToListClientScreen); Mediator.Subscribe("GoToEditClientScreen", OnGoToEditClientScreen); + Mediator.Subscribe("ClientSelected", OnSelectedClient); + + Mediator.Subscribe("GoToEditProjektScreen", OnGoToEditProjektScreen); } + private void OnGoToEditProjektScreen(object obj) + { + if (!(obj is Projekt)) return; + ActualViewModel = new ProjektEditViewModel((obj as Projekt)); + } + + private void OnSelectedClient(object obj) + { + if (!(obj is Kunde)) return; + SelectedKunde = (obj as Kunde); + ListProjekte(); + } + private void OnGoToEditClientScreen(object obj) { if (!(obj is Kunde)) return; @@ -278,7 +294,10 @@ namespace KanSan.ViewModel private void ListProjekte() { - ActualViewModel = new ProjektListViewModel(SelectedKunde); + if (SelectedKunde == null) + ActualViewModel = new KundenListViewModel(); + else + ActualViewModel = new ProjektListViewModel(SelectedKunde); } private void ListBaustellen() diff --git a/KanSan.ViewModel/Projekt/ProjektListViewModel.cs b/KanSan.ViewModel/Projekt/ProjektListViewModel.cs index a552027..afa5951 100644 --- a/KanSan.ViewModel/Projekt/ProjektListViewModel.cs +++ b/KanSan.ViewModel/Projekt/ProjektListViewModel.cs @@ -2,10 +2,13 @@ using KanSan.Base.Interfaces; using KanSan.Base.Interfaces.UI; using KanSan.Base.Models; +using KanSan.ViewModel.Commands; using System; using System.Collections.Generic; +using System.Diagnostics; using System.Linq; using System.Text; +using System.Windows.Input; namespace KanSan.ViewModel { @@ -22,26 +25,38 @@ namespace KanSan.ViewModel } private Kunde selectedKunde; + public ICommand NewProjekt { get; set; } + public ICommand EditProjekt { get; set; } + public ICommand SelectProjekt { get; set; } + public Projekt SelectedProjekt { get; set; } + public ProjektListViewModel(Kunde client) { this.selectedKunde = client; - projektevonKunde = unitOfWork.ProjekteRepository.Get(x => x.Kunde.Equals(client)).ToList(); + + EditProjekt = new RelayCommand(parameter => EditSelectedProjekt()); + NewProjekt = new RelayCommand(parameter => AddNewProjekt()); } - public void SelectProjekt() + private void AddNewProjekt() { + Projekt newProj = NeueProjekt(); + Mediator.Notify("GoToEditProjektScreen", newProj); + } + private void EditSelectedProjekt() + { + Mediator.Notify("GoToEditProjektScreen", SelectedProjekt); } public Projekt NeueProjekt() { - Guid guid = Guid.NewGuid(); Projekt newProjekt = new Projekt() { - GuidNr = guid, + GuidNr = Guid.NewGuid(), Kunde = selectedKunde }; @@ -49,9 +64,7 @@ namespace KanSan.ViewModel //unitOfWork.ProjekteRepository.Insert(newProjekt); unitOfWork.Commit(); - List res = unitOfWork.ProjekteRepository.Get(x => x.GuidNr.Equals(guid)).ToList(); - if (res.Count < 1) throw new Exception("Der zuvor eingefügte Projekt konnte nicht in der Datenbank gefunden werden"); - return res.First(); + return newProjekt; } } } diff --git a/KanSan/UI/Kunde/UCKundeList.xaml b/KanSan/UI/Kunde/UCKundeList.xaml index 0888be6..9e348f1 100644 --- a/KanSan/UI/Kunde/UCKundeList.xaml +++ b/KanSan/UI/Kunde/UCKundeList.xaml @@ -24,7 +24,7 @@ -