Sewerdamages angefangen

This commit is contained in:
HuskyTeufel
2021-09-29 17:02:36 +02:00
parent f15d0b2983
commit 4789b5f252
14 changed files with 212 additions and 18 deletions

View File

@@ -1,16 +1,16 @@
// See https://aka.ms/new-console-template for more information // See https://aka.ms/new-console-template for more information
using DaSaSo.ConsoleApp;
using DaSaSo.Domain.Model; using DaSaSo.Domain.Model;
using DaSaSo.Domain.Services; using DaSaSo.Domain.Services;
using DaSaSo.EntityFramework; using DaSaSo.EntityFramework;
using DaSaSo.EntityFramework.Services; using DaSaSo.EntityFramework.Services;
using System.Diagnostics; using System.Diagnostics;
IDataService<Client> clientService = new GenericDataService<Client>(new DaSaSoDbContextFactory(""));
clientService.Create(new Client() testclass test = new testclass();
{ test.data = efields.CATRA | efields.PRO;
Firstname = "Cynthia",
LastName = "Schreuder", var s = test.data.HasFlag(efields.CATRA);
Country = "Tarmstedt",
Postcode = "25445", Debugger.Break();
});

View File

@@ -0,0 +1,38 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DaSaSo.ConsoleApp
{
class testclass
{
public efields data;
}
[Flags]
enum efields : int
{
PRO = 1,
CONTRA = 2,
DESPRED = 4,
CATRA = 8
};
static class EnumerationExtensions
{
public static bool Has<T>(this System.Enum type, T value)
{
try
{
return (((int)(object)type & (int)(object)value) == (int)(object)value);
}
catch
{
return false;
}
}
}
}

View File

@@ -1,5 +1,6 @@
namespace DaSaSo.Domain.Model namespace DaSaSo.Domain.Model
{ {
[Flags]
public enum EDamageType public enum EDamageType
{ {
Riss = 1, Riss = 1,
@@ -9,8 +10,12 @@
Inkrustation = 16, Inkrustation = 16,
Ablagerung = 32, Ablagerung = 32,
EinrageneStutzen = 64, EinrageneStutzen = 64,
Infiltration = 128 Infiltration = 128,
Static = Riss | Bruch | Scherbe,
Betrieb = Wurzel | Inkrustation | Ablagerung,
Other = EinrageneStutzen | Infiltration
} }
[Flags]
public enum EPreparationType public enum EPreparationType
{ {
CleanedHD = 1, CleanedHD = 1,

View File

@@ -13,15 +13,18 @@ namespace DaSaSo.ViewModel.Interface
event EventHandler? ProjectChanged; event EventHandler? ProjectChanged;
event EventHandler? BuildingSiteChanged; event EventHandler? BuildingSiteChanged;
event EventHandler? SewerObjectChanged; event EventHandler? SewerObjectChanged;
event EventHandler? SewerDamageChanged;
Client AktuellClient { get; } Client AktuellClient { get; }
Project AktuellProjekt { get; } Project AktuellProjekt { get; }
Buildingsite AktuellBaustelle { get; } Buildingsite AktuellBaustelle { get; }
SewerObject AktuellSewerObject { get; } SewerObject AktuellSewerObject { get; }
SewerDamage AktuellSewerDamage { get; }
void SetClient(Client client, bool notification = true); void SetClient(Client client, bool notification = true);
void SetProject(Project project, bool notification = true); void SetProject(Project project, bool notification = true);
void SetBuildingSite(Buildingsite buildingsite); void SetBuildingSite(Buildingsite buildingsite);
void SetSewerObject(SewerObject sewerObject, bool notification = true); void SetSewerObject(SewerObject sewerObject, bool notification = true);
void SetSewerDamage(SewerDamage sewerDamage, bool notification = true);
void ResetProject(); void ResetProject();
void ResetBuildingSite(); void ResetBuildingSite();
} }

View File

@@ -13,6 +13,17 @@ namespace DaSaSo.ViewModel
{ {
private readonly IActualProject _actualProject; private readonly IActualProject _actualProject;
private readonly IDataService<SewerObject> _dataService; private readonly IDataService<SewerObject> _dataService;
private SewerDamage _selectedDamage;
public SewerDamage SelectedDamage
{
get => _selectedDamage;
set
{
_selectedDamage = value;
_actualProject.SetSewerDamage(_selectedDamage);
OnPropertyChanged();
}
}
SewerObject _model; SewerObject _model;
public List<SewerDamage> Damages { get => _model.SewerDamages.ToList(); } public List<SewerDamage> Damages { get => _model.SewerDamages.ToList(); }
@@ -22,6 +33,7 @@ namespace DaSaSo.ViewModel
_actualProject = actualProject; _actualProject = actualProject;
_dataService = dataService; _dataService = dataService;
_model = _actualProject.AktuellSewerObject; _model = _actualProject.AktuellSewerObject;
} }
} }

View File

@@ -38,7 +38,16 @@ namespace DaSaSo.ViewModel
} }
} }
} }
string _schaden = "llooo";
public string Schaden
{
get => _schaden;
set
{
_schaden = value;
OnPropertyChanged();
}
}
public string Strasse { get => _actualProject.AktuellSewerObject.StreetName; } public string Strasse { get => _actualProject.AktuellSewerObject.StreetName; }
public string AktualObject { get => _actualProject.AktuellSewerObject.ObjektName; } public string AktualObject { get => _actualProject.AktuellSewerObject.ObjektName; }
@@ -56,6 +65,13 @@ namespace DaSaSo.ViewModel
LoadModel(); LoadModel();
UpdateCurrentSewerViewModelCommand = new UpdateCurrentSewerViewModelCommand(_navigator, viewModelFactory); UpdateCurrentSewerViewModelCommand = new UpdateCurrentSewerViewModelCommand(_navigator, viewModelFactory);
_navigator.StateChanged += () => OnPropertyChanged(nameof(CurrentSewerViewModel)); _navigator.StateChanged += () => OnPropertyChanged(nameof(CurrentSewerViewModel));
_actualProject.SewerDamageChanged += _actualProject_SewerDamageChanged;
}
private void _actualProject_SewerDamageChanged(object? sender, EventArgs e)
{
Schaden = _actualProject.AktuellSewerDamage.Distance.ToString();
OnPropertyChanged(nameof(Schaden));
} }
private async void LoadModel() private async void LoadModel()

View File

@@ -15,12 +15,15 @@ namespace DaSaSo.ViewModel.State.ActualState
public Project? AktuellProjekt { get; private set; } public Project? AktuellProjekt { get; private set; }
public SewerObject? AktuellSewerObject { get; private set; } public SewerObject? AktuellSewerObject { get; private set; }
public SewerDamage? AktuellSewerDamage { get; private set; }
#region events #region events
public event EventHandler? ClientChanged; public event EventHandler? ClientChanged;
public event EventHandler? ProjectChanged; public event EventHandler? ProjectChanged;
public event EventHandler? BuildingSiteChanged; public event EventHandler? BuildingSiteChanged;
public event EventHandler? SewerObjectChanged; public event EventHandler? SewerObjectChanged;
public event EventHandler? SewerDamageChanged;
protected void OnClientChanged() protected void OnClientChanged()
{ {
@@ -38,6 +41,10 @@ namespace DaSaSo.ViewModel.State.ActualState
{ {
SewerObjectChanged?.Invoke(this, new EventArgs()); SewerObjectChanged?.Invoke(this, new EventArgs());
} }
protected void OnSewerDamageChanged()
{
SewerDamageChanged?.Invoke(this, new EventArgs());
}
#endregion #endregion
public void SetClient(Client client, bool notification = true) public void SetClient(Client client, bool notification = true)
{ {
@@ -77,5 +84,12 @@ namespace DaSaSo.ViewModel.State.ActualState
{ {
SetBuildingSite(null); SetBuildingSite(null);
} }
public void SetSewerDamage(SewerDamage sewerDamage, bool notification = true)
{
AktuellSewerDamage = sewerDamage;
if (notification)
OnSewerDamageChanged();
}
} }
} }

View File

@@ -12,7 +12,9 @@
<RadioButton Content="Stammdaten" Style="{StaticResource ToggleButtonList}" Command="{Binding UpdateCurrentSewerViewModelCommand}" CommandParameter="{x:Static nav:ESewerWindowViewType.SewerStammdaten}" Margin="20" /> <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="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="Schließen" Style="{StaticResource ToggleButtonList}" Command="{Binding CloseCommand}" Margin="20" />
<RadioButton Content="{Binding Schaden}" Style="{StaticResource ToggleButtonList}" />
</StackPanel> </StackPanel>
</Grid> </Grid>
</UserControl> </UserControl>

View File

@@ -0,0 +1,25 @@
using DaSaSo.Domain.Model;
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Data;
namespace DaSaSo.Wpf.Converters
{
class EqualDamageTypeToBooleanConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
return (((int)value & (int)parameter) == (int)value);
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
}

View File

@@ -0,0 +1,26 @@
using DaSaSo.Domain.Model;
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Data;
namespace DaSaSo.Wpf.Converters
{
class EqualPreperationTypeToBooleanConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
EPreparationType damagevalue = (EPreparationType)value;
EPreparationType damageParameter = (EPreparationType)parameter;
return damagevalue.HasFlag(damageParameter);
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
}

View File

@@ -28,6 +28,8 @@ namespace DaSaSo.Wpf.HostBuilders
services.AddTransient<MainWindowViewModel>(); services.AddTransient<MainWindowViewModel>();
services.AddSingleton<ClientListViewModel>(); services.AddSingleton<ClientListViewModel>();
services.AddTransient<SewerMainListViewModel>();
services.AddSingleton<CreateViewModel<HomeViewModel>>(services => services.AddSingleton<CreateViewModel<HomeViewModel>>(services =>
{ {
return () => new HomeViewModel(); return () => new HomeViewModel();
@@ -57,7 +59,10 @@ namespace DaSaSo.Wpf.HostBuilders
{ {
return () => new SewerDamageListViewModel( return () => new SewerDamageListViewModel(
services.GetRequiredService<IActualProject>(), services.GetRequiredService<IActualProject>(),
services.GetRequiredService<IDataService<SewerObject>>()); services.GetRequiredService<IDataService<SewerObject>>()//,
//services.GetRequiredService<SewerMainListViewModel>()
);
}); });
services.AddSingleton<CreateViewModel<ClientListViewModel>>(services => services.AddSingleton<CreateViewModel<ClientListViewModel>>(services =>

View File

@@ -0,0 +1,25 @@
using DaSaSo.Domain.Model;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DaSaSo.Wpf.Sampledata
{
public class SewerDamageListSampleData
{
public ObservableCollection<SewerDamage> Damages { get; private set; } = new ObservableCollection<SewerDamage>();
public SewerDamageListSampleData()
{
Damages.Add(new SewerDamage()
{
DamageType = EDamageType.Bruch | EDamageType.EinrageneStutzen,
PreparationType = EPreparationType.CleanedHD | EPreparationType.CleanedRoborter,
Distance = 12.5m
});
}
}
}

View File

@@ -3,11 +3,34 @@
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:DaSaSo.Wpf.View.SewerObject" xmlns:viewmodel="clr-namespace:DaSaSo.ViewModel;assembly=DaSaSo.ViewModel" d:DataContext="{d:DesignInstance Type=viewmodel:SewerDamageListViewModel}" xmlns:sd="clr-namespace:DaSaSo.Wpf.Sampledata"
xmlns:damagetype ="clr-namespace:DaSaSo.Domain.Model;assembly=DaSaSo.Domain"
xmlns:local="clr-namespace:DaSaSo.Wpf.View.SewerObject" xmlns:viewmodel="clr-namespace:DaSaSo.ViewModel;assembly=DaSaSo.ViewModel"
xmlns:converters="clr-namespace:DaSaSo.Wpf.Converters"
mc:Ignorable="d" mc:Ignorable="d"
d:DesignHeight="450" d:DesignWidth="800"> d:DesignHeight="450" d:DesignWidth="1020">
<UserControl.Resources>
<converters:EqualDamageTypeToBooleanConverter x:Key="EqualDamageTypeToBooleanConverter" />
<converters:EqualPreperationTypeToBooleanConverter x:Key="EqualPreperationTypeToBooleanConverter" />
</UserControl.Resources>
<d:UserControl.DataContext>
<sd:SewerDamageListSampleData />
</d:UserControl.DataContext>
<Grid> <Grid>
<DataGrid ItemsSource="{Binding Damages}" /> <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.CleanedRoborter}}" />
<DataGridCheckBoxColumn Header="Fäkalienfrei" Binding="{Binding PreparationType, Converter={StaticResource EqualPreperationTypeToBooleanConverter}, ConverterParameter={x:Static damagetype:EPreparationType.FaekalienFrei}}" />
</DataGrid.Columns>
</DataGrid>
</Grid> </Grid>
</UserControl> </UserControl>

View File

@@ -1,6 +1,6 @@
{ {
"ConnectionStrings": { "ConnectionStrings": {
"databaseToUse": "sqlite", "databaseToUse": "default",
"default": "Host = localhost; Database = dasaso; Username = kansan; Password = kansan", "default": "Host = localhost; Database = dasaso; Username = kansan; Password = kansan",
"sqlite": "Data Source=database.db" "sqlite": "Data Source=database.db"
} }