<?php

namespace app\index\model;

use app\index\model\BoxModel;
use think\Exception;
use think\Model;

class OrderModel extends Model{

    // 确定链接表名
    protected $name = 'order';

    public function getOne($order_sn){
        return $this->where('order_sn' , $order_sn)->find();
    }

    public function Box()
    {
        return $this->hasOne('BoxModel', 'order_sn', 'order_sn');
    }

    public function CreateOrder($params){
        try {
            $result = $this->save($params);
            if(false === $result){
                // 验证失败 输出错误信息
                return msg(-1, '', $this->getError());
            }else{
                $BoxModel = new BoxModel();
                $ret = $BoxModel->save(['order_sn' => $params['order_sn'] , 'fetch_code' => $params['code'] , 'box_status' => 1] ,
                    ['cabinet_number' => $params['cabinet_number'] , 'box_number' => $params['box_number']]);
                if($ret === false){
                    return msg(-1, '', $this->getError());
                }else{
                    return msg(1, '', 'success');
                }
            }
        }catch (Exception $e){
            return msg(-2, '', $e->getMessage());
        }
    }

    /**
     * 根据既定条件修改信息
     * @where $param
     * @update $param
     */
    public function editData($where,$update)
    {
        try{
            $result = $this->save($update, $where);
            if(false === $result){
                // 验证失败 输出错误信息
                return msg(-1, '', $this->getError());
            }else{
                return msg(1, '', 'success');
            }
        }catch(\Exception $e){
            return msg(-2, '', $e->getMessage());
        }
    }
    /**
     * 检查取件码
    */
    public function check_fcode($code)
    {
        $where['sc_order.code'] = $code;
        $where['BoxModel.box_status'] = 1;
        try{
            $order = $this->Box()->hasWhere($where)->find();
            if(empty($order)){
                // 验证失败 输出错误信息
                return msg(-1, '', $this->getError());
            }else{
                $data['code'] = $code;
                $data['existed'] = true;
                $data['trunk'] = $order['box_number'];
                $data['cabinet'] = $order['cabinet_number'];
                return msg(1, $data, 'success');
            }
        }catch(\Exception $e){
            return msg(-2, '', $e->getMessage());
        }
    }

    /**
     * 根据搜索条件获取箱子列表信息
     * @param $offset
     * @param $limit
     */
    public function getOrdersByWhere( $offset, $limit)
    {
        return $this->limit($offset, $limit)->order('id desc')->select();
    }

    /**
     * 根据搜索条件获取所有的箱子数量
     */
    public function getAllCounts()
    {
        return $this->count();
    }
}