using System; using System.Collections.Generic; using System.Linq; using System.Text; using Ease.CoreV35; using Ease.CoreV35.Model; using Ease.CoreV35.Caching; using System.Data.Linq.Mapping; namespace Payroll.BO { #region Asset [Serializable] public class Asset : BasicBaseObject { public delegate void ItemChanged(); #region Cache Store private static Cache _cache = new Cache(typeof(Asset)); #endregion #region Constructor public Asset() { _sCode = string.Empty; _sName = string.Empty; _sdescription = string.Empty; _buyTime = DateTime.Now; _sRemarks = string.Empty; _sIsUsing = false; _dBuyPrice = 0; _sSection=string.Empty; _sAssignUserId1 = null; _sAssignUserId2 = null; _status = EnumStatus.Active; _IsLinemanager = false; _assetType = EnumAssetInventoryType.Asset; _defaultItem = false; } #endregion #region Input validator public string[] InputValidator() { string[] sErrorString = new string[2]; if (this.Name == "") { sErrorString[0] = "Description can not be empty"; sErrorString[1] = "Description"; return sErrorString; } if(this.BuyPrice == 0) { sErrorString[0] = "Buy Price can not be empty"; sErrorString[1] = "BuyPrice"; return sErrorString; } sErrorString = null; return sErrorString; } #endregion #region Properties #region Code : string private string _sCode; public string Code { get { return _sCode; } set { base.OnPropertyChange("code", _sCode, value); _sCode = value; } } #endregion #region Name : string private string _sName; public string Name { get { return _sName; } set { base.OnPropertyChange("name", _sName, value); _sName = value; } } #endregion #region Section : string private string _sSection; public string Section { get { return _sSection; } set { base.OnPropertyChange("Section", _sSection, value); _sSection = value; } } #endregion #region AssignUserNo1 : string private ID _sAssignUserId1; public ID AssignUserId1 { get { return _sAssignUserId1; } set { base.OnPropertyChange("AssignUserId1", _sAssignUserId1, value); _sAssignUserId1 = value; } } #endregion #region AssignUserNo2 : string private ID _sAssignUserId2; public ID AssignUserId2 { get { return _sAssignUserId2; } set { base.OnPropertyChange("AssignUserId2", _sAssignUserId2, value); _sAssignUserId2 = value; } } #endregion #region IsLinemanager : bool private bool _IsLinemanager; public bool IsLinemanager { get { return _IsLinemanager; } set { _IsLinemanager = value; } } #endregion #region Description : string private string _sdescription; public string Description { get { return _sdescription; } set { base.OnPropertyChange("Description", _sdescription, value); _sdescription = value; } } #endregion #region BuyTime : DateTime private DateTime _buyTime; public DateTime BuyTime { get { return _buyTime; } set { base.OnPropertyChange("buyTime", _buyTime, value); _buyTime = value; } } #endregion #region Remarks : string private string _sRemarks; public string Remarks { get { return _sRemarks; } set { base.OnPropertyChange("remarks", _sRemarks, value); _sRemarks = value; } } #endregion #region IsUsing : Boolean private bool _sIsUsing; public bool IsUsing { get { return _sIsUsing; } set { base.OnPropertyChange("isUsing", _sIsUsing, value); _sIsUsing = value; } } #endregion #region BuyPrice: Double private double _dBuyPrice; public double BuyPrice { get { return _dBuyPrice; } set { base.OnPropertyChange("buyPrice", _dBuyPrice, value); _dBuyPrice = value; } } #endregion private EnumAssetInventoryType _assetType; public EnumAssetInventoryType AssetType { get { return _assetType; } set { _assetType = value; } } private bool _defaultItem; public bool DefaultItem { get { return _defaultItem; } set { _defaultItem = value; } } private Employee _employee; public Employee ClearanceEmployee { get { if (this.AssignUserId1 != null && _employee==null) _employee = Employee.Get(this.AssignUserId1); else if (this.AssignUserId2 != null && _employee == null) _employee = Employee.Get(this.AssignUserId2); return _employee; } } #endregion #region Service Factory IAssetService : IAssetService internal static IAssetService Service { get { return Services.Factory.CreateService(typeof(IAssetService)); } } #endregion #region Functions public static Asset Get(ID nID) { Asset asset = null; #region Cache Header asset = (Asset)_cache["Get", nID]; if (asset != null) return asset; #endregion asset = Asset.Service.Get(nID); #region Cache Footer _cache.Add(asset, "Get", nID); #endregion return asset; } public static Asset Get(string name) { Asset asset = null; #region Cache Header asset = (Asset)_cache["Get", name]; if (asset != null) return asset; #endregion asset = Asset.Service.Get(name); #region Cache Footer _cache.Add(asset, "Get", name); #endregion return asset; } public static ObjectsTemplate Get(EnumStatus status) { #region Cache Header ObjectsTemplate assets = _cache["Get"] as ObjectsTemplate; if (assets != null) return assets; #endregion try { assets = Asset.Service.Get(); } catch (ServiceException e) { throw new Exception(e.Message, e); } #region Cache Footer _cache.Add(assets, "Get"); #endregion return assets; } public static ObjectsTemplate Get() { #region Cache Header ObjectsTemplate assets = _cache["Get"] as ObjectsTemplate; if (assets != null) return assets; #endregion try { assets = Asset.Service.Get(); } catch (ServiceException e) { throw new Exception(e.Message, e); } #region Cache Footer _cache.Add(assets, "Get"); #endregion return assets; } public ID Save() { base.SetAuditTrailProperties(); return Asset.Service.Save(this); } public void Delete(ID id) { Asset.Service.Delete(id); } public static ObjectsTemplate Get(EnumAssetInventoryType assetType) { ObjectsTemplate assets = null; if (assets != null) return assets; try { assets = Asset.Service.Get(assetType); } catch (ServiceException e) { throw new Exception(e.Message, e); } return assets; } public static ObjectsTemplate Get(Employee oEmployee, EnumAssetInventoryType assetType, bool defaultItem) { ObjectsTemplate assets = null; if (assets != null) return assets; try { assets = Asset.Service.Get(oEmployee, assetType, defaultItem); } catch (ServiceException e) { throw new Exception(e.Message, e); } return assets; } public static ObjectsTemplate Get(Employee oEmployee, EnumAssetInventoryType assetType) { ObjectsTemplate assets = null; if (assets != null) return assets; try { assets = Asset.Service.Get(oEmployee, assetType); } catch (ServiceException e) { throw new Exception(e.Message, e); } return assets; } public static ObjectsTemplate GetLineManagerItem() { ObjectsTemplate assets = null; if (assets != null) return assets; try { assets = Asset.Service.GetLineManagerItem(); } catch (ServiceException e) { throw new Exception(e.Message, e); } return assets; } #endregion } #endregion #region IAssetService public interface IAssetService { Asset Get(ID id); Asset Get(string name); ObjectsTemplate Get(); ObjectsTemplate Get(EnumAssetInventoryType assetType); ObjectsTemplate Get(Employee oEmployee, EnumAssetInventoryType assetType, bool defaultItem); ObjectsTemplate Get(Employee oEmployee, EnumAssetInventoryType assetType); ObjectsTemplate GetLineManagerItem(); ID Save(Asset item); void Delete(ID id); } #endregion }