134 lines
5.0 KiB
C#
134 lines
5.0 KiB
C#
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();
|
|
}
|
|
}
|
|
}
|