diff --git a/DaSaSo.ConsoleApp/Program.cs b/DaSaSo.ConsoleApp/Program.cs index 44cfa4f..d303029 100644 --- a/DaSaSo.ConsoleApp/Program.cs +++ b/DaSaSo.ConsoleApp/Program.cs @@ -1,16 +1,16 @@ // See https://aka.ms/new-console-template for more information +using DaSaSo.ConsoleApp; using DaSaSo.Domain.Model; using DaSaSo.Domain.Services; using DaSaSo.EntityFramework; using DaSaSo.EntityFramework.Services; using System.Diagnostics; -IDataService clientService = new GenericDataService(new DaSaSoDbContextFactory("")); -clientService.Create(new Client() -{ - Firstname = "Cynthia", - LastName = "Schreuder", - Country = "Tarmstedt", - Postcode = "25445", -}); + +testclass test = new testclass(); +test.data = efields.CATRA | efields.PRO; + +var s = test.data.HasFlag(efields.CATRA); + +Debugger.Break(); diff --git a/DaSaSo.ConsoleApp/testclass.cs b/DaSaSo.ConsoleApp/testclass.cs new file mode 100644 index 0000000..5742942 --- /dev/null +++ b/DaSaSo.ConsoleApp/testclass.cs @@ -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(this System.Enum type, T value) + { + try + { + return (((int)(object)type & (int)(object)value) == (int)(object)value); + } + catch + { + return false; + } + } + } + +} diff --git a/DaSaSo.Domain/Model/SewerDamage.cs b/DaSaSo.Domain/Model/SewerDamage.cs index 9205b9b..33fc5e0 100644 --- a/DaSaSo.Domain/Model/SewerDamage.cs +++ b/DaSaSo.Domain/Model/SewerDamage.cs @@ -1,5 +1,6 @@ namespace DaSaSo.Domain.Model { + [Flags] public enum EDamageType { Riss = 1, @@ -9,8 +10,12 @@ Inkrustation = 16, Ablagerung = 32, EinrageneStutzen = 64, - Infiltration = 128 + Infiltration = 128, + Static = Riss | Bruch | Scherbe, + Betrieb = Wurzel | Inkrustation | Ablagerung, + Other = EinrageneStutzen | Infiltration } + [Flags] public enum EPreparationType { CleanedHD = 1, diff --git a/DaSaSo.ViewModel/Interface/IActualProject.cs b/DaSaSo.ViewModel/Interface/IActualProject.cs index 217dcd1..c236929 100644 --- a/DaSaSo.ViewModel/Interface/IActualProject.cs +++ b/DaSaSo.ViewModel/Interface/IActualProject.cs @@ -13,15 +13,18 @@ namespace DaSaSo.ViewModel.Interface event EventHandler? ProjectChanged; event EventHandler? BuildingSiteChanged; event EventHandler? SewerObjectChanged; + event EventHandler? SewerDamageChanged; Client AktuellClient { get; } Project AktuellProjekt { get; } Buildingsite AktuellBaustelle { get; } SewerObject AktuellSewerObject { get; } + SewerDamage AktuellSewerDamage { get; } void SetClient(Client client, bool notification = true); void SetProject(Project project, bool notification = true); void SetBuildingSite(Buildingsite buildingsite); void SetSewerObject(SewerObject sewerObject, bool notification = true); + void SetSewerDamage(SewerDamage sewerDamage, bool notification = true); void ResetProject(); void ResetBuildingSite(); } diff --git a/DaSaSo.ViewModel/SewerDamageListViewModel.cs b/DaSaSo.ViewModel/SewerDamageListViewModel.cs index c2cb1c1..b38769d 100644 --- a/DaSaSo.ViewModel/SewerDamageListViewModel.cs +++ b/DaSaSo.ViewModel/SewerDamageListViewModel.cs @@ -13,6 +13,17 @@ namespace DaSaSo.ViewModel { private readonly IActualProject _actualProject; private readonly IDataService _dataService; + private SewerDamage _selectedDamage; + public SewerDamage SelectedDamage + { + get => _selectedDamage; + set + { + _selectedDamage = value; + _actualProject.SetSewerDamage(_selectedDamage); + OnPropertyChanged(); + } + } SewerObject _model; public List Damages { get => _model.SewerDamages.ToList(); } @@ -22,6 +33,7 @@ namespace DaSaSo.ViewModel _actualProject = actualProject; _dataService = dataService; _model = _actualProject.AktuellSewerObject; + } } diff --git a/DaSaSo.ViewModel/SewerMainListViewModel.cs b/DaSaSo.ViewModel/SewerMainListViewModel.cs index c8101b5..9c9c825 100644 --- a/DaSaSo.ViewModel/SewerMainListViewModel.cs +++ b/DaSaSo.ViewModel/SewerMainListViewModel.cs @@ -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 AktualObject { get => _actualProject.AktuellSewerObject.ObjektName; } @@ -56,6 +65,13 @@ namespace DaSaSo.ViewModel LoadModel(); UpdateCurrentSewerViewModelCommand = new UpdateCurrentSewerViewModelCommand(_navigator, viewModelFactory); _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() diff --git a/DaSaSo.ViewModel/State/ActualState/ActualProject.cs b/DaSaSo.ViewModel/State/ActualState/ActualProject.cs index 5962b87..b9ac273 100644 --- a/DaSaSo.ViewModel/State/ActualState/ActualProject.cs +++ b/DaSaSo.ViewModel/State/ActualState/ActualProject.cs @@ -15,12 +15,15 @@ namespace DaSaSo.ViewModel.State.ActualState public Project? AktuellProjekt { get; private set; } public SewerObject? AktuellSewerObject { get; private set; } + public SewerDamage? AktuellSewerDamage { get; private set; } + #region events public event EventHandler? ClientChanged; public event EventHandler? ProjectChanged; public event EventHandler? BuildingSiteChanged; public event EventHandler? SewerObjectChanged; + public event EventHandler? SewerDamageChanged; protected void OnClientChanged() { @@ -38,6 +41,10 @@ namespace DaSaSo.ViewModel.State.ActualState { SewerObjectChanged?.Invoke(this, new EventArgs()); } + protected void OnSewerDamageChanged() + { + SewerDamageChanged?.Invoke(this, new EventArgs()); + } #endregion public void SetClient(Client client, bool notification = true) { @@ -77,5 +84,12 @@ namespace DaSaSo.ViewModel.State.ActualState { SetBuildingSite(null); } + + public void SetSewerDamage(SewerDamage sewerDamage, bool notification = true) + { + AktuellSewerDamage = sewerDamage; + if (notification) + OnSewerDamageChanged(); + } } } diff --git a/DaSaSo.Wpf/Controls/SewerObjectNavigationBar.xaml b/DaSaSo.Wpf/Controls/SewerObjectNavigationBar.xaml index 801093f..50adb3a 100644 --- a/DaSaSo.Wpf/Controls/SewerObjectNavigationBar.xaml +++ b/DaSaSo.Wpf/Controls/SewerObjectNavigationBar.xaml @@ -12,7 +12,9 @@ + - + + diff --git a/DaSaSo.Wpf/Converters/EqualDamageTypeToBooleanConverter.cs b/DaSaSo.Wpf/Converters/EqualDamageTypeToBooleanConverter.cs new file mode 100644 index 0000000..03217b2 --- /dev/null +++ b/DaSaSo.Wpf/Converters/EqualDamageTypeToBooleanConverter.cs @@ -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(); + } + } +} diff --git a/DaSaSo.Wpf/Converters/EqualPreperationTypeToBooleanConverter.cs b/DaSaSo.Wpf/Converters/EqualPreperationTypeToBooleanConverter.cs new file mode 100644 index 0000000..aaec55c --- /dev/null +++ b/DaSaSo.Wpf/Converters/EqualPreperationTypeToBooleanConverter.cs @@ -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(); + } + } +} diff --git a/DaSaSo.Wpf/HostBuilders/AddViewModelsHostBuilderExtensions.cs b/DaSaSo.Wpf/HostBuilders/AddViewModelsHostBuilderExtensions.cs index 3ae316a..8952aeb 100644 --- a/DaSaSo.Wpf/HostBuilders/AddViewModelsHostBuilderExtensions.cs +++ b/DaSaSo.Wpf/HostBuilders/AddViewModelsHostBuilderExtensions.cs @@ -28,6 +28,8 @@ namespace DaSaSo.Wpf.HostBuilders services.AddTransient(); services.AddSingleton(); + services.AddTransient(); + services.AddSingleton>(services => { return () => new HomeViewModel(); @@ -57,7 +59,10 @@ namespace DaSaSo.Wpf.HostBuilders { return () => new SewerDamageListViewModel( services.GetRequiredService(), - services.GetRequiredService>()); + services.GetRequiredService>()//, + //services.GetRequiredService() + + ); }); services.AddSingleton>(services => diff --git a/DaSaSo.Wpf/Sampledata/SewerDamageListSampleData.cs b/DaSaSo.Wpf/Sampledata/SewerDamageListSampleData.cs new file mode 100644 index 0000000..5ff3577 --- /dev/null +++ b/DaSaSo.Wpf/Sampledata/SewerDamageListSampleData.cs @@ -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 Damages { get; private set; } = new ObservableCollection(); + public SewerDamageListSampleData() + { + Damages.Add(new SewerDamage() + { + DamageType = EDamageType.Bruch | EDamageType.EinrageneStutzen, + PreparationType = EPreparationType.CleanedHD | EPreparationType.CleanedRoborter, + Distance = 12.5m + + }); + } + } +} diff --git a/DaSaSo.Wpf/View/SewerObject/SewerDamageListView.xaml b/DaSaSo.Wpf/View/SewerObject/SewerDamageListView.xaml index 313e211..7bb156a 100644 --- a/DaSaSo.Wpf/View/SewerObject/SewerDamageListView.xaml +++ b/DaSaSo.Wpf/View/SewerObject/SewerDamageListView.xaml @@ -2,12 +2,35 @@ 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" xmlns:viewmodel="clr-namespace:DaSaSo.ViewModel;assembly=DaSaSo.ViewModel" d:DataContext="{d:DesignInstance Type=viewmodel:SewerDamageListViewModel}" - mc:Ignorable="d" - d:DesignHeight="450" d:DesignWidth="800"> + xmlns:d="http://schemas.microsoft.com/expression/blend/2008" + 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" + d:DesignHeight="450" d:DesignWidth="1020"> + + + + + + + - + + + + + + + + + + + + + + diff --git a/DaSaSo.Wpf/appsettings.json b/DaSaSo.Wpf/appsettings.json index 626e6f1..0da8e7f 100644 --- a/DaSaSo.Wpf/appsettings.json +++ b/DaSaSo.Wpf/appsettings.json @@ -1,6 +1,6 @@ { "ConnectionStrings": { - "databaseToUse": "sqlite", + "databaseToUse": "default", "default": "Host = localhost; Database = dasaso; Username = kansan; Password = kansan", "sqlite": "Data Source=database.db" }