<?php


namespace App\Http\Services;


use App\Http\Controllers\Filter\SupplierAccountFilter;
use App\Http\Transformers\SupplierAccountTransformer;
use App\Http\Transformers\SupplierTransformer;
use App\Model\LogModel;
use App\Model\SupplierAccountModel;
use App\Model\SupplierChannelModel;
use App\Model\SupplierContactModel;
use Carbon\Carbon;
use PhpAmqpLib\Connection\AMQPStreamConnection;
use PhpAmqpLib\Message\AMQPMessage;

class SupplierSubAccountService
{

    public function generateRequestAuthData($accountId)
    {
        $supplierAccount = SupplierAccountModel::where('id', $accountId)->first()->toArray();
        return [
            'source_create_type' => 2,
            'password' => $supplierAccount['password'],
            'id' => $accountId,
        ];
    }


    public function getSupplierSubAccount($accountId, $sbatId)
    {
        $url = config('website.CloudUrl') . '/inner/subAccount/getSubAccountInfo';
        $params = $this->generateRequestAuthData($accountId);
        $params['sbat_id'] = $sbatId;
        unset($params['account_id']);
        $result = json_decode(curl($url, $params), true);
        if (isset($result['code']) && $result['code'] == 0) {
            return $result['data'];
        }
        return [];
    }

    public function getSupplierSubAccountList($map)
    {
        $url = config('website.CloudUrl') . '/inner/subAccount/list';
        $params = $this->generateRequestAuthData($map['account_id']);
        $params = array_merge($map, $params);
        unset($params['account_id']);
        $result = json_decode(curl($url, $params), true);
        if (isset($result['code']) && $result['code'] == 0) {
            return $result['data'];
        }
        return [];
    }

    //新增子账号
    public function addSupplierSubAccount($accountId, $data)
    {
        $url = config('website.CloudUrl') . '/inner/subAccount/create';
        $params = $this->generateRequestAuthData($accountId);
        $params = array_merge($data, $params);
        $result = json_decode(curl($url, $params, true), true);
        if (isset($result['code'])) {
            if ($result['code'] == 0) {
                return true;
            } else {
                return $result['msg'];
            }
        }
        return false;
    }

    public function updateSupplierSubAccount($accountId, $data)
    {
        $url = config('website.CloudUrl') . '/inner/subAccount/edit';
        $params = $this->generateRequestAuthData($accountId);
        $params = array_merge($data, $params);
        $result = json_decode(curl($url, $params, true), true);
        if (isset($result['code'])) {
            if ($result['code'] == 0) {
                return true;
            } else {
                return $result['msg'];
            }
        }
        return false;
    }


    //获取用户的权限菜单
    public function getSupplierAccountPermList($accountId, $sbatId)
    {

        $url = config('website.CloudUrl') . '/inner/subAccount/getMenu';
        $params = $this->generateRequestAuthData($accountId);
        if ($sbatId) {
            $params['sbat_id'] = $sbatId;
        } else {
            $params['method'] = 'add';
        }
//        dump($params);
        $result = json_decode(curl($url, $params), true);
        if (isset($result['code']) && $result['code'] == 0) {
            $permList = $result['data']['data'];
//            dump($permList);
            //还要转换成layui能用的格式
            $list = [];
//            dump($permList);
            foreach ($permList as $perm) {
                $children = !empty($perm['children']) ? $this->getChildPermList($perm['children']) : [];
                $list[] = [
                    'title' => $perm['name'],
                    'checked' => false,
                    'disabled' => $perm['disabled'],
                    'id' => $perm['id'],
                    'spread' => true,
                    'children' => $children
                ];

            }
//            dd($list);
            return $list;
        }
        return [];
    }

    public function getChildPermList($perm)
    {
        if (empty($perm)) {
            return [];
        }
        $childPermList = [];
        foreach ($perm as $key => $item) {
            $childPermList[] = [
                'title' => $item['name'],
                'id' => !empty($item['id']) ? $item['id'] : str_random(100),
                'checked' => $item['checked'],
                'disabled' => isset($item['disabled'])?$item['disabled']:false,
                'spread' => true,
            ];
        }
        return $childPermList;
    }

    public function getSupplierAccountMessagePermList($accountId, $ynatId = 0)
    {
        $url = config('website.CloudUrl') . '/inner/subAccount/getMessageMenu';
        $params = $this->generateRequestAuthData($accountId);
        if ($ynatId) {
            $params['ynat_id'] = $ynatId;
        }else{
            $params['method'] = 'add';
        }
        $result = json_decode(curl($url, $params), true);
        if (isset($result['code']) && $result['code'] == 0) {
            $permList = $result['data']['data'];
            //还要转换成layui能用的格式
            $list = [];
            foreach ($permList as $perm) {
                $list[] = [
                    'id' => $perm['id'],
                    'title' => $perm['name'],
                    'checked' => false,
                    'spread' => true,
                    'children' => !empty($perm['children']) ? $this->getChildPermList($perm['children']) : [],
                ];
            }
            return $list;
        }
        return [];
    }

    //修改子账号状态
    //1启动2禁用0删除
    public function changeSupplierSubAccountStatus($accountId, $sbatId, $status)
    {
        $url = config('website.CloudUrl') . '/inner/subAccount/changeStatus';
        $params = $this->generateRequestAuthData($accountId);
        $params['status'] = $status;
        $params['sbat_id'] = $sbatId;
        $result = json_decode(curl($url, $params, true), true);
        if (isset($result['code'])) {
            if ($result['code'] == 0) {
                return true;
            } else {
                return $result['msg'];
            }
        }
        return false;
    }

    public function saveMessageMenu($accountId, $userMessageRule)
    {
        $url = config('website.CloudUrl') . '/inner/subAccount/saveMessageMenu ';
        $params = $this->generateRequestAuthData($accountId);
        $userMessageRule = $userMessageRule ?: [];
        $params['user_message_rule'] = is_array($userMessageRule) ? json_encode($userMessageRule) : $userMessageRule;
        $result = json_decode(curl($url, $params, true), true);
        if (isset($result['code'])) {
            if ($result['code'] == 0) {
                return true;
            } else {
                return $result['msg'];
            }
        }
        return false;
    }
}