Files
BeWoPlaner/BeWo/ViewModel/CostRatePeriodVM.cs
2016-06-27 01:45:38 +02:00

209 lines
7.0 KiB
C#

using System;
using BeWo.Validation;
using BS.Shared;
using BS.Shared.DataContracts;
namespace BeWo.ViewModel
{
public class CostRatePeriodVM : AbstractDCMapperVM<CostRatePeriodDC>
{
public static string PropertyName_CostRateType = "CostRateType";
public static string PropertyName_CostRateValue = "CostRateValue";
public static string PropertyName_EndDate = "EndDate";
public static string PropertyName_Notice = "Notice";
public static string PropertyName_StartDate = "StartDate";
public static string PropertyName_UnitName = "UnitName";
public static string PropertyName_ValueListEntry = "ValueListEntry";
private CostRatePeriodType _CostRateType;
private decimal? _CostRateValue;
private DateTime? _EndDate;
private string _Notice;
private DateTime? _StartDate;
private string _UnitName;
private ValueListEntryDC _ValueListEntry;
private string mValueFormat = "{0:0.00}";
public CostRatePeriodVM(CostRatePeriodDC pDC) : base(pDC, false)
{
}
public CostRatePeriodType CostRateType
{
get { return this._CostRateType; }
set
{
if (value != CostRatePeriodType.Unknown)
{
if (this.AreDifferent(this._CostRateType, value))
{
this._CostRateType = value;
this.StoreDirtyInformation(this.AreDifferent(this.DataContract.CostRateType, value), PropertyName_CostRateType);
this.FirePropertyChanged(PropertyName_CostRateType);
}
}
}
}
public decimal? CostRateValue
{
get { return this._CostRateValue; }
set
{
if (this.AreDifferent(this._CostRateValue, value))
{
this._CostRateValue = value;
this.StoreDirtyInformation(this.AreDifferent(this.DataContract.CostRateValue, value), PropertyName_CostRateValue);
this.FirePropertyChanged(PropertyName_CostRateValue);
}
}
}
public string CostRateValueFormatted
{
get
{
switch (this.CostRateType)
{
case CostRatePeriodType.HourlyRate:
return String.Format("{0:0.00}", this._CostRateValue);
case CostRatePeriodType.MinutesIntervall:
return String.Format("{0:0}", this._CostRateValue);
case CostRatePeriodType.RateFactor:
return String.Format("{0:0.d}", this._CostRateValue);
case CostRatePeriodType.MinutesPerServiceUnit:
return String.Format("{0:0}", this._CostRateValue);
default:
break;
}
return String.Format("{0:0.00}", this._CostRateType);
}
set
{
decimal newVal = Decimal.Parse(value);
if (this.AreDifferent(this._CostRateValue, newVal))
{
this._CostRateValue = newVal;
this.StoreDirtyInformation(this.AreDifferent(this.DataContract.CostRateValue, newVal), PropertyName_CostRateValue);
this.FirePropertyChanged(PropertyName_CostRateValue);
}
}
}
[Validation(ValidationRule = ValidationRules.NotNullOrStringEmpty)]
public DateTime? EndDate
{
get { return this._EndDate; }
set
{
if (this.AreDifferent(this._EndDate, value))
{
this._EndDate = value;
this.StoreDirtyInformation(this.AreDifferent(this.DataContract.EndDate, value), PropertyName_EndDate);
this.FirePropertyChanged(PropertyName_EndDate);
}
}
}
public string Notice
{
get { return this._Notice; }
set
{
if (this.AreDifferent(this._Notice, value))
{
this._Notice = value;
this.StoreDirtyInformation(this.AreDifferent(this.DataContract.Notice, value), PropertyName_Notice);
this.FirePropertyChanged(PropertyName_Notice);
}
}
}
public string UnitName
{
get { return this._UnitName; }
set
{
if (this.AreDifferent(this._UnitName, value))
{
this._UnitName = value;
this.StoreDirtyInformation(this.AreDifferent(this.DataContract.UnitName, value), PropertyName_UnitName);
this.FirePropertyChanged(PropertyName_UnitName);
}
}
}
public string ValueFormat
{
get { return this.mValueFormat; }
set { this.mValueFormat = value; }
}
public ValueListEntryDC ValueListEntry
{
get { return this._ValueListEntry; }
set
{
if (this.AreDifferent(this._ValueListEntry, value))
{
this._ValueListEntry = value;
this.StoreDirtyInformation(this.AreDifferent(this.DataContract.ValueListEntry, value), PropertyName_ValueListEntry);
this.FirePropertyChanged(PropertyName_ValueListEntry);
}
}
}
public decimal GetMinutesInBE(decimal minutes)
{
return minutes / this.CostRateValue.Value * 60;
}
protected override void InitByDataContract(CostRatePeriodDC pDataContract)
{
this._UnitName = pDataContract.UnitName;
this._StartDate = pDataContract.StartDate;
this._EndDate = pDataContract.EndDate;
this._CostRateValue = pDataContract.CostRateValue;
this._Notice = pDataContract.Notice;
this._ValueListEntry = pDataContract.ValueListEntry;
this._CostRateType = pDataContract.CostRateType;
}
protected override CostRatePeriodDC MapToDataContract(CostRatePeriodDC pDataContract, bool doCommit)
{
pDataContract.UnitName = this._UnitName;
pDataContract.StartDate = this._StartDate;
pDataContract.EndDate = this._EndDate;
pDataContract.CostRateValue = this._CostRateValue;
pDataContract.CostRateType = this._CostRateType;
pDataContract.Notice = this._Notice;
pDataContract.ValueListEntry = this._ValueListEntry;
return pDataContract;
}
}
}