Leistungsverzeichnis kann nun den Baustellen zugeordnet werden

This commit is contained in:
Husky
2020-04-14 14:22:40 +02:00
parent a2ee9cdeab
commit b24e724cd3
17 changed files with 310 additions and 81 deletions

View File

@@ -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<Baustelle> baustellen = new List<Baustelle>();
List<ILeistungsverzeichnisViewPosition> leistungsverzeichnisViewPositions = new List<ILeistungsverzeichnisViewPosition>();
public void Speichern()
{
unitOfWork.Commit();
}
public List<Baustelle> Baustellen => baustellen;
public List<ILeistungsverzeichnisViewPosition> 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<BaustelleLeistungsverzeichnisReferenz> _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<BaustelleLeistungsverzeichnisReferenz> d = _bs.FindAll(x => x.LVPosition.GuidNr.Equals(ps.GuidNr));
//return (d.Count > 0);
}
private void buildLeistungsverzeichnisList()
{
List<ILeistungsverzeichnisViewPosition> poses = new List<ILeistungsverzeichnisViewPosition>();
List<LeistungsverzeichnisPosition> 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();
}
}
}