<?php

namespace App\Model\Pcb;

use App\Map\PcbOrderMap;
use App\Model\UserMainModel;
use Illuminate\Database\Eloquent\Model;
use Request;
use DB;

class PcbOrderModel extends Model
{
    protected $connection='pcb';
    protected $table='order';
    protected $primaryKey='id';
    public $timestamps = false;

    //列表
    public function getList($type =1)
    {
		$arr = ['p', 'limit','self','start_time','end_time','status',"user_account","order_sn","purchase_sn","order_type","adtag","ptag","test_order"];
		$input = Request::only($arr);
        $input=TrimX($input,true,$arr);

    	//查询数据\
        $list = $this->where(function ($query) use ($input) {
            $PcbPurchaseModel  = new PcbPurchaseModel();
            foreach ($input as $k => $v){
                $v = trim($v);
                switch ($k){
                    case "p":
                    case "limit":
                    case "_url":
                    case "test_order":
                        continue;
                        break;
                    case "start_time":
                        $query->where('create_time', '>=',  strtotime($v));
                        break;
                    case "end_time":
                        $query->where('create_time', '<=',strtotime($v));
                        break;
                    case "end_time":
                        $query->where('create_time', '<=',strtotime($v));
                        break;
                    case "purchase_sn":
                        $items = $PcbPurchaseModel->select("order_id")->where("purchase_sn","like","%".$v."%")->get();
                        if ($items->count()){
                            $orderIds = arrayToCommaStr($items->toArray(),'order_id',1);
                            $query->whereIn("order_id",$orderIds);
                        }else{
                            $query->where("order_id",0);
                        }
                        break;
                    default:
                        $query->whereIn($k, explode(',',trim($v,',')));
                        break;
                }
            }
        })->orderBy('order_id','desc');

        if (empty($input['test_order'])){ //排除测试账号
            $testMobile = (new UserMainModel())->testMobile();
            $list->whereNotIn('user_id', $testMobile);
        }
        //getSql();
        if ($type == 1){
            $input['limit'] = 10;
            $input['p'] = isset($input['p']) ? $input['p'] : 1;
            $list =  $list->paginate($input['limit'], ['*'], 'p', $input['p'])->toArray();
            if (!$list) return [20001, '没有数据'];
            $data = $this->clearData($list['data']);
            return [0, '成功', $data, $list['total']];
        }else{
            return $this->clearData($list->get()->toArray());
        }
    }
//清洗列表数据
    private function clearData($data){
        if (!is_array($data) || count($data) == 0 || $data == ""){
            return [];
        }
        $PcbPurchaseModel = new PcbPurchaseModel();
        $PcbPublicModel = new PcbPublicModel();
        $con = DB::connection("pcb");
        foreach ($data as $k=>&$v){
            //查询采购
            $purchase = $PcbPurchaseModel->where("order_id",$v['order_id'])->first();
            $v['tiaojia']=$v['purchase_amount'] = $v['purchase_sn'] = "";
            if ($purchase){
                if ( $purchase['purchase_amount'] > 0  &&  $purchase['purchase_amount'] != $v['order_amount']){
                    $v['tiaojia'] = "是";
                }elseif($purchase['purchase_amount'] == 0){
                    $v['tiaojia'] = "";
                }else{
                    $v['tiaojia'] = "否";
                }
                $v['purchase_amount'] = $purchase['purchase_amount'] > 0 ? $purchase['purchase_amount'] : "";
                $v['purchase_sn'] = $purchase['purchase_sn'];
            }
            //查询支付
            $v['order_pay_type'] = $PcbPublicModel->getPay($v['order_id']);
            $v['order_type'] = PcbOrderMap::$order_type[$v['order_type']];
            $v['status_name'] = PcbOrderMap::$status[$v['status']];
            $v['create_time'] = date('Y-m-d H:i:s',$v['create_time']);
            $v['pay_time'] = $v['pay_time'] > 0 ? date('Y-m-d H:i:s',$v['pay_time']) : "";
            $shipping = $con->table('shipping')->where(['relevance_id' => $v['order_id'],'shipping_type'=>1])->first();
            $v['shipping_no'] = $shipping ? $shipping->shipping_no : "";
            $v['shipping_name'] = $shipping ? $shipping->shipping_name : "";
            $userCompany = DB::connection('order')->table("lie_user_company")->where("user_id",$v['user_id'])->first();
            $v['company_name'] = $userCompany ? $userCompany->com_name : "" ;
        }
        return $data;
    }
    //导出
    public function export()
    {
        $data = $this->getList(2);
        $column = array('ID','会员账号','交易订单编号','采购订单编号','是否调价','订单金额','调整后订单金额','订单状态','订单类型','支付方式','下单时间'); // 表头
        $fileName = 'PCB交易订单列表导出'.date('YmdHis', time()).'.csv';
        $temp = [];
        foreach ($data as $k=>$v){
            array_push($temp,[
                'order_id'=>$v['order_id'],
                'user_account' =>$v['user_account']."\n",
                'order_sn' =>$v['order_sn']."\n",
                'purchase_sn' =>@$v['purchase_sn']."\n",
                'tiaojia' =>$v['tiaojia'],
                'order_amount' =>$v['order_amount'],
                'purchase_amount' =>$v['purchase_amount'],
                'status_name' =>$v['status_name'],
                'order_type' =>$v['order_type'],
                'order_pay_type' =>$v['order_pay_type'],
                'create_time' =>$v['create_time'],
            ]);
        }
        export_csv($temp, $column, $fileName);
    }



}