using Ease.Core.Model;
using System;
using System.Collections.Generic;
using System.Data;
using System.IO;
using System.Reflection;

namespace HRM.BO
{
    #region Vendor
   public class Vendor : BasicBaseObject
    {

        #region Constructor
        
        public Vendor()
        {
            _sName = string.Empty;
            _sAddress = string.Empty;
            _dBalance = 0.0;
            _sMobile = string.Empty;
            _sTelephone = string.Empty;
            _sEmailAddress = string.Empty;
            _sContactPerson = string.Empty;
            _status = EnumStatus.Active;
            vendorTypeString = string.Empty;
        }

        #endregion

        #region Properties

        #region Code

        private string _sCode;
        public string Code
        {
            get { return _sCode; }
            set { _sCode = value; }
        }

        #endregion

        #region Name

        private string _sName;
        public string Name
        {
            get { return _sName; }
            set { _sName = value; }
        }
        
        #endregion

        #region VendorType
        private EnumVendorType _eVendorType;
        public EnumVendorType VendorType
        {
            get { return _eVendorType; }
            set { _eVendorType = value; }

        }
        #endregion

        #region VendorTypeString

        private string vendorTypeString;
        public string VendorTypeString
        {
            get { return vendorTypeString != string.Empty ? vendorTypeString : Enum.GetName(typeof(EnumVendorType), VendorType); }
            set { vendorTypeString = value; }

        }
        #endregion

        #region Balance
        private double _dBalance;
        public double Balance
        {
            get { return _dBalance; }
            set { _dBalance = value; }

        }
        #endregion

        #region Mobile
        private string _sMobile;
        public string Mobile
        {
            get { return _sMobile; }
            set { _sMobile = value; }

        }
        #endregion

        #region Telephone
        private string _sTelephone;
        public string Telephone
        {
            get { return _sTelephone; }
            set { _sTelephone = value; }

        }
        #endregion

        #region EmailAddress
        private string _sEmailAddress;
        public string EmailAddress
        {
            get { return _sEmailAddress; }
            set { _sEmailAddress = value; }

        }
        #endregion

        #region ContactPerson
        private string _sContactPerson;
        public string ContactPerson
        {
            get { return _sContactPerson; }
            set { _sContactPerson = value; }

        }
        #endregion

        #region Address

        private string _sAddress;
        public string Address
        {
            get { return _sAddress; }
            set { _sAddress = value; }
        }
        #endregion

        public int PayrollTypeID { get; set; }
        #endregion


    }
    
    #endregion

    #region IVendor Service
    public interface IVendorService
    {
        Vendor Get(int id);
        List<Vendor> Get();
        List<Vendor> Get(EnumVendorType vendorType);
        int Save(Vendor oVendor);
        void Delete(int id);
        List<Vendor> Get(EnumStatus status, int payrollTypeID);
        List<Vendor> Get(string subStr);
        string GetNextCode();
    }
    #endregion

}