using System.ComponentModel; using BS.Shared; using BS.Shared.DataContracts; using System.Collections.Generic; namespace BeWo.ViewModel { public class BeWoFolderVM : AbstractDCMapperVM { public static string PropertyName_Files = "Files"; public static string PropertyName_Name = "Name"; public static string PropertyName_ObjectOid = "ObjectOid"; public static string PropertyName_ObjectTid = "ObjectTid"; public static string PropertyName_ParentFolder = "ParentFolder"; public static string PropertyName_SubFolders = "SubFolders"; private BindingList _Files; private string _Name; private long? _ObjectOid; private TableID _ObjectTid; private BeWoFolderVM _ParentFolder; private BindingList _SubFolders; public BeWoFolderVM(BeWoFolderDC pDC) : base(pDC, true) { } public BindingList Files { get { return this._Files ?? (this._Files = new BindingList()); } set { if (this.AreDifferent(this._Files, value)) { this._Files = value; this.StoreDirtyInformation(this.AreDifferent(this.DataContract.Files, value), PropertyName_Files); this.FirePropertyChanged(PropertyName_Files); } } } public string Name { get { return this._Name; } set { if (this.AreDifferent(this._Name, value)) { this._Name = value; this.StoreDirtyInformation(this.AreDifferent(this.DataContract.Name, value), PropertyName_Name); this.FirePropertyChanged(PropertyName_Name); } } } public long? ObjectOid { get { return this._ObjectOid; } set { if (this.AreDifferent(this._ObjectOid, value)) { this._ObjectOid = value; this.StoreDirtyInformation(this.AreDifferent(this.DataContract.ObjectOid, value), PropertyName_ObjectOid); this.FirePropertyChanged(PropertyName_ObjectOid); } } } public TableID ObjectTid { get { return this._ObjectTid; } set { if (this.AreDifferent(this._ObjectTid, value)) { this._ObjectTid = value; this.StoreDirtyInformation(this.AreDifferent(this.DataContract.ObjectTid, value), PropertyName_ObjectTid); this.FirePropertyChanged(PropertyName_ObjectTid); } } } public BeWoFolderVM ParentFolder { get { return this._ParentFolder; } set { if (this.AreDifferent(this._ParentFolder, value)) { this._ParentFolder = value; // StoreDirtyInformation(AreDifferent(DataContract.ParentFolder, value), PropertyName_ParentFolder); this.FirePropertyChanged(PropertyName_ParentFolder); } } } public BindingList SubFolders { get { return this._SubFolders ?? (this._SubFolders = new BindingList()); } set { if (this.AreDifferent(this._SubFolders, value)) { this._SubFolders = value; this.StoreDirtyInformation(this.AreDifferent(this.DataContract.SubFolders, value), PropertyName_SubFolders); this.FirePropertyChanged(PropertyName_SubFolders); } } } protected override void InitByDataContract(BeWoFolderDC pDataContract) { _Files = new BindingList(); if (DataContract.Files != null) { foreach (var item in DataContract.Files) { FileAttachmentVM fileVM = new FileAttachmentVM(item); fileVM.Folder = this; _Files.Add(fileVM); } } _SubFolders = new BindingList(); if (DataContract.SubFolders != null) { foreach (var item in DataContract.SubFolders) { BeWoFolderVM subfolderVM = new BeWoFolderVM(item); subfolderVM.ParentFolder = this; _SubFolders.Add(subfolderVM); } } this._ObjectOid = pDataContract.ObjectOid; this._Name = pDataContract.Name; this._ObjectTid = pDataContract.ObjectTid; } protected override BeWoFolderDC MapToDataContract(BeWoFolderDC pDataContract, bool doCommit) { DataContract.Files = new List(); foreach (var item in _Files) { DataContract.Files.Add(item.CommitToDataContract()); } DataContract.SubFolders = new List(); foreach (var item in _SubFolders) { DataContract.SubFolders.Add(item.CommitToDataContract()); } if (_ParentFolder != null) { pDataContract.ParentBeWoFolderOid = _ParentFolder.DataContract.BeWoFolderOid; pDataContract.ObjectOid = _ParentFolder.DataContract.ObjectOid; pDataContract.ObjectTid = _ParentFolder.DataContract.ObjectTid; } pDataContract.Name = this._Name; return pDataContract; } } }