Schaden kann hinzugefügt werden

This commit is contained in:
HuskyTeufel
2021-10-01 12:20:24 +02:00
parent 98494be3cf
commit b48c012c18
12 changed files with 166 additions and 28 deletions

View File

@@ -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...
}
}
}

View File

@@ -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();
}
}
}

View File

@@ -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<SewerObject> _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<SewerDamage> Damages { get => _model.SewerDamages.ToList(); }
public SewerDamageListViewModel(IActualProject actualProject, IDataService<SewerObject> dataService)
public SewerDamageListViewModel(IActualProject actualProject, IDataService<SewerObject> dataService, IRenavigator addedNavigator)
{
_actualProject = actualProject;
_dataService = dataService;
_model = _actualProject.AktuellSewerObject;
AddNewDamage = new AddDamageCommand(actualProject,addedNavigator);
}
}

View File

@@ -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));
}
}

View File

@@ -11,8 +11,9 @@
<StackPanel>
<RadioButton Content="Stammdaten" Style="{StaticResource ToggleButtonList}" Command="{Binding UpdateCurrentSewerViewModelCommand}" CommandParameter="{x:Static nav:ESewerWindowViewType.SewerStammdaten}" Margin="20" />
<RadioButton Content="Schäden" Style="{StaticResource ToggleButtonList}" Command="{Binding UpdateCurrentSewerViewModelCommand}" CommandParameter="{x:Static nav:ESewerWindowViewType.SewerDamageList}" Margin="20" />
<RadioButton Content="Schließen" Style="{StaticResource ToggleButtonList}" Command="{Binding CloseCommand}" Margin="20" />
<RadioButton Content="{Binding Schaden.Distance,FallbackValue='Damage'}" Command="{Binding UpdateCurrentSewerViewModelCommand}" CommandParameter="{x:Static nav:ESewerWindowViewType.SewerDamageEdit}" Style="{StaticResource ToggleButtonList}" />
<RadioButton Content="{Binding Schaden.Distance,FallbackValue='Damage'}" Command="{Binding UpdateCurrentSewerViewModelCommand}" IsEnabled="{Binding CanSelectDamage}" CommandParameter="{x:Static nav:ESewerWindowViewType.SewerDamageEdit}" Style="{StaticResource ToggleButtonList}" Margin="20" />
</StackPanel>

View File

@@ -38,6 +38,7 @@ namespace DaSaSo.Wpf.HostBuilders
services.AddSingleton<ViewModelDelegateRenavigator<BuildingsiteEditViewModel>>();
services.AddSingleton<ViewModelDelegateRenavigator<SewerObjectListViewModel>>();
services.AddTransient<ViewModelDelegateRenavigator<SewerDamageEditViewModel>>();
services.AddSingleton<CreateViewModel<HomeViewModel>>(services =>
{
@@ -77,8 +78,8 @@ namespace DaSaSo.Wpf.HostBuilders
{
return () => new SewerDamageListViewModel(
services.GetRequiredService<IActualProject>(),
services.GetRequiredService<IDataService<SewerObject>>()//,
//services.GetRequiredService<SewerMainListViewModel>()
services.GetRequiredService<IDataService<SewerObject>>(),
services.GetRequiredService<ViewModelDelegateRenavigator<SewerDamageEditViewModel>>()
);
});
services.AddTransient<CreateViewModel<SewerDamageEditViewModel>>(services =>

View File

@@ -22,7 +22,7 @@
<Border Grid.Row="0" Grid.ColumnSpan="3" BorderBrush="Black" BorderThickness="3">
<TextBlock TextAlignment="Center" Text="Schaden" />
</Border>
<Border Grid.Column="0" Grid.Row="1" BorderBrush="Black" BorderThickness="2,1">
<Border Grid.Column="0" Grid.Row="1" BorderBrush="Black" BorderThickness="2,1" Margin="3">
<StackPanel>
<Label />
<Label Content="Rohrstatik schaden" />
@@ -32,7 +32,7 @@
</StackPanel>
</Border>
<Border Grid.Column="1" Grid.Row="1" BorderBrush="Black" BorderThickness="1,2">
<Border Grid.Column="1" Grid.Row="1" BorderBrush="Black" BorderThickness="1,2" Margin="3">
<StackPanel>
<Label Content="Rohr Betrieb Hinderniss" />
<CheckBox Content="Wurzeln" Style="{StaticResource checkBoxCircleSmall}" IsChecked="{Binding Wurzel }"/>
@@ -41,7 +41,7 @@
</StackPanel>
</Border>
<Border Grid.Column="2" Grid.Row="1" BorderBrush="Black" BorderThickness="1,2">
<Border Grid.Column="2" Grid.Row="1" BorderBrush="Black" BorderThickness="1,2" Margin="3">
<StackPanel>
<Label Content="Sonstiges" />
<CheckBox Content="Einragende Anschluss" Style="{StaticResource checkBoxCircleSmall}" IsChecked="{Binding EinrageneStutzen }" />

View File

@@ -14,7 +14,7 @@
<Border Grid.Row="0" BorderThickness="3" BorderBrush="Black">
<TextBlock Text="Vorbereitungen" TextAlignment="Center"/>
</Border>
<Border BorderBrush="Black" Grid.Row="1" BorderThickness="2">
<Border BorderBrush="Black" Grid.Row="1" BorderThickness="2" Margin="3">
<StackPanel>
<CheckBox Content="HD Gereinigt" Style="{StaticResource checkBoxCircleSmall}" IsChecked="{Binding HD}" />
<CheckBox Content="Mechanisch Gereinigt" Style="{StaticResource checkBoxCircleSmall}" IsChecked="{Binding Mechanisch}" />

View File

@@ -0,0 +1,18 @@
<UserControl x:Class="DaSaSo.Wpf.View.SewerObject.Pipeliner"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:DaSaSo.Wpf.View.SewerObject"
mc:Ignorable="d"
d:DesignHeight="450" d:DesignWidth="800">
<Grid>
<StackPanel>
<Label Content="Operator" />
<Label Content="Datum" />
<Label Content="Liner-Charge" />
</StackPanel>
</Grid>
</UserControl>

View File

@@ -0,0 +1,28 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace DaSaSo.Wpf.View.SewerObject
{
/// <summary>
/// Interaction logic for Pipeliner.xaml
/// </summary>
public partial class Pipeliner : UserControl
{
public Pipeliner()
{
InitializeComponent();
}
}
}

View File

@@ -16,9 +16,26 @@
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<selfControls:SewerDamage Grid.Column="0" Grid.Row="0" DataContext="{Binding damageControllViewModel}" />
<selfControls:SewerDamagePreparation Grid.Column="1" Grid.Row="0" DataContext="{Binding preperationControllViewModel}" />
<Button Grid.Column="0" Grid.Row="1" Content="Berechne" Command="{Binding Berechne}" />
<selfControls:SewerDamage Grid.Column="0" Grid.Row="0" DataContext="{Binding damageControllViewModel}" Margin="3" />
<selfControls:SewerDamagePreparation Grid.Column="1" Grid.Row="0" DataContext="{Binding preperationControllViewModel}" Margin="3" />
<Grid Grid.Row="1" Grid.Column="0">
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="auto" />
<RowDefinition Height="200" />
</Grid.RowDefinitions>
<Label Grid.Column="0" Grid.Row="0" Content="Entfernung" />
<TextBox Grid.Column="1" Grid.Row="0" Text="{Binding Damage.Distance,StringFormat={}{0:#.##}}" />
</Grid>
<Button Grid.Column="1" Grid.Row="1" Content="Sanierung Zeigen" Command="{Binding Berechne}" />
</Grid>
</UserControl>

View File

@@ -17,20 +17,22 @@
<sd:SewerDamageListSampleData />
</d:UserControl.DataContext>
<Grid>
<DataGrid ItemsSource="{Binding Damages}" AutoGenerateColumns="False" IsReadOnly="True" SelectedItem="{Binding SelectedDamage}">
<DataGrid.Columns>
<DataGridTextColumn Header="Entfernung" Binding="{Binding Distance}" />
<DataGridCheckBoxColumn Header="Statik (Riss / Bruch / Scherbe)" Binding="{Binding DamageType, Converter={StaticResource EqualDamageTypeToBooleanConverter}, ConverterParameter={x:Static damagetype:EDamageType.Static}}" />
<DataGridCheckBoxColumn Header="Betrieb (Wurzeln / Inkrustation / Ablagerungen)" Binding="{Binding DamageType, Converter={StaticResource EqualDamageTypeToBooleanConverter}, ConverterParameter={x:Static damagetype:EDamageType.Betrieb}}" />
<DataGridCheckBoxColumn Header="Sonstiges (Infiltration / Einragene Stutzen)" Binding="{Binding DamageType, Converter={StaticResource EqualDamageTypeToBooleanConverter}, ConverterParameter={x:Static damagetype:EDamageType.Other}}" />
<StackPanel>
<DataGrid ItemsSource="{Binding Damages}" AutoGenerateColumns="False" IsReadOnly="True" SelectedItem="{Binding SelectedDamage}">
<DataGrid.Columns>
<DataGridTextColumn Header="Entfernung" Binding="{Binding Distance}" />
<DataGridCheckBoxColumn Header="Statik (Riss / Bruch / Scherbe)" Binding="{Binding DamageType, Converter={StaticResource EqualDamageTypeToBooleanConverter}, ConverterParameter={x:Static damagetype:EDamageType.Static}}" />
<DataGridCheckBoxColumn Header="Betrieb (Wurzeln / Inkrustation / Ablagerungen)" Binding="{Binding DamageType, Converter={StaticResource EqualDamageTypeToBooleanConverter}, ConverterParameter={x:Static damagetype:EDamageType.Betrieb}}" />
<DataGridCheckBoxColumn Header="Sonstiges (Infiltration / Einragene Stutzen)" Binding="{Binding DamageType, Converter={StaticResource EqualDamageTypeToBooleanConverter}, ConverterParameter={x:Static damagetype:EDamageType.Other}}" />
<DataGridCheckBoxColumn Header="HD Reinigung" Binding="{Binding PreparationType, Converter={StaticResource EqualPreperationTypeToBooleanConverter}, ConverterParameter={x:Static damagetype:EPreparationType.CleanedHD}}" />
<DataGridCheckBoxColumn Header="Mechanisch gereinigt" Binding="{Binding PreparationType, Converter={StaticResource EqualPreperationTypeToBooleanConverter}, ConverterParameter={x:Static damagetype:EPreparationType.CleanedMechanisch}}" />
<DataGridCheckBoxColumn Header="Roboter" Binding="{Binding PreparationType, Converter={StaticResource EqualPreperationTypeToBooleanConverter}, ConverterParameter={x:Static damagetype:EPreparationType.CleanedRoboter}}" />
<DataGridCheckBoxColumn Header="Fäkalienfrei" Binding="{Binding PreparationType, Converter={StaticResource EqualPreperationTypeToBooleanConverter}, ConverterParameter={x:Static damagetype:EPreparationType.FaekalienFrei}}" />
</DataGrid.Columns>
</DataGrid>
<DataGridCheckBoxColumn Header="HD Reinigung" Binding="{Binding PreparationType, Converter={StaticResource EqualPreperationTypeToBooleanConverter}, ConverterParameter={x:Static damagetype:EPreparationType.CleanedHD}}" />
<DataGridCheckBoxColumn Header="Mechanisch gereinigt" Binding="{Binding PreparationType, Converter={StaticResource EqualPreperationTypeToBooleanConverter}, ConverterParameter={x:Static damagetype:EPreparationType.CleanedMechanisch}}" />
<DataGridCheckBoxColumn Header="Roboter" Binding="{Binding PreparationType, Converter={StaticResource EqualPreperationTypeToBooleanConverter}, ConverterParameter={x:Static damagetype:EPreparationType.CleanedRoboter}}" />
<DataGridCheckBoxColumn Header="Fäkalienfrei" Binding="{Binding PreparationType, Converter={StaticResource EqualPreperationTypeToBooleanConverter}, ConverterParameter={x:Static damagetype:EPreparationType.FaekalienFrei}}" />
</DataGrid.Columns>
</DataGrid>
<Button Content="Neue Schaden Aufnehmen" Command="{Binding AddNewDamage}" />
</StackPanel>
</Grid>
</UserControl>