<?php
/**
 * Created by 2020/4/23.
 * User: Joneq
 * Info: 2020/4/23
 * Time: 上午10:50
 */

namespace App\Http\Model;
use Illuminate\Database\Eloquent\Model;


class PickTaskDetailModel extends Model
{
    protected $connection = 'mysql';
    protected $table      = 'pick_task_detail';
    protected $primaryKey = 'pick_task_detail_id';
    public $timestamps    = false;


    static public function getWhereObj($data)
    {
        $obj = self::where('store_id','=',app('request')->store_id)->where('is_del',0);

        foreach ($data as $key=>$value){
            if (empty($value))continue;
            switch ($key){
                case 'create_time':
                    $obj = $obj->where('add_time','>=',strtotime($value));break;
                case 'end_time':
                    $obj = $obj->where('add_time','<=',strtotime($value));break;
                case 'out_store_id':
                    $obj = $obj->whereIn('out_store_id',is_array($data['out_store_id'])?$data['out_store_id']:[$data['out_store_id']]);break;
                case 'out_store_detail_id':
                    $obj = $obj->whereIn('out_store_id',is_array($data['out_store_detail_id'])?$data['out_store_detail_id']:[$data['out_store_detail_id']]);break;
                case 'pick_task_id':
                case 'pack_status':
                    $obj = $obj->where($key,$value);break;
                case 'pallet_box_id':
                    $orWhere[] = ['box_id', '=', $value, 'OR'];
                    $orWhere[] = ['pallet_id', '=', $value, 'OR'];
                    $outStoreIdArr = OutStoreDetailModel::getWhereObj([])->where($orWhere)->pluck('out_store_detail_id');
                    $obj = $obj->whereIn('out_store_detail_id',$outStoreIdArr);break;
                case 'pallet_id':
                    $outStoreIdArr = OutStoreDetailModel::getWhereObj([])->where('pallet_id',$value)->pluck('out_store_detail_id')->toArray();
                    $obj = $obj->whereIn('out_store_detail_id',$outStoreIdArr);break;
                case 'box_id':
                    $outStoreIdArr = OutStoreDetailModel::getWhereObj([])->where('box',$value)->pluck('out_store_detail_id')->toArray();
                    $obj = $obj->whereIn('out_store_detail_id',$outStoreIdArr);break;
                case 'goods_name_box_id':
                    $orWhere[] = ['box_id', '=', $value, 'OR'];
                    $orWhere[] = ['goods_name', '=', $value, 'OR'];
                    $outStoreIdArr = OutStoreDetailModel::getWhereObj([])->where($orWhere)->pluck('out_store_detail_id');
                    $obj = $obj->whereIn('out_store_detail_id',$outStoreIdArr);break;
                default:
                    continue;
            }
        }
        return $obj;
    }
}