Files
BeWoPlaner/BeWo/ViewModel/WohneinheitVM.cs
2024-09-12 12:00:55 +02:00

357 lines
12 KiB
C#

using BeWo.ViewModel.ListViewModel;
using BS.Shared;
using BS.Shared.DataContracts;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
namespace BeWo.ViewModel
{
public class WohneinheitVM : AbstractDCMapperVM<WohneinheitDC>
{
private long? _Oid;
private long? _Version;
private string _Notice;
private string _Wohnname;
private string _Zimmername;
private decimal? _Miete;
private decimal? _Heizung;
private decimal? _Strom;
private decimal? _Betriebskosten;
private decimal? _SonstigeKosten;
private decimal? _Kaution;
private decimal? _QM;
private int? _Baujahr;
private string _Mobilierung;
private string _Zusatznotiz;
private string _Stock;
private ImageListVM _ImageListVM;
public WohneinheitVM() : this(new WohneinheitDC())
{
Wohnname = "Designer Wohnung";
}
public WohneinheitVM(WohneinheitDC dc) : base(dc, dc.Oid == null)
{
}
public long? Oid => _Oid;
public string Wohnname
{
get { return _Wohnname; }
set
{
if (!AreDifferent(Wohnname, value))
return;
_Wohnname = value;
StoreDirtyInformation(AreDifferent(DataContract.Wohnname, value), nameof(Wohnname));
FirePropertyChanged(nameof(Wohnname));
FirePropertyChanged(nameof(Caption));
FirePropertyChanged(nameof(Group));
FirePropertyChanged(nameof(Displayname));
FirePropertyChanged(nameof(Displayname2));
}
}
public string Zimmername
{
get { return _Zimmername; }
set
{
if (!AreDifferent(Zimmername, value))
return;
_Zimmername = value;
StoreDirtyInformation(AreDifferent(DataContract.Zimmername, value), nameof(Zimmername));
FirePropertyChanged(nameof(Zimmername));
FirePropertyChanged(nameof(Caption));
FirePropertyChanged(nameof(Group));
FirePropertyChanged(nameof(Displayname));
FirePropertyChanged(nameof(Displayname2));
}
}
public string Name => ToString();
public decimal? Miete
{
get { return _Miete; }
set
{
if (!AreDifferent(Miete, value))
return;
_Miete = value;
StoreDirtyInformation(AreDifferent(DataContract.Miete, value), nameof(Miete));
FirePropertyChanged(nameof(Miete));
FirePropertyChanged(nameof(Brutto));
}
}
public decimal? Heizung
{
get { return _Heizung; }
set
{
if (AreDifferent(Heizung, value))
{
_Heizung = value;
StoreDirtyInformation(AreDifferent(DataContract.Heizung, value), nameof(Heizung));
FirePropertyChanged(nameof(Heizung));
FirePropertyChanged(nameof(Brutto));
}
}
}
public decimal? Strom
{
get { return _Strom; }
set
{
if (AreDifferent(Strom, value))
{
_Strom = value;
StoreDirtyInformation(AreDifferent(DataContract.Strom, value), nameof(Strom));
FirePropertyChanged(nameof(Strom));
FirePropertyChanged(nameof(Brutto));
}
}
}
public decimal? Betriebskosten
{
get { return _Betriebskosten; }
set
{
if (AreDifferent(Betriebskosten, value))
{
_Betriebskosten = value;
StoreDirtyInformation(AreDifferent(DataContract.Betriebskosten, value), nameof(Betriebskosten));
FirePropertyChanged(nameof(Betriebskosten));
FirePropertyChanged(nameof(Brutto));
}
}
}
public decimal? SonstigeKosten
{
get { return _SonstigeKosten; }
set
{
if (AreDifferent(SonstigeKosten, value))
{
_SonstigeKosten = value;
StoreDirtyInformation(AreDifferent(DataContract.SonstigeKosten, value), nameof(SonstigeKosten));
FirePropertyChanged(nameof(SonstigeKosten));
FirePropertyChanged(nameof(Brutto));
}
}
}
public decimal? Kaution
{
get { return _Kaution; }
set
{
if (AreDifferent(Kaution, value))
{
_Kaution = value;
StoreDirtyInformation(AreDifferent(DataContract.Kaution, value), nameof(Kaution));
FirePropertyChanged(nameof(Kaution));
}
}
}
public decimal? Brutto
{
get
{
if (!Miete.HasValue
&& !Heizung.HasValue
&& !Strom.HasValue
&& !Betriebskosten.HasValue
&& !SonstigeKosten.HasValue)
return null;
return (Miete ?? 0)
+ (Heizung ?? 0)
+ (Strom ?? 0)
+ (Betriebskosten ?? 0)
+ (SonstigeKosten ?? 0);
}
}
public decimal? QM
{
get { return _QM; }
set
{
if (!AreDifferent(QM, value))
return;
if (value == 0)
value = null;
_QM = value;
StoreDirtyInformation(AreDifferent(DataContract.QM, value), nameof(QM));
FirePropertyChanged(nameof(QM));
FirePropertyChanged(nameof(FlacheString));
}
}
public string FlacheString => QM?.ToString("########0.00 qm");
public int? Baujahr
{
get { return _Baujahr; }
set
{
if (AreDifferent(Baujahr, value))
{
_Baujahr = value;
StoreDirtyInformation(AreDifferent(DataContract.Baujahr, value), nameof(Baujahr));
FirePropertyChanged(nameof(Baujahr));
}
}
}
public string Mobilierung
{
get { return _Mobilierung; }
set
{
if (AreDifferent(Mobilierung, value))
{
_Mobilierung = value;
StoreDirtyInformation(AreDifferent(DataContract.Mobilierung, value), nameof(Mobilierung));
FirePropertyChanged(nameof(Mobilierung));
}
}
}
public string Zusatznotiz
{
get { return _Zusatznotiz; }
set
{
if (AreDifferent(Zusatznotiz, value))
{
_Zusatznotiz = value;
StoreDirtyInformation(AreDifferent(DataContract.Zusatznotiz, value), nameof(Zusatznotiz));
FirePropertyChanged(nameof(Zusatznotiz));
}
}
}
public string Stock
{
get { return _Stock; }
set
{
if (AreDifferent(Stock, value))
{
_Stock = value;
StoreDirtyInformation(AreDifferent(DataContract.Stock, value), nameof(Stock));
FirePropertyChanged(nameof(Stock));
}
}
}
public ImageListVM ImageListVM
{
get { return _ImageListVM; }
set
{
if (_ImageListVM == value)
return;
_ImageListVM = value;
FirePropertyChanged(nameof(ImageListVM));
}
}
public override bool IsDirty => base.IsDirty || ImageListVM.IsDirty;
public bool IsEinzelwohnung => string.IsNullOrEmpty(Zimmername);
public string Caption => IsEinzelwohnung ? Wohnname : Zimmername ;
public string Group => IsEinzelwohnung ? null : Wohnname;
public string Displayname => IsEinzelwohnung ? Wohnname : Wohnname + "\n- " + Zimmername;
public string Displayname2 => IsEinzelwohnung ? Wohnname : Wohnname + " - " + Zimmername;
public bool HasEmptyZimmername()
{
return string.IsNullOrEmpty(Zimmername);
}
public static int Compare(WohneinheitVM vm1, WohneinheitVM vm2)
{
if (vm1 is null)
return 1;
if (vm2 is null)
return -1;
var compare1 = string.Compare(vm1.Wohnname, vm2.Wohnname);
if (compare1 != 0)
return compare1;
var compare2 = string.Compare(vm1.Zimmername, vm2.Zimmername);
return compare2;
}
protected override void InitByDataContract(WohneinheitDC pDataContract)
{
_Oid = pDataContract.Oid;
_Version = pDataContract.Version;
_Notice = pDataContract.Notice;
_Wohnname = pDataContract.Wohnname;
_Zimmername = pDataContract.Zimmername;
_Miete = pDataContract.Miete;
_Heizung = pDataContract.Heizung;
_Strom = pDataContract.Strom;
_Betriebskosten = pDataContract.Betriebskosten;
_SonstigeKosten = pDataContract.SonstigeKosten;
_Kaution = pDataContract.Kaution;
_QM = pDataContract.QM;
_Baujahr = pDataContract.Baujahr;
_Mobilierung = pDataContract.Mobilierung;
_Zusatznotiz = pDataContract.Zusatznotiz;
_Stock = pDataContract.Stock;
_ImageListVM = new ImageListVM(pDataContract.Grundrisse ?? (pDataContract.Grundrisse = new List<ImageDC>()));
}
protected override WohneinheitDC MapToDataContract(WohneinheitDC bDataContract, bool doCommit)
{
bDataContract.Oid = _Oid;
bDataContract.Notice = _Notice;
bDataContract.Version = _Version;
bDataContract.Wohnname = _Wohnname;
bDataContract.Zimmername = _Zimmername;
bDataContract.Miete = _Miete;
bDataContract.Heizung = _Heizung;
bDataContract.Strom = _Strom;
bDataContract.Betriebskosten = _Betriebskosten;
bDataContract.SonstigeKosten = _SonstigeKosten;
bDataContract.Kaution = _Kaution;
bDataContract.QM = _QM;
bDataContract.Baujahr = _Baujahr;
bDataContract.Mobilierung = _Mobilierung;
bDataContract.Zusatznotiz = _Zusatznotiz;
bDataContract.Stock = _Stock;
bDataContract.Belegungen = null;
bDataContract.Grundrisse = ImageListVM.CopyToDCList(doCommit);
return bDataContract;
}
public override string ToString()
{
if (HasEmptyZimmername())
return Wohnname;
return $"{Wohnname}, {Zimmername}";
}
}
}