/// 
///INTERFACE CLASS FOR TABLE t_wmsImportSeeds
///By wm  
///on 07/21/2019
/// 
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using DeiNiu.wms.win;
using DeiNiu.Utils;
namespace DeiNiu.wms.Data.Model
{
    [Serializable]
    public class WmsImportSeeds : WmsImportSeeds_base
    {
        public WmsImportSeeds()
        {
        }
        public WmsImportSeeds(int id): base(id)
        {
        }
        public WmsImportSeeds(DataRow dr): base(dr)
        {
        }
      protected override void getImp()
        {
            model_imp = new WmsImportSeeds_Imp();  
        }
        //begin cust db operation, query, excute sql etc.
        public DataSet QueryBySeeds(string seedsNo)
        {
            cmdParameters[0] = seedsNo;
            return  CustQuery(100);
        }
        internal int loadNewSeeds(int deskId, string seedsNo)
        {
            cmdParameters[0] = deskId;
            cmdParameters[1] = seedsNo;
            
            return CustOper(200);
        }
        internal List startNewSeed(int deskId, string seedsNo, string barcode, int operater, int color, bool isValid)
        {
            cmdParameters[0] = deskId;
            cmdParameters[1] = seedsNo;
            cmdParameters[2] = barcode;
            cmdParameters[3] = operater;
            cmdParameters[4] = color;
            
            List r = new List();
            DataTable dt;
            if (isValid)
            {
                dt = getSeedItemsDt4Valid(deskId, seedsNo, barcode, operater);
                foreach (DataRow dr in dt.Rows)
                {
                    WmsImportSeeds_tmp ws = new WmsImportSeeds_tmp(dr); 
                   
                    r.Add(getElabel(ws));
                }
                return r;
            }
            dt = getSeedItemsDt(deskId, seedsNo, barcode);
           
            foreach (DataRow dr in dt.Rows)
            {
                WmsImportSeeds_tmp ws = new WmsImportSeeds_tmp(dr);
               
                
                ws.operater = operater;
                ws.deskId = deskId;
                ws.color = color;
                if (ws._elabId == 0)
                {
                    WmsDeskCustomer wdc = new WmsDeskCustomer();
                    wdc.getByCustNameDesk(deskId, ws.custName);
                    ws.port = wdc.portNo;
                    ws._elabId = wdc.custid;
                }
                ws.state =(int) enumSeedsState.已亮灯;
                ws.Update();
                r.Add(getElabel(ws));
            }
            return r;
             
        }
        private DataTable getSeedItemsDt4Valid(int deskId, string seedsNo, string barcode, int operater)
        {
            cmdParameters[0] = deskId;
            cmdParameters[1] = seedsNo;
            cmdParameters[2] = barcode;
            cmdParameters[3] = operater;
            return CustQuery(302).Tables[0];
        }
 
        /*public List getSeedItems(int deskId, string seedsNo, string barcode)
        {
            DataTable dt = getSeedItemsDt(deskId, seedsNo, barcode);
            List r = new List();
            foreach (DataRow dr in dt.Rows)
            {
                WmsImportSeeds ws = new WmsImportSeeds(dr);
                r.Add(getSeedItemsWcfObject(ws));
            }
            return r; 
        }
          SeedsItem getSeedItemsWcfObject(WmsImportSeeds dbObj)
        {
            SeedsItem wcfObj = new SeedsItem();
            wcfObj.deskId = dbObj.deskId;
            wcfObj.seedsNo = dbObj.seedsNo; 
            wcfObj.barcode = dbObj.barcode;
            wcfObj.elabId = dbObj.elabId;
            wcfObj.port = dbObj.port;
            wcfObj.eleAdress = dbObj.elabAddress;
            wcfObj.itemName = dbObj.itemName;
            wcfObj.count = Convert.ToInt16(dbObj.count);
            wcfObj.unit = dbObj.unit;
            return wcfObj;
        }
         */
        public DataTable getSeedItemsDt(int deskId, string seedsNo, string barcode)
        { 
            cmdParameters[0] = deskId;
            cmdParameters[1] = seedsNo;
            cmdParameters[2] = barcode; 
            return CustQuery(300).Tables[0];
             
        }
       
        public List getSeedLabels(int deskId, string seedsNo, string barcode)
        {
            DataTable dt = getSeedItemsDt(deskId, seedsNo, barcode);
            List r = new List();
            foreach (DataRow dr in dt.Rows)
            {
                WmsImportSeeds_tmp ws = new WmsImportSeeds_tmp(dr);
                r.Add(getElabel(ws));
            }
            return r;
             
        }
        ELabel getElabel(WmsImportSeeds_tmp dbObj)
        {
            ELabel el = new ELabel();
            el.count = Convert.ToInt16(dbObj.countOut);
            el.address = dbObj.elabAddress;
            el.port = dbObj.port;
            el.color = dbObj.color;
            el.labelId = dbObj.elabId;
            el.color = el.color > 0 ? el.color : 1;
            el.seedsId = dbObj.ID;
            return el;
        }
        internal int pickSeedItem(int seedsId, Utils.enumSeedsState enumSeedsState)
        {
            cmdParameters[0] = seedsId;
            cmdParameters[1] = (int)enumSeedsState; 
            return CustOper(500) ;
        }
        internal int deleteOrder(string seedsNo)
        {
            cmdParameters[0] = seedsNo;
            DataTable dt = CustQuery(601).Tables[0];
            int cnt = Convert.ToInt16(dt.Rows[0][0].ToString());
            if (cnt > 0)
            {
                return -1;
            }
            return CustOper(600);
        }
        internal DataTable getSumCount( string seedsNo,string barcode)
        {
            cmdParameters[0] = seedsNo;
            cmdParameters[1] = barcode;
            return CustQuery(700).Tables[0];
        }
    }
}