diff --git a/DaSaSo.ViewModel/Commands/AddDamageCommand.cs b/DaSaSo.ViewModel/Commands/AddDamageCommand.cs new file mode 100644 index 0000000..7b375dd --- /dev/null +++ b/DaSaSo.ViewModel/Commands/AddDamageCommand.cs @@ -0,0 +1,36 @@ +using DaSaSo.Domain.Model; +using DaSaSo.Domain.Services; +using DaSaSo.ViewModel.Interface; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace DaSaSo.ViewModel.Commands +{ + class AddDamageCommand : AsyncCommandBase + { + private readonly IActualProject actualProject; + private readonly IRenavigator addedNavigator; + + public AddDamageCommand(IActualProject actualProject, IRenavigator addedNavigator) + { + this.actualProject = actualProject; + this.addedNavigator = addedNavigator; + } + + public override async Task ExecuteAsync(object? parameter) + { + SewerDamage newSewerDamage = new SewerDamage(); + //newSewerDamage.SewerObject = actualProject.AktuellSewerObject; // Führt zur Exception, dass EF versucht doppelte einträge vorzunehmen + + actualProject.AktuellSewerObject.SewerDamages.Add(newSewerDamage); + actualProject.SetSewerDamage(actualProject.AktuellSewerObject.SewerDamages.Last()); + + + //addedNavigator.Renavigate(); // Bug führt zur generellen umnavigation... + + } + } +} diff --git a/DaSaSo.ViewModel/SewerDamageEditViewModel.cs b/DaSaSo.ViewModel/SewerDamageEditViewModel.cs index 7507190..4ae9595 100644 --- a/DaSaSo.ViewModel/SewerDamageEditViewModel.cs +++ b/DaSaSo.ViewModel/SewerDamageEditViewModel.cs @@ -19,6 +19,17 @@ namespace DaSaSo.ViewModel public SewerPreperationControllViewModel preperationControllViewModel { get; set; } public IRelayCommand Berechne { get; set; } + private string? _entfernung; + public string Entfernung + { + get => _entfernung; + set + { + _entfernung = value; + OnPropertyChanged(); + } + } + public SewerDamage? Damage { get => _damage; @@ -36,14 +47,32 @@ namespace DaSaSo.ViewModel damageControllViewModel = new SewerDamageControllViewModel(Damage.DamageType); preperationControllViewModel = new SewerPreperationControllViewModel(Damage.PreparationType); - Berechne = new RelayCommand(() => + + Entfernung = Damage.Distance.ToString(); + + /*Berechne = new RelayCommand(() => { + //Debugger.Break(); Damage.DamageType = damageControllViewModel.CalculateDamageFlags(); Damage.PreparationType = preperationControllViewModel.CalculatePreparationFlags(); - }); + */ } + ~SewerDamageEditViewModel() + { + //Debugger.Break(); + } + + public override void Dispose() + { + // Alle Werte Speichern, form wurde geändert (Noch nicht in DB!) + Damage.DamageType = damageControllViewModel.CalculateDamageFlags(); + Damage.PreparationType = preperationControllViewModel.CalculatePreparationFlags(); + damageControllViewModel.Dispose(); + preperationControllViewModel.Dispose(); + base.Dispose(); + } } } diff --git a/DaSaSo.ViewModel/SewerDamageListViewModel.cs b/DaSaSo.ViewModel/SewerDamageListViewModel.cs index b38769d..847654e 100644 --- a/DaSaSo.ViewModel/SewerDamageListViewModel.cs +++ b/DaSaSo.ViewModel/SewerDamageListViewModel.cs @@ -1,11 +1,13 @@ using DaSaSo.Domain.Model; using DaSaSo.Domain.Services; +using DaSaSo.ViewModel.Commands; using DaSaSo.ViewModel.Interface; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; +using System.Windows.Input; namespace DaSaSo.ViewModel { @@ -13,7 +15,9 @@ namespace DaSaSo.ViewModel { private readonly IActualProject _actualProject; private readonly IDataService _dataService; - private SewerDamage _selectedDamage; + private SewerDamage? _selectedDamage; + + public ICommand AddNewDamage { get; set; } public SewerDamage SelectedDamage { get => _selectedDamage; @@ -28,12 +32,12 @@ namespace DaSaSo.ViewModel SewerObject _model; public List Damages { get => _model.SewerDamages.ToList(); } - public SewerDamageListViewModel(IActualProject actualProject, IDataService dataService) + public SewerDamageListViewModel(IActualProject actualProject, IDataService dataService, IRenavigator addedNavigator) { _actualProject = actualProject; _dataService = dataService; _model = _actualProject.AktuellSewerObject; - + AddNewDamage = new AddDamageCommand(actualProject,addedNavigator); } } diff --git a/DaSaSo.ViewModel/SewerMainListViewModel.cs b/DaSaSo.ViewModel/SewerMainListViewModel.cs index e15f8ce..82d335f 100644 --- a/DaSaSo.ViewModel/SewerMainListViewModel.cs +++ b/DaSaSo.ViewModel/SewerMainListViewModel.cs @@ -27,6 +27,7 @@ namespace DaSaSo.ViewModel public ICommand SchadenCommand { get; set; } public BaseViewModel CurrentSewerViewModel => Navigator.CurrentViewModel; + public bool CanSelectDamage => Schaden != null; public bool IsLoading { get => _isLoading; @@ -47,6 +48,7 @@ namespace DaSaSo.ViewModel { _schaden = value; OnPropertyChanged(); + OnPropertyChanged(nameof(CanSelectDamage)); } } diff --git a/DaSaSo.Wpf/Controls/SewerObjectNavigationBar.xaml b/DaSaSo.Wpf/Controls/SewerObjectNavigationBar.xaml index 3551e37..22a810a 100644 --- a/DaSaSo.Wpf/Controls/SewerObjectNavigationBar.xaml +++ b/DaSaSo.Wpf/Controls/SewerObjectNavigationBar.xaml @@ -11,8 +11,9 @@ + - + diff --git a/DaSaSo.Wpf/HostBuilders/AddViewModelsHostBuilderExtensions.cs b/DaSaSo.Wpf/HostBuilders/AddViewModelsHostBuilderExtensions.cs index 039ca66..b0c3dda 100644 --- a/DaSaSo.Wpf/HostBuilders/AddViewModelsHostBuilderExtensions.cs +++ b/DaSaSo.Wpf/HostBuilders/AddViewModelsHostBuilderExtensions.cs @@ -38,6 +38,7 @@ namespace DaSaSo.Wpf.HostBuilders services.AddSingleton>(); services.AddSingleton>(); + services.AddTransient>(); services.AddSingleton>(services => { @@ -77,8 +78,8 @@ namespace DaSaSo.Wpf.HostBuilders { return () => new SewerDamageListViewModel( services.GetRequiredService(), - services.GetRequiredService>()//, - //services.GetRequiredService() + services.GetRequiredService>(), + services.GetRequiredService>() ); }); services.AddTransient>(services => diff --git a/DaSaSo.Wpf/View/SewerObject/Controls/SewerDamage.xaml b/DaSaSo.Wpf/View/SewerObject/Controls/SewerDamage.xaml index d8b0111..e7ccc56 100644 --- a/DaSaSo.Wpf/View/SewerObject/Controls/SewerDamage.xaml +++ b/DaSaSo.Wpf/View/SewerObject/Controls/SewerDamage.xaml @@ -22,7 +22,7 @@ - + - + - +