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

183 lines
6.0 KiB
C#

using System.ComponentModel;
using BS.Shared;
using BS.Shared.DataContracts;
using System.Collections.Generic;
namespace BeWo.ViewModel
{
public class BeWoFolderVM : AbstractDCMapperVM<BeWoFolderDC>
{
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<FileAttachmentVM> _Files;
private string _Name;
private long? _ObjectOid;
private TableID _ObjectTid;
private BeWoFolderVM _ParentFolder;
private BindingList<BeWoFolderVM> _SubFolders;
public BeWoFolderVM(BeWoFolderDC pDC) : base(pDC, true)
{
}
public BindingList<FileAttachmentVM> Files
{
get { return this._Files ?? (this._Files = new BindingList<FileAttachmentVM>()); }
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<BeWoFolderVM> SubFolders
{
get { return this._SubFolders ?? (this._SubFolders = new BindingList<BeWoFolderVM>()); }
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<FileAttachmentVM>();
if (DataContract.Files != null)
{
foreach (var item in DataContract.Files)
{
FileAttachmentVM fileVM = new FileAttachmentVM(item);
fileVM.Folder = this;
_Files.Add(fileVM);
}
}
_SubFolders = new BindingList<BeWoFolderVM>();
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<FileAttachmentDC>();
foreach (var item in _Files)
{
DataContract.Files.Add(item.CommitToDataContract());
}
DataContract.SubFolders = new List<BeWoFolderDC>();
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;
}
}
}