//using System;
//using System.Data;
//using System.Linq;
//using Ease.Core;
//using Ease.Core.Model;
//using Ease.Core.DataAccess;
//using System.Collections.Generic;
//
//using Ease.Core.Caching;

//namespace Payroll.Service
//{
//    #region TaxParameterSlab Service
//    
//    public class TaxParameterSlabService : ServiceTemplate, ITaxParameterSlabService
//    {
//        #region Private functions and declaration
//        Cache _cache = new Cache(typeof(TaxParameterSlab));

//        #endregion
//        public TaxParameterSlabService() { }

//        private void MapObject(TaxParameterSlab oTaxParameterSlab, DataReader oReader)
//        {
//            base.SetObjectID(oTaxParameterSlab, oReader.GetID("TaxParameterSlabID"));
//            oTaxParameterSlab.TaxparamID = oReader.GetID("taxParamID");
//            oTaxParameterSlab.IncomeAmount = oReader.GetDouble("incomeAmount").Value;
//            oTaxParameterSlab.TaxPercent = oReader.GetDouble("taxPercent").Value;
//            oTaxParameterSlab.SequenceNo = oReader.GetInt32("sequenceNo").Value;
//            oTaxParameterSlab.ParamType = oReader.GetInt32("type").Value;
//            this.SetObjectState(oTaxParameterSlab, Ease.Core.ObjectState.Saved);
//        }
//        protected override T CreateObject<T>(DataReader oReader)
//        {
//            TaxParameterSlab oTaxParameterSlab = new TaxParameterSlab();
//            MapObject(oTaxParameterSlab, oReader);
//            return oTaxParameterSlab as T;
//        }
//        protected TaxParameterSlab CreateObject(DataReader oReader)
//        {
//            TaxParameterSlab oTaxParameterSlab = new TaxParameterSlab();
//            MapObject(oTaxParameterSlab, oReader);
//            return oTaxParameterSlab;
//        }
//        #region Service implementation
//        public TaxParameterSlab Get(int id)
//        {
//            TaxParameterSlab oTaxParameterSlab = new TaxParameterSlab();
//            #region Cache Header
//            oTaxParameterSlab = _cache["Get", id] as TaxParameterSlab;
//            if (oTaxParameterSlab != null)
//                return oTaxParameterSlab;
//            #endregion
//            TransactionContext tc = null;
//            try
//            {
//                tc = TransactionContext.Begin();
//                DataReader oreader = new DataReader(TaxParameterSlabDA.Get(tc, id));
//                if (oreader.Read())
//                {
//                    oTaxParameterSlab = this.CreateObject<TaxParameterSlab>(oreader);
//                }
//                oreader.Close();
//                tc.End();
//            }
//            catch (Exception e)
//            {
//                #region Handle Exception
//                if (tc != null)
//                    tc.HandleError();
//                ExceptionLog.Write(e);
//                throw new ServiceException(e.Message, e);
//                #endregion
//            }
//            #region Cache Footer
//            _cache.Add(oTaxParameterSlab, "Get", id);
//            #endregion
//            return oTaxParameterSlab;
//        }

//        public List<TaxParameterSlab> Get()
//        {
//            #region Cache Header

//            List<TaxParameterSlab> taxParameterSlabs = _cache["Get"] as List<TaxParameterSlab>;
//            if (taxParameterSlabs != null)
//                return taxParameterSlabs;

//            #endregion

//            TransactionContext tc = null;
//            try
//            {
//                tc = TransactionContext.Begin();

//                DataReader dr = new DataReader(TaxParameterSlabDA.Get(tc));
//                taxParameterSlabs = this.CreateObjects<TaxParameterSlab>(dr);
//                dr.Close();

//                tc.End();
//            }
//            catch (Exception e)
//            {
//                #region Handle Exception

//                if (tc != null)
//                    tc.HandleError();
//                ExceptionLog.Write(e);

//                throw new ServiceException(e.Message, e);

//                #endregion
//            }

//            #region Cache Footer

//            _cache.Add(taxParameterSlabs, "Get");

//            #endregion

//            return taxParameterSlabs;
//        }

//        public ID Insert(TaxParameterSlab oTaxParameterSlab)
//        {
//            TransactionContext tc = null;
//            try
//            {
//                tc = TransactionContext.Begin(true);
//                if (oTaxParameterSlab.IsNew)
//                {
//                    int id = tc.GenerateID("TaxParameterSlab", "TaxParameterSlabID");
//                    base.SetObjectID(oTaxParameterSlab, ID.FromInteger(id));
//                    TaxParameterSlabDA.Insert(tc, oTaxParameterSlab);
//                }
//                else
//                {
//                    TaxParameterSlabDA.Update(tc, oTaxParameterSlab);
//                }
//                tc.End();
//                return oTaxParameterSlab.ID;
//            }
//            catch (Exception e)
//            {
//                #region Handle Exception
//                if (tc != null)
//                    tc.HandleError();
//                ExceptionLog.Write(e);
//                throw new ServiceException(e.Message, e);
//                #endregion
//            }
//        }

//        public void Delete(int id)
//        {
//            TransactionContext tc = null;
//            try
//            {
//                tc = TransactionContext.Begin(true);
//                TaxParameterSlabDA.Delete(tc, id);
//                tc.End();
//            }
//            catch (Exception e)
//            {
//                #region Handle Exception
//                if (tc != null)
//                    tc.HandleError();
//                ExceptionLog.Write(e);
//                throw new ServiceException(e.Message, e);
//                #endregion
//            }
//        }
//        #endregion
//    }
//    #endregion
//}