Files
BeWoPlaner/BeWo/ViewModel/CustomerTeamVM.cs
staccatomamba b43202e46f Merge branch 'master' of ssh://float.beyondsoft.de/git/beyondSoft/BeWo
# Conflicts:
#	BeWo/BeWo.csproj
#	Data/Data.csproj
#	Host/Multitenancy/demo.config
#	Shared/BeWoEntityEnums.cs
#	Shared/Shared.csproj
2017-08-18 14:50:39 +02:00

101 lines
2.9 KiB
C#

using System.Collections.ObjectModel;
using System.Linq;
using BeWo.Validation;
using BS.Shared.DataContracts;
using BS.Shared.DataContracts.Compact;
using BS.Shared.Extensions;
namespace BeWo.ViewModel
{
public class CustomerTeamVM : AbstractDCMapperVM<CustomerTeamDC>
{
public static string PropertyName_Members = "Members";
public static string PropertyName_Name = "Name";
public static string PropertyName_Notice = "Notice";
private ObservableCollection<CompactCustomerDC> _Members;
private string _Name;
private string _Notice;
public CustomerTeamVM(CustomerTeamDC pDataContract) : base(pDataContract, pDataContract.CustomerTeamOid == null)
{
}
public ObservableCollection<CompactCustomerDC> Members
{
get { return _Members; }
set
{
if(AreDifferent(_Members, value))
{
_Members = value;
FirePropertyChanged(PropertyName_Members);
}
}
}
public string Notice
{
get { return _Notice; }
set
{
if(AreDifferent(_Notice, value))
{
_Notice = value;
StoreDirtyInformation(DataContract.Notice != value, PropertyName_Notice);
FirePropertyChanged(PropertyName_Notice);
}
}
}
[Validation(ValidationRule = ValidationRules.NotNullOrStringEmpty)]
public string Name
{
get { return _Name; }
set
{
if(AreDifferent(_Name, value))
{
_Name = value;
StoreDirtyInformation(DataContract.Name != value, PropertyName_Name);
FirePropertyChanged(PropertyName_Name);
}
}
}
protected override void InitByDataContract(CustomerTeamDC pDataContract)
{
_Members = new ObservableCollection<CompactCustomerDC>();
if (!IsNew)
{
if(pDataContract.Members != null)
{
_Name = pDataContract.Name;
_Notice = pDataContract.Notice;
_Members.AddRange(pDataContract.Members.OrderBy(m => string.Format("{0},{1}", m.LastName, m.FirstName)));
}
}
_Members.CollectionChanged += (s, e) => StoreDirtyInformation(!pDataContract.Members.ContainsSameItemsAs(_Members), PropertyName_Members);
}
protected override CustomerTeamDC MapToDataContract(CustomerTeamDC pDataContract, bool doCommit)
{
pDataContract.Name = _Name;
pDataContract.Notice = _Notice;
pDataContract.Members = _Members.ToList();
return pDataContract;
}
}
}