package com.bonait.bnframework.common.constant;

import android.content.Intent;

import com.bonait.bnframework.R;
import com.bonait.bnframework.common.db.QueryDB;
import com.bonait.bnframework.common.db.mode.BPA_ALERTLOG;
import com.bonait.bnframework.common.db.mode.BPA_GOODS;
import com.bonait.bnframework.common.db.mode.BPA_LOG;
import com.bonait.bnframework.common.db.mode.BPA_MATERIAL;
import com.bonait.bnframework.common.db.mode.BPA_SILOS;
import com.bonait.bnframework.common.db.mode.BPA_SUBORDER;
import com.bonait.bnframework.common.db.res.MakeStatus;
import com.bonait.bnframework.common.db.res.ResGoodsMake;
import com.bonait.bnframework.common.db.res.ResGoodsRecipe;
import com.bonait.bnframework.common.db.res.StatusMode;
import com.bonait.bnframework.common.db.res.lcMode;
import com.bonait.bnframework.common.helper.I.MyClickListener;
import com.bonait.bnframework.common.helper.mode.OrderA;
import com.bonait.bnframework.common.helper.mode.ResultA;
import com.bonait.bnframework.modules.home.adapter.lc_adapter;
import com.bonait.bnframework.modules.home.adapter.sp_adapter;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * 单例模式
 * 数据中心
 */
public class DataBus {
    //region 单例模式
    private static DataBus  mInstance; //实例变量设置私有，防止直接通过类名访问

    private DataBus() {
        //默认构造函数私有，防止类外直接new创建对象
    }

    public static synchronized DataBus getInstance() { //静态同步方法作为唯一的实例对象获取方式
        if (mInstance==null) {
            mInstance = new DataBus();
        }
        return mInstance;
    }
    //endregion

    //region 连接状态
    /**
     * Plc是否连接
     */
    public boolean PlcIsConnect=false;
    //endregion

    //region 跳转页面

    //endregion

    //region 数据中心
    /**
     * 料仓数据Model
     */
    public List<lcMode> lcModes=new ArrayList<>();
    public lc_adapter lcadapter=null;
    /**
     * 获取料仓数据
     */
    public void GetLc()
    {
        try {
            lcModes=new ArrayList<>();
            //获取料仓数据
            ArrayList<BPA_SILOS> bpa_silos = QueryDB.GetSilosALL();
            //加载materials数据
            if (bpa_silos.size() > 0) {
                for (BPA_SILOS silo : bpa_silos) {
                    List<BPA_MATERIAL> m = QueryDB.GetMaterialBySilosID(silo.id);
                    if (m.size() > 0) {
                        lcModes.add(new lcMode(silo.id, silo.num, m.get(0).name, silo.silosmargin, silo.siloszl, m.get(0).id,m.get(0).type, silo.warningValue, silo.thrsoleValue));
                    } else {
                        lcModes.add(new lcMode(silo.id, silo.num, "未设置", silo.silosmargin, silo.siloszl, "",0, silo.warningValue, silo.thrsoleValue));
                    }
                }
            }
            if (lcadapter!=null)
            {
                lcadapter.refresh();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public ArrayList<lcMode> ResGetLc()
    {
        ArrayList<lcMode> lc=new ArrayList<>();
        try {
            //获取料仓数据
            ArrayList<BPA_SILOS> bpa_silos = QueryDB.GetSilosALL();
            //加载materials数据
            if (bpa_silos.size() > 0) {
                for (BPA_SILOS silo : bpa_silos) {
                    List<BPA_MATERIAL> m = QueryDB.GetMaterialBySilosID(silo.id);
                    if (m.size() > 0) {
                        lc.add(new lcMode(silo.id, silo.num, m.get(0).name, silo.silosmargin, silo.siloszl, m.get(0).id,m.get(0).type, silo.warningValue, silo.thrsoleValue));
                    } else {
                        lc.add(new lcMode(silo.id, silo.num, "未设置", silo.silosmargin, silo.siloszl, "",0, silo.warningValue, silo.thrsoleValue));
                    }
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return lc;
    }

    /**
     * 加满物料
     */
    public void TopUp(int index)
    {
        if(index>=0 && lcModes.size()>=0)
        {
            int zl= lcModes.get(index).siloszl;
            lcModes.get(index).silosmargin=zl<=0?10000:zl;
            QueryDB.UpdateYL(lcModes.get(index).id,lcModes.get(index).silosmargin);
            if (lcadapter!=null)
            {
                lcadapter.refresh();
            }
        }
    }

    /**
     * 商品数据
     */
    public List<BPA_GOODS> Goods=new ArrayList<>();
    public sp_adapter spadapter=null;
    /**
     * 选中菜品
     */
    public BPA_GOODS SelectGood=null;
    /**
     * 选择菜品事件
     */
    public MyClickListener mListener=null;
    /**
     * 获取商品数据
     */
    public void GetGoods(String name)
    {
        try {
            Goods.clear();
            ArrayList<BPA_GOODS> good=new ArrayList<>();
            if (name.isEmpty())
            {
                good=QueryDB.GetGoodsALL();
            }else
            {
                good= QueryDB.GetGoodsLike(name);
            }
            for (BPA_GOODS k : good) {
                Goods.add((BPA_GOODS) k);
            }

            if (spadapter!=null)
            {
                DataBus.getInstance().spadapter.refresh();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }











































    /**
     * 商品扫码等待制作列表
     */
    public List<ResGoodsMake> GoodsSMMake = new ArrayList<ResGoodsMake>();
    /**
     * 扫码商品订单制作
     */
    //public order_adapter orderadapter;
    /**
     * 商品制作列表
     */
    public List<ResGoodsMake> GoodsMake = new ArrayList<ResGoodsMake>();
    /**
     * 商品制作完成列表
     */
    public List<ResGoodsMake> GoodsMakeOver = new ArrayList<ResGoodsMake>();
    /**
     * 商品制作
     */
    //public makegood_adapter goodmakeadapter;

    /**
     * 获取是否可以下单
     */
    public boolean GetIsPlaceAnOrder()
    {
        try
        {
            if(GoodsMake.size()<=0)
            {
                return true;
            }else
            {
                boolean issucess=true;
                for (ResGoodsMake item:GoodsMake)
                {
                    if(item.makeStatus!= MakeStatus.制作完成)
                    {
                        issucess=false;
                    }
                }
                return issucess;
            }

        }catch(Exception e){
            return true;
        }
    }


    /**
     * 员工操作日志
     */
    public List<BPA_LOG> bpa_logs = new ArrayList<BPA_LOG>();
    /**
     * 订单操作日志
     */
    public List<BPA_ALERTLOG> bpa_alertlogs = new ArrayList<BPA_ALERTLOG>();
    /**
     * 设备状态列表
     */
    public List<StatusMode> statusModes = new ArrayList<StatusMode>();
    /**
     * 扫码订单
     */
    public OrderA OrderSM = new OrderA();
    //endregion
}
