<?php

namespace App\Model\Pcb;

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

class PcbPurchaseModel extends Model
{
    protected $connection='pcb';
    protected $table='purchase';
    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"];
		$input = Request::only($arr);
        $input=TrimX($input,true,$arr);

//    	//查询数据\
        $list = $this->where(function ($query) use ($input) {
            foreach ($input as $k => $v){
                $v = trim($v);
                switch ($k){
                    case "p":
                    case "limit":
                    case "_url":
                        continue;
                        break;
                    case "start_time":
                        $query->where('create_time', '>=',  strtotime($v));
                        break;
                    case "end_time":
                        $query->where('create_time', '<=',strtotime($v));
                        break;
                    default:
                        $query->whereIn($k, explode(',',trim($v,',')));
                        break;
                }
            }
        })->orderBy('purchase_id','desc');
        //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 [];
        }

        $con = DB::connection('pcb');
        foreach ($data as $k=>&$v){
            //查询采购
            if ($v['purchase_amount'] > 0){
                $v['tiaojia'] = $v['purchase_amount'] != $v['order_amount'] ? "是" :"否"; //是否调价
            }else{
                $v['tiaojia'] = $v['purchase_amount'] =  "";
            }

            $v['order_pay_type'] = PcbOrderMap::$order_pay_type[$v['order_pay_type']];
            $v['order_type'] = PcbOrderMap::$order_type[$v['order_type']];
            $v['status_name'] = @PcbPurchaseMap::$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 : "";
            //供应商审核结果
            $orderAuditReason2 = $con->table('order_audit_reason')->where(['order_id' => $v['order_id'],'type'=>2])->orderBy("id","desc")->first();
            $v['audit_reason'] = $orderAuditReason2 ? $orderAuditReason2->remark : "";
        }
        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,[
                'purchase_id'=>$v['purchase_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);
    }



}