using BS.Shared; using BS.Shared.DataContracts; using BS.Shared.Extensions; using BeWo.Core; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Media; namespace BeWo.ViewModel { public class DienstInfoVM : AbstractDCMapperVM { private long? _DienstOid; private string _DienstNotice; private long? _DienstVersion; private string _DienstName; private string _Kurz; private SolidColorBrush _Farbe; private string _FarbeString; private DateTime _StartDT; private DateTime _EndeDT; private double _Dauer; private int _Pause; private WohnheimDC _Wohnheim; public DienstInfoVM(DienstInfoDC dienstDC) : base(dienstDC, dienstDC.Oid == null) { Dauer = dienstDC.Dauer; } public long? DienstOid { get { return _DienstOid; } set { if (AreDifferent(_DienstOid, value)) { _DienstOid = value; StoreDirtyInformation(AreDifferent(DataContract.Oid, value), nameof(_DienstOid)); FirePropertyChanged(nameof(_DienstOid)); } } } public string DienstNotice { get { return _DienstNotice; } set { if (AreDifferent(_DienstNotice, value)) { _DienstNotice = value; StoreDirtyInformation(AreDifferent(DataContract.Notice, value), nameof(_DienstNotice)); FirePropertyChanged(nameof(_DienstNotice)); } } } public long? DienstVersion { get { return _DienstVersion; } set { if (AreDifferent(_DienstVersion, value)) { _DienstVersion = value; StoreDirtyInformation(AreDifferent(DataContract.Version, value), nameof(_DienstVersion)); FirePropertyChanged(nameof(_DienstVersion)); } } } public string DienstName { get { return _DienstName; } set { if (AreDifferent(_DienstName, value)) { _DienstName = value; StoreDirtyInformation(AreDifferent(DataContract.DienstName, value), nameof(_DienstName)); FirePropertyChanged(nameof(_DienstName)); } } } public string Kurz { get { return _Kurz; } set { if (AreDifferent(_Kurz, value)) { _Kurz = value; StoreDirtyInformation(AreDifferent(DataContract.Kurz, value), nameof(_Kurz)); FirePropertyChanged(nameof(_Kurz)); } } } public SolidColorBrush Farbe { get { return _Farbe; } set { if (AreDifferent(_Farbe, value)) { _Farbe = value; _FarbeString = value.ToStringNullCheck(); StoreDirtyInformation(AreDifferent(DataContract.Farbe, value), nameof(_Farbe)); FirePropertyChanged(nameof(_Farbe)); } } } public string Start { get { return _StartDT.ToString("HH:mm"); } set { if (AreDifferent(Start, value)) { var s = value.Split(':'); var dt = new DateTime(2000, 1, 1).AddHours(int.Parse(s[0])).AddMinutes(int.Parse(s[1])); _StartDT = dt; StoreDirtyInformation(AreDifferent(DataContract.Start, dt), nameof(_StartDT)); FirePropertyChanged(nameof(_StartDT)); } } } public DateTime StartDT { get { return _StartDT; } set { if (AreDifferent(_StartDT, value)) { _StartDT = value; StoreDirtyInformation(AreDifferent(DataContract.Start, value), nameof(_StartDT)); FirePropertyChanged(nameof(_StartDT)); } } } public string Ende { get { return _EndeDT.ToString("HH:mm"); } set { if (AreDifferent(Start, value)) { var s = value.Split(':'); var dt = new DateTime(2000, 1, 1).AddHours(int.Parse(s[0])).AddMinutes(int.Parse(s[1])); _EndeDT = dt; StoreDirtyInformation(AreDifferent(DataContract.Ende, dt), nameof(_EndeDT)); FirePropertyChanged(nameof(_EndeDT)); } } } public DateTime EndeDT { get { return _EndeDT; } set { if (AreDifferent(_EndeDT, value)) { _EndeDT = value; StoreDirtyInformation(AreDifferent(DataContract.Ende, value), nameof(_EndeDT)); FirePropertyChanged(nameof(_EndeDT)); } } } public double Dauer { get { return _Dauer; } set { if (AreDifferent(_Dauer, value)) { _Dauer = value; StoreDirtyInformation(AreDifferent(DataContract.Dauer, value), nameof(_Dauer)); FirePropertyChanged(nameof(_Dauer)); } } } public int Pause { get { return _Pause; } set { if (AreDifferent(_Pause, value)) { _Pause = value; StoreDirtyInformation(AreDifferent(DataContract.Pause, value), nameof(_Pause)); FirePropertyChanged(nameof(_Pause)); } } } public WohnheimDC Wohnheim { get { return _Wohnheim; } set { if (AreDifferent(_Wohnheim, value)) { _Wohnheim = value; StoreDirtyInformation(AreDifferent(DataContract.Wohnheim, value), nameof(_Wohnheim)); FirePropertyChanged(nameof(_Wohnheim)); } } } protected override void InitByDataContract(DienstInfoDC bDataContract) { _DienstOid = bDataContract.Oid; _DienstNotice = bDataContract.Notice; _DienstVersion = bDataContract.Version; _DienstName = bDataContract.DienstName; _Kurz = bDataContract.Kurz; _StartDT = bDataContract.Start; _EndeDT = bDataContract.Ende; _Pause = bDataContract.Pause; _Wohnheim = bDataContract.Wohnheim; _Dauer = bDataContract.Dauer; if (!string.IsNullOrEmpty(bDataContract.Farbe)) { _Farbe = new SolidColorBrush(ColorExtensions.FromHexStringDefault(bDataContract.Farbe, Colors.Transparent)); } } protected override DienstInfoDC MapToDataContract(DienstInfoDC bDataContract, bool doCommit) { bDataContract.Oid = _DienstOid; bDataContract.Notice = _DienstNotice; bDataContract.Version = _DienstVersion; bDataContract.DienstName = _DienstName; bDataContract.Kurz = _Kurz; bDataContract.Farbe = _FarbeString; bDataContract.Pause = _Pause; bDataContract.Start = _StartDT; bDataContract.Ende = _EndeDT; bDataContract.Wohnheim = _Wohnheim; bDataContract.Dauer = _Dauer; return bDataContract; } } }