<?php

namespace App\Http\Controllers;

use App\Http\Requests;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Model\PaymentDaysModel;
use App\Model\Pcb\PcbOrderModel;
use App\Model\Pcb\PcbPublicModel;
use App\Model\Pcb\PcbPurchaseModel;
use App\Model\Pcb\PcbServerModel;
use App\Model\KefuModel;
use App\Model\CmsModel;
use App\Model\OrderItemsTrackModel;
use App\Model\UserSampleApplyModel;
use App\Model\UserSampleInviteModel;
use App\Model\OrderItemsModel;

class ApiController extends Controller
{
    public function Entrance(Request $request, $id ){
        $this->$id($request, $id);
    }

    private function Export($errcode=0,$errmsg='成功',$data=''){
        if(is_array($errcode)){
            ErrorLog($errcode[0],$errcode[1]);
            echo json_encode(['errcode'=>$errcode[0],'errmsg'=>$errcode[1],'data'=>!empty($errcode[2])?$errcode[2]:'']);
            exit();
        }else{
            ErrorLog($errcode,$errmsg);
            echo json_encode(['errcode'=>$errcode,'errmsg'=>$errmsg,'data'=>$data]);
            exit();
        }
    }

    private function ExportLayui($errcode=0,$errmsg=0,$data=[],$count=0,$total=''){
        if(is_array($errcode)){
            ErrorLog($errcode[0],$errcode[1]);
            echo json_encode(['code'=>$errcode[0],'msg'=>$errcode[1],'data'=>$errcode[2],'count'=>$errcode[3],'total'=>!empty($errcode[4])?$errcode[4]:'']);
        }else{
            ErrorLog($errcode,$errmsg);
            echo json_encode(['code'=>$errcode,'msg'=>$errmsg,'data'=>$data,'count'=>$count,'total'=>$total]);
        }
        exit();
    }

    private function ApiPaymentDaysList(){
        $Model=new PaymentDaysModel();
        $this->ExportLayui($Model->ApiPaymentDaysList());
    }

    private function ApiAuthPaymentDays($request){
        $Model=new PaymentDaysModel();
        $this->Export($Model->ApiAuthPaymentDays($request->user->userId));
    }
    //pcb订单列表
    private function ApiPcbOrderList($request){
        $this->ExportLayui((new PcbOrderModel())->getList());
    }
    //pcb订单列表导出
    private function ApiPcbOrderListExport($request){
        ((new PcbOrderModel())->export());
    }
    //pcb客服点击确定发货
    private function ApiSendStock($request){
        $this->Export((new PcbPublicModel())->orderShipping($request->user->userId,$request->all()));
    }
    //pcb客服点击转采购
    private function ApiAddPurchase($request){
        echo (new PcbServerModel())->AddPurchase($request->user->userId,$request->input("order_id"));
    }
    //pcb客服审核订单,反馈给前台
    private function ApiAuditOrder($request){
        $this->Export((new PcbPublicModel())->auditOrder($request->user->userId,$request->input("order_id"),$request->input("order_sn"),$request->input("content")));
    }
    //pcb订单列表
    private function ApiPcbPurchaseList($request){
        $this->ExportLayui((new PcbPurchaseModel())->getList());
    }
    //pcb订单列表导出
    private function ApiPcbPurchaseListExport($request){
        ((new PcbPurchaseModel())->export());
    }
    //pcb后台点击采购确认
    private function ApiConfirmOrder($request){
       echo  (new PcbServerModel())->confirmOrder($request->user->userId,$request->input("purchase_id"),$request->input("status"));
    }
    //pcb后台点击采购确认
    private function ApiOfflinePay($request){
        echo  (new PcbServerModel())->offlinePay($request->user->userId,$request->input("order_id"),$request->input("pay_money"));
    }
    //pcb后台点击采购确认
    private function ApiSetOrderProduct($request){
        echo  (new PcbServerModel())->setOrdserProduct($request->user->userId,$request->input("purchase_id"));
    }

    // 获取客服池
    public function ApiKefuList($request)
    {   
        $KefuModel = new KefuModel;
        $this->ExportLayui($KefuModel->lists($request));
    }

    // 新增客服
    public function ApiAddKefu($request)
    {
        $KefuModel = new KefuModel;
        $this->Export($KefuModel->add($request));
    }

    // 编辑客服
    public function ApiEditKefu($request)
    {
        $KefuModel = new KefuModel;
        $this->Export($KefuModel->edit($request));
    }

    // 删除客服
    public function ApiDelKefu($request)
    {
        $KefuModel = new KefuModel;
        $this->Export($KefuModel->del($request));
    }

    // 置顶客服
    public function ApiTopKefu($request)
    {
        $KefuModel = new KefuModel;
        $this->Export($KefuModel->top($request));
    }

    // 获取订单明细
    public function getOrderItems($request)
    {
        $order_id = $request->input('order_id');

        $url = Config('website.api_domain').'order/getOrderDetails';

        $data['k1'] = time();
        $data['k2'] = md5(md5($data['k1']).'fh6y5t4rr351d2c3bryi');

        $userData = array("order_id"=>$order_id, "type"=>3, "k1"=>$data['k1'], "k2"=>$data['k2']);

        $resp = json_decode(curlApi($url, $userData, "POST"), true);

        $this->Export(0, '',  $resp['data']['order_items_info']);
    }

    // 获取订单跟踪
    public function getOrderItemsTrack($request)
    {
        $rec_id = $request->input('rec_id'); 

        $OrderItemsTrackModel = new OrderItemsTrackModel;
        $track = $OrderItemsTrackModel->getLastItemTrack($rec_id);

        if (!$track) $this->Export(1, '无跟踪明细');

        $data = $track['track_content'].',数量:'.$track['track_num'];

        $this->Export(0, '',  $data);
    }

    // 获取自营样片领取列表
    public function ApiSelfSampleList($request)
    {
        $UserSampleApplyModel = new UserSampleApplyModel;
        $this->ExportLayui($UserSampleApplyModel->lists($request));
    }

    // 获取自营样片领取记录
    public function ApiSelfSampleApplyLog($request)
    {
        $UserSampleApplyModel = new UserSampleApplyModel;
        $this->ExportLayui($UserSampleApplyModel->applyLog($request));
    }

    // 获取自营样片邀约记录
    public function ApiSelfSampleInviteLog($request)
    {
        $UserSampleInviteModel = new UserSampleInviteModel;
        $this->ExportLayui($UserSampleInviteModel->lists($request));
    }

    /*
        修改订单详情
    */
    public function update_order_items($request){

        $OrderItemsModel = new OrderItemsModel();

        $data['id']      = $request->input('id');
        $data['remarks'] = $request->input('remarks');

        $result = $OrderItemsModel->updateData($data);

        if($result){
            $this->Export($result, 'success');
        }else{
            $this->Export($result, 'error');
        }

    }

}