using System;
using System.Linq;
using System.Data;


using System.Collections.Generic;


namespace HRM.BO
{
    #region ProcessActivity
    [Serializable] 
    public class ProcessActivity:AuditTrailBase
    {
        #region Constructor:ProcessActivity
        public ProcessActivity()
        {
            ProcessID = 0;
            ProjectProcessObj = null;
            ProjectID = 0;
            Description = string.Empty;
            ActivityRelatedTo = 0;
            ActivityRelatedSourceObj = null;
            RelatedValue = 0;
            Serial = 0;
            SupportObjType = null;
            VoucherSetupInfo = null;
        }
        #endregion

        #region Property
        public int ProcessID { get; set; }

        public ProjectProcess ProjectProcessObj { get; set; }

        public int ProjectID { get; set; }

        //#region EaseFAS.BO.MasterParam CurrentProject
        //[NonSerialized]
        //private EaseFAS.BO.MasterParam _currentProject;

        //public EaseFAS.BO.MasterParam CurrentProject
        //{
        //    get
        //    {
        //        if (_currentProject == null && _ProjectID != 0)
        //        {
        //            _currentProject = new EaseFAS.BO.MasterParam();
        //            _currentProject = _currentProject.Get(Ease.Core.Framework.ID(_ProjectID));
        //        }
        //        return _currentProject;
        //    }
        //    set
        //    {
        //        _currentProject = value;
        //        _ProjectID = (_currentProject == null ? null : Ease.CoreV35.Model.ID(_currentProject.ID));
        //    }
        //}

        //#endregion


        public string Description { get; set; }

        public int ActivityRelatedTo { get; set; }

        public ActivityRelatedSource ActivityRelatedSourceObj { get; set; }

        public int RelatedValue { get; set; }

        public int Serial { get; set; }

        public Type SupportObjType { get; set; }

        #region VoucherSetup

        public ActivityVoucherSetup VoucherSetupInfo { get; set; }

        public List<ActivityVoucherSetup> VoucherSetupCol { get; set; } = new List<ActivityVoucherSetup>();

        #endregion

        #endregion
    }
    #endregion

    #region IProcessActivity
    public interface IProcessActivityService
    {
        int GetMaxSerial();
        void UpdatePosition(List<ProcessActivity> processActivitys);
        bool Save(ProcessActivity ProcessActivity);
        void Delete(int ActivityID);
        ProcessActivity Get(int ID);
        List<ProcessActivity> GetbyProjectID(int Projectid);
        List<ProcessActivity> GetbyProcessID(int Projectid);
        List<ProcessActivity> GetbyProjectProcessID(int Projectid, int Processid);
        DataTable GetTable();
        List<ProcessActivity> Get();
    }
    #endregion
}