<?php
namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Http\Response;
use App\Http\Requests;
use App\Http\Controllers\Controller;
use DB;
use Cookie;
use App\Http\Page;
use App\Http\Controllers\PermController;

function CheckActive($menus, &$arr, $url)
{
    for ($i = 0; $i < count($menus); $i++) {
        $menu = $menus[$i];
        array_push($arr, $i);

        if (isset($menu->href) && ($menu->href == $url || ($menu->href == '/' && $url == '//')))
            return true;
        if (isset($menu->childs) && count($menu->childs) > 0) {
            $ret = CheckActive($menu->childs, $arr, $url);
            if ($ret)
                return $ret;
        }
        array_pop($arr);
    }

    return false;
}

function createMenuReal($menus, $active, $level)
{
    $subclass = ($level == 0) ? 'nav-second-level' : 'nav-third-level';

    $ret = '';
    for ($ii = 0; $ii < ($level == 0 ? 1 : 2); $ii++) {
        for ($i = 0; $i < count($menus); $i++) {
            $menu = $menus[$i];
            $act = (count($active) > $level && $active[$level] == $i) ? true : false;
            $actclass = $act ? ' class="active"' : '';
            $actmenu  = $act ? ' in': '';

            if (isset($menu->childs) && count($menu->childs) > 0) {
                if ($ii != 0 && $level > 0)
                    continue;
                $ret .= '<li' . $actclass . '><a><i class="'
                    . $menu->class . '"></i><span class="nav-label">'
                    . $menu->title . '</span><span class="fa arrow"></span></a>'
                    . '<ul class="nav ' . $subclass . ' collapse' . $actmenu . '">'
                    . createMenuReal($menu->childs, $act ? $active : [], $level + 1)
                    . '</ul></li>';
            } else {
                if ($ii != 1 && $level > 0)
                    continue;
                $ret .= '<li' . $actclass . '><a href="'. $menu->href . '"><i class="' .
                    $menu->class . '"></i><span class="nav-label">' . $menu->title . '</span></a></li>';
            }
        }
    }

    return $ret;
}

function createMenu($menus, $url)
{
    $actives = [];
    $ret = CheckActive($menus, $actives, $url);
    if (!$ret)
        $actives = [];
    return createMenuReal($menus, $actives, 0);
}

Class OrderCountController 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;

        // 获取权限菜单
        if ($request->user->email != 'admin@ichunt.com' && $request->user->userId != 1000) 
            $menus = $perm->getPermMenu($request, $menus); 

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

        return $data;
    }

	/**
     * 订单数统计
     */
    public function count(Request $request, $type = 1, $view = 'count')
    {
    	$info = $this->getPageInfo($request);

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

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

        $resData = array("pf"=>1, "k1"=>$data['k1'], "k2"=>$data['k2'], 'type'=>$type);

        $temp = json_decode(curlApi($url,$resData,"POST"), true);

        $info['count'] = $temp['data'];

        return view($view, $info);
    }

    /**
     * 金额统计 -- 订单列表
     */
    public function amount(Request $request, $type = 1, $view = 'amount')
    {
    	$info = $this->getPageInfo($request);

        $time_start = $request->input('time_start', ''); // 开始时间
        $time_end = $request->input('time_end', ''); // 结束时间

        // 今日开始、结束时间
        $time_today_start = strtotime(date('Y-m-d'));
        $time_today_end = strtotime(date('Y-m-d',time()+3600*24))-1;

        $map['time_start'] = $time_start = !empty($time_start) ? $time_start : $time_today_start;
        $map['time_end'] = $time_end = !empty($time_end) ? $time_end : $time_today_end;

        $map['checkTime'] = $checkTime = $request->input('checkTime', '1'); // 默认选择订单付款时间
        $map['checkStatus'] = $checkStatus = $request->input('checkStatus', '1'); // 默认选择查询全部
        $map['order_goods_type'] = $type;

        // 竞调账号
        if ($info['username'] != 'vpadmin@ichunt.com') {
            $map['is_fake'] = 0;
        }

        // 调用API
        $url = Config('website.api_domain').'order/getAllOrder';

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

        $data['p'] = isset($_REQUEST['p']) ? $_REQUEST['p'] : 1; // 当前页码
        $data['map'] = $map;

        $response = json_decode(curlApi($url, $data), true); // 调用接口
  
        // API返回
        if ($response['err_code'] == 0) {
            $count = $response['data']['count'];

            $pay_count = $response['data']['pay_count'];

            if($count > 0){
                $pageSize = 10;
                $page = new Page($count, $pageSize);
                $page->setConfig('theme', '%FIRST% %UP_PAGE% %LINK_PAGE% %DOWN_PAGE% %END% %HEADER%');                   
                $info['count'] = $count;
                $info['page'] = $page->show();
            }

            $info['list'] = $response['data']['data'];
            $info['pay_count'] = $response['data']['pay_count'];
        }

        $info['checkTime'] = $checkTime;
        $info['checkStatus'] = $checkStatus;
        $info['time_start'] = $time_start;
        $info['time_end'] = $time_end;

        return view($view, $info);
    }

    // 自营订单统计
    public function selfCount(REQUEST $request) 
    {
        return $this->count($request, 2, 'self_count');
    }

    // 自营订单金额统计
    public function selfAmount(REQUEST $request) 
    {
        return $this->amount($request, 2, 'self_amount');
    }
}