<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Redis;
use App\Http\Requests;
use App\Http\Page;
use App\Http\Controllers\Controller;
use App\Model\OrderModel;
use App\Model\OrderReturnModel;
use App\Model\OrderReturnItemsModel;
use App\Model\PayLogModel;
use App\Model\UserMainModel;
use App\Model\ShippingModel;
use DB;

// 获取支付名称
function getPayName($order_id) 
{
    $payLog = PayLogModel::where(['order_id' => $order_id])->select('pay_name')->get();

    if ($payLog->isEmpty()) return false;

    foreach ($payLog as $v) {
        $payName[] = $v->pay_name; 
    }

    return implode(',', $payName);
}

// 获取交易员名称
function getSalesName($sale_id)
{
    if (!$sale_id) return false;

    $user = DB::table('user_info')->where('userId', $sale_id)->select('name')->first();

    return isset($user) ? $user->name : '';
}

// 获取物流名称
function getShippingName($shipping_id) 
{
    $shipping = ShippingModel::where('shipping_id', $shipping_id)->select('shipping_name')->first();

    return $shipping ? $shipping->shipping_name : '';
}

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

        if ($request->path() == '/') $uri = '/list';           

        $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);   
        }

        $userPerms = $perm->getUserAllPerms($request->user->userId, $role); // 用户权限

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

        return $data;
    }

    // 联营退货列表
    public function jointReturnList(Request $request) 
    {
        $info = $this->ReturnList($request, 1);   

        return view('returnlist', $info);
    }

    // 自营退货列表
    public function selfReturnList(Request $request) 
    {
        $info = $this->returnList($request, 2);

        return view('returnlist', $info);
    }

    // 退货申请列表
    public function returnList(Request $request, $type)
    {
        $info = $this->getPageInfo($request);
        $info['title'] = $type == 1 ? '联营退货申请列表' : '自营退货申请列表';     

        $map['order_sn']           = $request->input('order_sn', '');
        $map['sku_name']           = $request->input('sku_name', '');
        $map['order_payment_mode'] = $request->input('order_payment_mode', '');
        $map['apply_status']       = $request->input('apply_status', '');
        $map['is_refund']          = $request->input('is_refund', '');
        $map['time_start']         = $request->input('time_start', '');
        $map['time_end']           = $request->input('time_end', '');
        $map['order_goods_type']   = $type; // 类型
        $map['sale_id']            = $request->input('sale_id', '');

        // 非管理员、查看下级,只能看到自己的退货单
        if ($info['role'] == 3) {
            $map['create_uid'] = $request->user->userId;
        }

        if (!empty($map['sale_id'])) {
            $map['create_uid'] = $map['sale_id'];
        }

        //获取订单列表
        $url = Config('website.api_domain').'return/getReturnList';

        $data['k1']  = time();
        $data['k2']  = md5(md5($data['k1']).'fh6y5t4rr351d2c3bryi');
        $data['p']   = $request->input('p', 1); // 当前页码
        $data['size'] = 10; // 当前页条数
        $data['map'] = $map;

        $response = json_decode(curlApi($url, $data), true); 

        // 分页
        $page = new Page($response['data']['count'], 10);
        $page->setConfig('theme', '%FIRST% %UP_PAGE% %LINK_PAGE% %DOWN_PAGE% %END% %HEADER%');
        $show = $page->show();

        // 获取配送方式
        $shippings = ShippingModel::get(); 
        
        $ship_type = [];
        foreach ($shippings as $k => $v) {
            $ship_type[$v->shipping_id] = $v->shipping_name;
        }
 
        $info['shippings'] = $ship_type;

        $info['condition'] = $map; 
        $info['list']      = $response['data']['data'];  
        $info['count']     = $response['data']['count'];
        $info['page']      = $show; 

        // $perm = new PermController;
        // $joint_kefu = $perm->getRoleUsers($request, '客服');
        // $self_kefu = $perm->getRoleUsers($request, '自营客服');
        // $info['sale_list'] = array_merge($joint_kefu, $self_kefu);

        $perm = new PermController; 
        $sale_list = $perm->getUserByDepartmentId(Config('perm_args.sales_department_id')); // 获取所有的销售

        $info['sale_list'] = $sale_list;

        return $info;
    }

    // 联营退货单导出
    public function returnExport(Request $request)
    {
        $ReturnModel = new OrderReturnModel();
        return $ReturnModel->export($request);
    }

    // 自营退货单导出
    public function selfReturnExport(Request $request)
    {
        $ReturnModel = new OrderReturnModel();
        return $ReturnModel->export($request);
    }

    // 退货详情
    public function returnDetails(Request $request, $id)
    {
        $info = $this->getPageInfo($request); 

        $OrderReturnModel    = new OrderReturnModel();
        $info['return']      = $OrderReturnModel->find($id);
        $info['returnItems'] = $OrderReturnModel->find($id)->hasManyReturnItems;
        $info['returnLog']   = $OrderReturnModel->find($id)->hasManyReturnLog;

        if ($info['return']['order_goods_type'] == 1) {
            $title = '联营订单';
            $return_url = '/return_list';
        } else {
            $title = '自营订单';
            $return_url = '/self_return_list';
        }

        $info['title'] = '订单退货详情';
        $info['paths'] = [["title" => $title, "href" => '#'], ["title" => '退货申请列表', "href" => $return_url], ["title" => '订单退货详情', "href" => '#']];

        return view('returnDetails', $info);
    }

    // 退货单审核
    public function returnCheck(Request $request)
    {
        if ($request->isMethod('post')) {
            $OrderReturnModel = new OrderReturnModel();
            return $OrderReturnModel->check($request);
        }
    }

    // 退货物流信息
    public function returnShipping(Request $request)
    {
        if ($request->isMethod('post')) {
            $OrderReturnModel = new OrderReturnModel();
            return $OrderReturnModel->shipping($request);
        }
    }

}