<?php

namespace App\Http\Controllers;

use App\Http\Page;
use App\Map\PcbOrderInvoiceMap;
use App\Map\PcbOrderMap;
use App\Map\PcbOrderShippingMap;
use App\Map\PcbPurchaseMap;
use App\Model\PaymentDaysModel;
use App\Model\Pcb\PcbOrderModel;
use App\Model\Pcb\PcbPublicModel;
use App\Model\Pcb\PcbPurchaseModel;
use Illuminate\Http\Request;

use App\Http\Requests;
use App\Http\Controllers\Controller;
use DB;

class WebController extends Controller
{
    // 页面用户、菜单信息
    public function getPageInfo(Request $request)
    {
        $uri = '/' . $request->path();

        $username = $request->user->email;
        $useremail= $request->user->email;

        // 菜单
        $menuconfig = DB::table('config')->where('config_title', '订单系统')->first();
        $menus = [];
        if ($menuconfig && !($menus = json_decode($menuconfig->config_data)))
            $menus = [];

        $perm = new PermController();

        // 用户角色
        $role = $perm->getUserRole($request);

        // 获取权限菜单
        if ($role != 1) {
            $menus = $perm->getPermMenu($menus, $request->user->userId);   
        }

        $data = [
            'header'    => $request->user->header,
            'uri'       => $uri,
            'username'  => $username,
            'useremail' => $useremail,
            'menus'     => $menus,
        ];

        return $data;
    }

    public function info(Request $request,$id=''){
        $data=$this->getPageInfo($request);
        $data['id']=$id;
        return $this->$id($request, $data,$id );
    }

    private function PaymentDaysList($request,$data,$id){
        $data['title']='账期申请列表';
        $data['Status']=[1=>'待审核',2=>'审核通过',3=>'审核不通过'];
        return view('PaymentDays',$data);
    }

    private function AuthPaymentDays($request,$data,$id){
        $data['title']='审核账期申请';
        $data['Status']=[1=>'待审核',2=>'审核通过',3=>'审核不通过'];
        $data['paths'] = [["title" => '账期管理', "href" => '#'], ["title" => '申请列表', "href" => '/web/PaymentDaysList'], ["title" => '审核账期申请', "href" => '#']];
        $Model=new PaymentDaysModel();
        $data['info']=$Model->AuthPaymentDays();
        return view('PaymentDays',$data);
    }
    //pcb 订单列表
    private function PcbOrderList($request,$data,$id){
        $data['title']='PCB交易列表';
        $data['order_type'] = PcbOrderMap::$order_type;
        $data['status'] = PcbOrderMap::$status;
        $data['shipping'] = objectToArray(DB::connection("order")->table("lie_shipping")->get());
        //分页
        $response = (new PcbOrderModel())->getList();
        $page = new Page($response[3], 10);
        $page->setConfig('theme', '%FIRST% %UP_PAGE% %LINK_PAGE% %DOWN_PAGE% %END% %HEADER%');
        $show = $page->show();
        $data['list'] = $response[2];
        $data['page'] = $show;

        return view("Pcb",$data);
    }
    //pcb详情
    private function PcbOrderDetail($request,$data,$id){
        $data['title']='PCB订单详情';
        $data['paths'] = [["title" => 'PCB管理', "href" => '#'], ["title" => 'PCB订单列表', "href" => '/web/PcbOrderList'], ["title" => 'PCB订单详情', "href" => '#']];
        $order_id = $request->input("order_id");
        $con = DB::connection('pcb');
        //订单基本信息
        $orderBase = $con->table('order')->where(['order_id' => $order_id])->first();
        if (!$orderBase){
            return [0,'不存在此订单'];
        }
        //采购信息
        $purchase = $con->table('purchase')->where(['order_id' => $order_id])->first();
        //订单收货人信息
        $orderAddress = $con->table('order_address')->where(['order_id' => $order_id])->first();
        //订单费用明细
        $orderAuditDetail = $con->table('order_audit_detail')->where(['order_id' => $order_id])->first();
        //采购审核意见备注
        $orderAuditReason2 = $con->table('order_audit_reason')->where(['order_id' => $order_id,'type'=>2,'status'=>1])->orderBy("id","desc")->first();
        $orderAuditReason1 = $con->table('order_audit_reason')->where(['order_id' => $order_id,'type'=>1,'status'=>1])->orderBy("id","desc")->first();

        //订单详细信息
        $orderInfo = $con->table('order_info')->where(['order_id' => $order_id])->first();
        //订单发票信息
        $orderInvoice = $con->table('order_invoice')->where(['order_id' => $order_id])->first();
        //物流信息
        $shipping = $con->table('shipping')->where(['relevance_id' => $order_id,'shipping_type'=>1])->first();
        //查询操作日志
        $actionLog = $con->table("action_log")->where(["type"=>1,'oid'=>$order_id])->orderBy("id","desc")->get();

        $orderBase =  objectToArray($orderBase);
        $orderBase['tiaojia'] = "";
        //拼接采购信息
        if ($purchase){
            $purchase= objectToArray($purchase);
            if($purchase['purchase_amount'] == 0){
                $orderBase['tiaojia'] = "";
            }else{
                if ( $purchase['purchase_amount'] > 0  &&  $purchase['purchase_amount'] != $purchase['order_amount']){
                    $orderBase['tiaojia'] = "是";
                }else{
                    $orderBase['tiaojia'] = "否";
                }
            }
            $purchase['shipping_time'] = $purchase['shipping_time'] > 0 ? date('Y-m-d H:i:s',$purchase['shipping_time']) : "";
            $purchase['finish_time'] = $purchase['finish_time'] > 0 ? date('Y-m-d H:i:s',$purchase['finish_time']) : "";
            $purchase['purchase_amount'] = $purchase['purchase_amount'] > 0 ? $purchase['purchase_amount'] : "";
        }
        //拼接基本信息
        $PcbPublicModel = new PcbPublicModel();
        $orderBase['order_pay_type'] = $PcbPublicModel->getPay($order_id);
        $orderBase['order_type'] = PcbOrderMap::$order_type[$orderBase['order_type']];
        $orderBase['status_name'] = PcbOrderMap::$status[$orderBase['status']];
        $orderBase['create_time'] = $orderBase['create_time'] > 0 ? date('Y-m-d H:i:s',$orderBase['create_time']) : "";
        $orderBase['finish_time'] = $orderBase['finish_time'] > 0 ? date('Y-m-d H:i:s',$orderBase['finish_time']) : "";
        $orderBase['pay_time'] = $orderBase['pay_time'] > 0 ? date('Y-m-d H:i:s',$orderBase['pay_time']) : "";
        $userCompany = DB::connection('order')->table("lie_user_company")->where("user_id",$orderBase['user_id'])->first();
        $orderBase['company_name'] = $userCompany ? $userCompany->com_name : "" ;
        //拼接收货信息
        $RegionController = new RegionController();
        if ($orderAddress){
            $orderAddress =  objectToArray($orderAddress);
            $orderAddress['province'] = $RegionController->getRegionName($orderAddress['province']);
            $orderAddress['city'] = $RegionController->getRegionName($orderAddress['city']);
            $orderAddress['district'] = $RegionController->getRegionName($orderAddress['district']);
        }
        //拼接发票信息
        if ($orderInvoice){
            $orderInvoice =  objectToArray($orderInvoice);
            $orderInvoice['province'] = $RegionController->getRegionName($orderInvoice['consignee_province']);
            $orderInvoice['city'] = $RegionController->getRegionName($orderInvoice['consignee_city']);
            $orderInvoice['district'] = $RegionController->getRegionName($orderInvoice['consignee_district']);
            $orderInvoice['inv_type'] = PcbOrderInvoiceMap::$inv_type[$orderInvoice['inv_type']];
            $orderInvoice['invoice_status'] = PcbOrderInvoiceMap::$invoice_status[$orderInvoice['invoice_status']];
        }
        //拼接订单详细信息
        $orderInfo = objectToArray($orderInfo);
        $orderInfo['teshu'] = "是否有半孔工艺:".($orderInfo['sp_half_hole'] == 1 ? "是":"否")." 是否要金手指:".($orderInfo['sp_goldfingers'] == 1 ? "是":"否").$orderInfo['sp_goldfingers_bevelling'].$orderInfo['sp_UL_marking']; //特殊工艺

        $data['orderBase'] = $orderBase;
        $data['purchase'] = $purchase;
        $data['orderAddress'] = $orderAddress;
        $data['orderAuditDetail'] = objectToArray($orderAuditDetail);
        $data['orderAuditReason1'] = objectToArray($orderAuditReason1);
        $data['orderAuditReason2'] = objectToArray($orderAuditReason2);
        $data['orderInfo'] = objectToArray($orderInfo);
        $data['orderInvoice'] = $orderInvoice;
        $data['shipping'] = objectToArray($shipping);
        $data['actionLog'] = objectToArray($actionLog);

        return view("Pcb",$data);
    }
    //pcb 采购列表
    private function PcbPurchaseList($request,$data,$id){
        $data['title']='PCB交易列表';
        $data['order_type'] = PcbOrderMap::$order_type;
        $data['status'] = PcbPurchaseMap::$status;
        //分页
        $response = (new PcbPurchaseModel())->getList();
        $page = new Page($response[3], 10);
        $page->setConfig('theme', '%FIRST% %UP_PAGE% %LINK_PAGE% %DOWN_PAGE% %END% %HEADER%');
        $show = $page->show();
        $data['list'] = $response[2];
        $data['page'] = $show;

        return view("Pcb",$data);
    }
    //pcb详情
    private function PcbPurchaseDetail($request,$data,$id){
        $data['title']='PCB采购详情';
        $data['paths'] = [["title" => 'PCB管理', "href" => '#'], ["title" => 'PCB采购列表', "href" => '/web/PcbPurchaseList'], ["title" => 'PCB采购详情', "href" => '#']];

        $purchase_id = $request->input("purchase_id");
        $order_id = $request->input("order_id");

        $con = DB::connection('pcb');
        //订单基本信息
        $orderBase = $con->table('order')->where(['order_id' => $order_id])->first();
        if (!$orderBase){
            return [0,'不存在此采购单'];
        }
        //采购信息
        $purchase = $con->table('purchase')->where(['order_id' => $order_id])->first();
        //采购费用明细
        $purchaseAuditDetail = $con->table('purchase_audit_detail')->where(['purchase_id' => $purchase_id])->first();
        //订单详细信息
        $orderInfo = $con->table('order_info')->where(['order_id' => $order_id])->first();
        //订单发票信息
        $orderInvoice = $con->table('order_invoice')->where(['order_id' => $order_id])->first();
        //物流信息
        $shipping = $con->table('shipping')->where(['relevance_id' => $purchase_id,'shipping_type'=>3])->first();
        //供应商审核结果
        $orderAuditReason2 = $con->table('order_audit_reason')->where(['order_id' => $order_id,'type'=>2,'status'=>1])->orderBy("id","desc")->first();
        //查询操作日志
        $actionLog = $con->table("action_log")->where(["type"=>1,'oid'=>$order_id])->orderBy("id","desc")->get();

        //拼接基本信息
        $orderBase =  objectToArray($orderBase);
        $orderBase['order_type'] = PcbOrderMap::$order_type[$orderBase['order_type']];
        $orderBase['create_time'] = $orderBase['create_time'] > 0 ? date('Y-m-d H:i:s',$orderBase['create_time']) : "";
        $orderBase['finish_time'] = $orderBase['finish_time'] > 0 ? date('Y-m-d H:i:s',$orderBase['finish_time']) : "";
        $orderBase['pay_time'] = $orderBase['pay_time'] > 0 ? date('Y-m-d H:i:s',$orderBase['pay_time']) : "";
        $userCompany = DB::connection('order')->table("lie_user_company")->where("user_id",$orderBase['user_id'])->first();
        $orderBase['company_name'] = $userCompany ? $userCompany->com_name : "" ;

        //拼接采购信息
        if ($purchase){
            $purchase =  objectToArray($purchase);
            $purchase['shipping_time'] = $purchase['shipping_time'] > 0 ? date('Y-m-d H:i:s',$purchase['shipping_time']) : "";
            $purchase['purchase_amount'] = $purchase['purchase_amount'] > 0 ? $purchase['purchase_amount'] : "";
            $purchase['pay_time'] = $purchase['pay_time'] > 0 ? date('Y-m-d H:i:s',$purchase['pay_time']): "";
            $purchase['order_pay_type'] = PcbOrderMap::$order_pay_type[$purchase['order_pay_type']];
            $purchase['status_name'] = @PcbPurchaseMap::$status[$purchase['status']];
            if($purchase['purchase_amount'] == 0){
                $orderBase['tiaojia'] = "";
            }else{
                if ( $purchase['purchase_amount'] > 0  &&  $purchase['purchase_amount'] != $purchase['order_amount']){
                    $orderBase['tiaojia'] = "是";
                }else{
                    $orderBase['tiaojia'] = "否";
                }
            }
        }
        //拼接订单详细信息
        $orderInfo = objectToArray($orderInfo);
        $orderInfo['teshu'] = "是否有半孔工艺:".($orderInfo['sp_half_hole'] == 1 ? "是":"否")." 是否要金手指:".($orderInfo['sp_goldfingers'] == 1 ? "是":"否").$orderInfo['sp_goldfingers_bevelling'].$orderInfo['sp_UL_marking']; //特殊工艺

        $data['orderBase'] = $orderBase;
        $data['purchase'] = $purchase;
        $data['liexinInfo'] = config("params.liexin_info");
        $data['purchaseAuditDetail'] = objectToArray($purchaseAuditDetail);
        $data['orderAuditReason2'] = objectToArray($orderAuditReason2);
        $data['orderInfo'] = objectToArray($orderInfo);
        $data['orderInvoice'] = $orderInvoice;
        $data['shipping'] = objectToArray($shipping);
        $data['actionLog'] = objectToArray($actionLog);

        return view("Pcb",$data);
    }

}