/// 
///LOGIC CLASS FOR TABLE t_wmsGoods
///By wm with codesmith. 
///on 05/04/2017
/// 
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using DeiNiu.wms.Data.Model;
using System.Data;
using System.Transactions;
namespace DeiNiu.wms.Logical
{
    [Serializable]
    public class lWmsGoods  :lbase
    {
        WmsGoods _obj;
        public lWmsGoods()
        {
             initialize();
        }
        public lWmsGoods(int operId):base(operId)
        {
            initialize();
        }
        public  WmsGoods getWmsGoods
        {
            get
            {
                return _obj;
            }
        }
  
		/// 
		/// get all data
		/// 
        public DataSet getAllData()
        {
           return _obj.Query();
        }
        /// 
        /// get all data
        /// 
        public DataSet getAllActiveData()
        {
            return _obj.QueryActived();
        }
		/// 
		/// get a record by id
		/// 
        public void initialize(int id)
		{
            _obj = id != 0 ? new WmsGoods(id) : new WmsGoods();
		}
        /// 
		/// get a record by id 0
		/// 
        public void initialize()
        { 
            initialize(0);
        }
         ///  
        /// get a record by id
        /// 
        public void initialize(DataRow dr)
        {
            _obj =   new WmsGoods(dr);
        }
 
        //begin cust db operation, query, excute sql etc.
        
     
         /// 
        ///  query with like, return talbe and record cnt.
        /// 
        public DataSet Query(string querystr, int rownumStart, int rownumEnd)
        {
            if (rownumEnd > rownumStart && rownumStart > 0)
            {
                _obj.rownumStart = rownumStart;
                _obj.rownumEnd = rownumEnd;
            }
            
           
            //if (string.IsNullOrEmpty(querystr))
            //{
            //    return _obj.Query();
            //}
            string condition = "";
            string[] parameters = querystr.Split(";".ToCharArray());
            foreach (string value in parameters)
            {
                if (string.IsNullOrEmpty(value))
                {
                    continue;
                }
                string[] par = value.Split("#".ToCharArray());
                condition += par.Length == 0 ? "" : " and ";
                foreach (string p in par)
                {
                    condition += p;
                }
            }
            return _obj.Query(condition);
        }  
        /// 
        /// update in a transaction scrop
        /// 
        public void update(List goods)
        {
            if (valid())
            { 
                using (TransactionScope scope = new TransactionScope())
                {
                    foreach (WmsGoods good in goods)
                    {
                        good.Update();
                       
                    }
                    _obj = goods[goods.Count - 1];
                    scope.Complete();
                }
            }
        }
        private bool valid()
        {
            return true;
        }
  
    }
    
    
}