diff --git a/KanSan.Base/Interfaces/IUnitOfWork.cs b/KanSan.Base/Interfaces/IUnitOfWork.cs index 6ee42e2..f4de46a 100644 --- a/KanSan.Base/Interfaces/IUnitOfWork.cs +++ b/KanSan.Base/Interfaces/IUnitOfWork.cs @@ -17,6 +17,7 @@ namespace KanSan.Base.Interfaces IRepository TaetigkeitenRepository { get; } IRepository LeistungsverzeichnisRepository { get; } IRepository FahrzeugRepository { get; } + IRepository LeistungsverzeichnisReferenz { get; } void Commit(); } } diff --git a/KanSan.Base/Interfaces/UI/ILeistungsverzeichnisBaustelleViewModel.cs b/KanSan.Base/Interfaces/UI/ILeistungsverzeichnisBaustelleViewModel.cs index d2806d7..55e628c 100644 --- a/KanSan.Base/Interfaces/UI/ILeistungsverzeichnisBaustelleViewModel.cs +++ b/KanSan.Base/Interfaces/UI/ILeistungsverzeichnisBaustelleViewModel.cs @@ -8,6 +8,6 @@ namespace KanSan.Base.Interfaces.UI public interface ILeistungsverzeichnisBaustelleViewModel { public List Baustellen { get; } - public List LeistungsverzeichnisPositionen { get; } + public List LeistungsverzeichnisPositionen { get; set; } } } diff --git a/KanSan.ViewModel/KanSan.ViewModel.csproj b/KanSan.ViewModel/KanSan.ViewModel.csproj index 3ca9844..ce73efd 100644 --- a/KanSan.ViewModel/KanSan.ViewModel.csproj +++ b/KanSan.ViewModel/KanSan.ViewModel.csproj @@ -22,10 +22,6 @@ - - - - diff --git a/KanSan.ViewModel/Leistungsverzeichnis/LeistungsverzeichnisBaustelleViewModel.cs b/KanSan.ViewModel/Leistungsverzeichnis/LeistungsverzeichnisBaustelleViewModel.cs new file mode 100644 index 0000000..d500568 --- /dev/null +++ b/KanSan.ViewModel/Leistungsverzeichnis/LeistungsverzeichnisBaustelleViewModel.cs @@ -0,0 +1,133 @@ +using KanSan.Base; +using KanSan.Base.Interfaces; +using KanSan.Base.Interfaces.UI; +using KanSan.Base.Models; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Diagnostics; +using System.Linq; +using System.Text; + +namespace KanSan.ViewModel +{ + public class LeistungsverzeichnisViewPosition : ILeistungsverzeichnisViewPosition + { + Guid guid; + string positionsnummer; + string beschreibung; + string einheit; + string tag; + bool isActiveInBaustelle; + + public Guid GuidNr { get => guid; set => guid = value; } + public string Positionsnummer { get => positionsnummer; set => positionsnummer = value; } + public string Beschreibung { get => beschreibung; set => beschreibung = value; } + public string Einheit { get => einheit; set => einheit = value; } + public string Tag { get => tag; set => tag = value; } + public bool IsActiveInBaustelle { get => isActiveInBaustelle; set => isActiveInBaustelle = value; } + } + public class LeistungsverzeichnisBaustelleViewModel : PropertyChangedClass, INotifyPropertyChanged, ILeistungsverzeichnisBaustelleViewModel + { + IUnitOfWork unitOfWork = new UnitOfWork(new KanSanContext()); + + Baustelle selectedBaustelle = null; + List baustellen = new List(); + List leistungsverzeichnisViewPositions = new List(); + + public void Speichern() + { + unitOfWork.Commit(); + } + + public List Baustellen => baustellen; + + public List LeistungsverzeichnisPositionen + { + get => leistungsverzeichnisViewPositions; + set + { + leistungsverzeichnisViewPositions = value; + OnPropertyChanged(); + } + } + + public void ToggleActive(LeistungsverzeichnisViewPosition leistungsverzeichnisViewPosition) + { + leistungsverzeichnisViewPosition.IsActiveInBaustelle = !leistungsverzeichnisViewPosition.IsActiveInBaustelle; + LeistungsverzeichnisPosition pos = unitOfWork.LeistungsverzeichnisRepository.Get(x => x.GuidNr.Equals(leistungsverzeichnisViewPosition.GuidNr)).ToList().First(); + + BaustelleLeistungsverzeichnisReferenz bauRef = new BaustelleLeistungsverzeichnisReferenz() + { + GuidNr = Guid.NewGuid(), + Baustelle = selectedBaustelle, + LVPosition = pos + }; + + if (leistungsverzeichnisViewPosition.IsActiveInBaustelle) + { + + _bs.Add(bauRef); + unitOfWork.LeistungsverzeichnisReferenz.Update(bauRef); + + } + else + { + + BaustelleLeistungsverzeichnisReferenz referenz = _bs.FindLast(x => x.LVPosition.GuidNr.Equals(leistungsverzeichnisViewPosition.GuidNr) && x.Baustelle.Equals(selectedBaustelle)); + Trace.WriteLine(referenz); + unitOfWork.LeistungsverzeichnisReferenz.Delete(referenz); + + } + buildLeistungsverzeichnisList(); + } + + public Baustelle SelectedBaustelle + { + get => selectedBaustelle; + set + { + if (selectedBaustelle == value) return; + selectedBaustelle = value; + buildLeistungsverzeichnisList(); + } + } + + List _bs = null; + private bool IsActive(LeistungsverzeichnisPosition ps) + { + if(_bs == null) + { + if (selectedBaustelle == null) return false; + //_bs = unitOfWork.LeistungsverzeichnisReferenz.Get(x => x.Baustelle.Equals(selectedBaustelle)).ToList(); + } + return false; + //List d = _bs.FindAll(x => x.LVPosition.GuidNr.Equals(ps.GuidNr)); + //return (d.Count > 0); + } + + private void buildLeistungsverzeichnisList() + { + List poses = new List(); + List allePositionen = unitOfWork.LeistungsverzeichnisRepository.Get().ToList(); + foreach (LeistungsverzeichnisPosition pos in allePositionen) + { + poses.Add(new LeistungsverzeichnisViewPosition() + { + GuidNr = pos.GuidNr, + Beschreibung = pos.Beschreibung, + IsActiveInBaustelle = IsActive(pos), + Einheit = pos.Einheit, + Positionsnummer = pos.Positionsnummer, + Tag = pos.Tag + }); + } + LeistungsverzeichnisPositionen = poses; + } + + public LeistungsverzeichnisBaustelleViewModel() + { + baustellen = unitOfWork.BaustelleRepository.Get().ToList(); + } + } +} diff --git a/KanSan.ViewModel/LeistungsverzeichnisPositionenListViewModel.cs b/KanSan.ViewModel/Leistungsverzeichnis/LeistungsverzeichnisPositionenListViewModel.cs similarity index 90% rename from KanSan.ViewModel/LeistungsverzeichnisPositionenListViewModel.cs rename to KanSan.ViewModel/Leistungsverzeichnis/LeistungsverzeichnisPositionenListViewModel.cs index 0ea6f8c..8094f14 100644 --- a/KanSan.ViewModel/LeistungsverzeichnisPositionenListViewModel.cs +++ b/KanSan.ViewModel/Leistungsverzeichnis/LeistungsverzeichnisPositionenListViewModel.cs @@ -34,6 +34,10 @@ namespace KanSan.ViewModel LeistungsverzeichnisPosition leistungsverzeichnisPosition = new LeistungsverzeichnisPosition() { GuidNr = guid, + Beschreibung = "TV Inspektion", + Positionsnummer = "1.0.0.1", + Einheit = "M", + Tag = "JMStandard" }; unitOfWork.LeistungsverzeichnisRepository.Insert(leistungsverzeichnisPosition); unitOfWork.Commit(); diff --git a/KanSan/KanSan.csproj.user b/KanSan/KanSan.csproj.user index f078b3c..164fba7 100644 --- a/KanSan/KanSan.csproj.user +++ b/KanSan/KanSan.csproj.user @@ -7,7 +7,7 @@ - + Code @@ -52,7 +52,7 @@ Code - + Code @@ -69,7 +69,7 @@ Designer - + Designer @@ -114,7 +114,7 @@ Designer - + Designer diff --git a/KanSan/MainWindow.xaml b/KanSan/MainWindow.xaml index 5334c4b..246061e 100644 --- a/KanSan/MainWindow.xaml +++ b/KanSan/MainWindow.xaml @@ -7,7 +7,7 @@ xmlns:syncfusion="clr-namespace:Syncfusion.Windows.Shared;assembly=Syncfusion.Shared.WPF" x:Class="KanSan.MainWindow" TitleTextAlignment="Center" TitleBarBackground="BlueViolet" mc:Ignorable="d" - Title="{Binding ApplicationTitle}" Height="450" Width="800" WindowStartupLocation="CenterScreen" WindowState="Maximized"> + Title="{Binding ApplicationTitle}" Height="800" Width="800" WindowStartupLocation="CenterScreen" WindowState="Maximized"> @@ -27,12 +27,26 @@ - - - - - - + + + + + + + + + + + + + + + + + + + + diff --git a/KanSan/MainWindow.xaml.cs b/KanSan/MainWindow.xaml.cs index ffb7cd7..842c3ee 100644 --- a/KanSan/MainWindow.xaml.cs +++ b/KanSan/MainWindow.xaml.cs @@ -32,6 +32,8 @@ namespace KanSan UI.UCBaustelleList UCBaustelleList; UI.UCSewerMainMenu uCSewerMainMenu; + UI.UCLeistungsverzeichnisPositionenBaustelle UCLeistungsverzeichnisPositionenBaustelle = new UI.UCLeistungsverzeichnisPositionenBaustelle(); + UI.UCLeistungsverzeichnisPosList UCLeistungsverzeichnisPosList = new UI.UCLeistungsverzeichnisPosList(); public MainWindow() { @@ -158,6 +160,16 @@ namespace KanSan uCObjekteList.ObjektSelected += UCObjekteList_ObjektSelected; ContentController.Content = uCObjekteList; } + + private void rbLeistungsverzeichnis_Checked(object sender, RoutedEventArgs e) + { + ContentController.Content = UCLeistungsverzeichnisPosList; + } + + private void rbLeistungsverzeichnisBaustellen_Checked(object sender, RoutedEventArgs e) + { + ContentController.Content = UCLeistungsverzeichnisPositionenBaustelle; + } } } diff --git a/KanSan/SampleData/LeistungsverzeichnisBaustelleViewModelSampleData.cs b/KanSan/SampleData/LeistungsverzeichnisBaustelleViewModelSampleData.cs index 1cf289d..ab9df2a 100644 --- a/KanSan/SampleData/LeistungsverzeichnisBaustelleViewModelSampleData.cs +++ b/KanSan/SampleData/LeistungsverzeichnisBaustelleViewModelSampleData.cs @@ -14,7 +14,12 @@ namespace KanSan.SampleData string einheit; string tag; bool isActiveInBaustelle; - + + public string Positionsnummer { get => positionsnummer; set => positionsnummer = value; } + public string Beschreibung { get => beschreibung; set => beschreibung = value; } + public string Einheit { get => einheit; set => einheit = value; } + public string Tag { get => tag; set => tag = value; } + public bool IsActiveInBaustelle { get => isActiveInBaustelle; set => isActiveInBaustelle = value; } } class LeistungsverzeichnisBaustelleViewModelSampleData : ILeistungsverzeichnisBaustelleViewModel { @@ -23,7 +28,7 @@ namespace KanSan.SampleData List leistungsverzeichnisPositionen = new List(); public List Baustellen => baustellen; - public List LeistungsverzeichnisPositionen => leistungsverzeichnisPositionen; + public List LeistungsverzeichnisPositionen { get => leistungsverzeichnisPositionen; set => throw new NotImplementedException(); } public LeistungsverzeichnisBaustelleViewModelSampleData() { @@ -38,10 +43,21 @@ namespace KanSan.SampleData }); } + int counter = 0; foreach (LeistungsverzeichnisPosition item in positionen) { - ILeistungsverzeichnisViewPosition postion; - postion.Positionsnummer = item.Positionsnummer; + bool active = (counter % 2 == 0); + ILeistungsverzeichnisViewPosition leistungsverzeichnisViewPosition = new LeistungsverzeichnisViewPosition() + { + Positionsnummer = item.Positionsnummer, + Einheit = item.Einheit, + Beschreibung = item.Beschreibung, + IsActiveInBaustelle = active + }; + LeistungsverzeichnisPositionen.Add(leistungsverzeichnisViewPosition); + counter++; + //ILeistungsverzeichnisViewPosition postion; + //postion.Positionsnummer = item.Positionsnummer; } diff --git a/KanSan/UI/Leistungsverzeichnis/UCLeistungsverzeichnisPosList.xaml b/KanSan/UI/Leistungsverzeichnis/UCLeistungsverzeichnisPosList.xaml index 1cde5a3..0e57481 100644 --- a/KanSan/UI/Leistungsverzeichnis/UCLeistungsverzeichnisPosList.xaml +++ b/KanSan/UI/Leistungsverzeichnis/UCLeistungsverzeichnisPosList.xaml @@ -23,6 +23,6 @@ -