using Ease.Core.DataAccess;
using System;
using System.Collections.Generic;
using System.Linq;

namespace HRM.BO
{
    #region Asset

    public class Asset : BasicBaseObject
    {
        public delegate void ItemChanged();

        #region Constructor

        public Asset()
        {
            Code = string.Empty;
            Name = string.Empty;
            Description = string.Empty;
            BuyTime = DateTime.Now; // not needed in UI
            Remarks = string.Empty; 
            IsUsing = false; // not needed in UI
            BuyPrice = 0;  // not needed in UI
            Section = string.Empty; 
            AssignUserNo1 = string.Empty;
            AssignUserNo2 = string.Empty;
            IsLinemanager = false;
            AssetType = EnumAssetInventoryType.Asset;
            DefaultItem = false;  // not needed in UI
        }

        #endregion

        #region Properties

        public string Code { get; set; }
        public string Name { get; set; }
        public string Section { get; set; }
        public string AssignUserNo1 { get; set; }
        public string AssignUserNo2 { get; set; }
        public bool IsLinemanager { get; set; }
        public string Description { get; set; }
        public DateTime BuyTime { get; set; }
        public string Remarks { get; set; }
        public bool IsUsing { get; set; }
        public double BuyPrice { get; set; }
        public EnumAssetInventoryType AssetType { get; set; }
        public bool DefaultItem { get; set; }
        public Employee ClearanceEmployee { get; set; }
        public bool IsSerailItem { get; set; }
        public bool isTaxable { get; set; }
        public int? AssignEmployeeNo1 { get; set; }
        public int? AssignEmployeeNo2 { get; set; }
        public int AssetCategoryId { get; set;}
        public int WarrentyDays { get; set; }
        public string DescriptiveName { get; set; }
        #endregion
    }

    #endregion

    #region IAssetService

    public interface IAssetService
    {
        Asset Get(int id);
        Asset Get(string name);
        List<Asset> Get();
        List<Asset> Get(EnumAssetInventoryType assetType);
        List<Asset> Get(Employee oEmployee, EnumAssetInventoryType assetType, bool defaultItem);
        List<Asset> Get(Employee oEmployee);
        List<Asset> GetLineManagerItem();
        void UpdateAssetSpecification(TransactionContext tc, AssetSerial oAssetSerial);
        int Save(Asset item);
        void Delete(int id);
        string GetNextCode();
    }

    #endregion
}