<?php

namespace app\crm\model;
use app\admin\model\Common;

class Visit extends Common
{
    /**
     * 为了数据库的整洁,同时又不影响Model和Controller的名称
     * 我们约定每个模块的数据表都加上相同的前缀,比如CRM模块用crm作为数据表前缀
     */
    protected $name = 'crm_visit';
    protected $createTime = 'create_time';
    protected $updateTime = 'update_time';
    protected $autoWriteTimestamp = true;

    /**
     * 回访计划数据
     * @param  $id 回款计划ID
     * @return
     */
    public function getDataById($id = '', $userId = 0, $model='')
    {
        $map['visit_id'] = $id;
        $dataInfo = $this->where($map)->find();
        if (!$dataInfo) {
            $this->error = '暂无此数据';
            return false;
        }
        if(empty($model) && $model!='update'){
            $grantData = getFieldGrantData($userId);
            foreach ($grantData['crm_visit'] as $key => $value) {
                foreach ($value as $ke => $va) {
                    if($va['maskType']!=0){
                        $fieldGrant[$ke]['maskType'] = $va['maskType'];
                        $fieldGrant[$ke]['form_type'] = $va['form_type'];
                        $fieldGrant[$ke]['field'] = $va['field'];
                    }
                }
            }
            foreach ($fieldGrant AS $key => $val){
                //掩码相关类型字段
                if ($val['maskType']!=0 && $val['form_type'] == 'mobile') {
                    $pattern = "/(1[3458]{1}[0-9])[0-9]{4}([0-9]{4})/i";
                    $rs = preg_replace($pattern, "$1****$2", $dataInfo[$val['field']]);
                    $dataInfo[$val['field']] = !empty($dataInfo[$val['field']]) ? (string)$rs : null;
                } elseif ($val['maskType']!=0 && $val['form_type'] == 'email') {
                    $email_array = explode("@", $dataInfo[$val['field']]);
                    $prevfix = (strlen($email_array[0]) < 4) ? "" : substr($dataInfo[$val['field']], 0, 2); //邮箱前缀
                    $str = preg_replace('/([\d\w+_-]{0,100})@/', "***@", $dataInfo[$val['field']], -1, $count);
                    $rs = $prevfix . $str;
                    $dataInfo[$val['field']] = !empty($dataInfo[$val['field']]) ?$rs: null;
                } elseif ($val['maskType']!=0 && in_array($val['form_type'],['position','floatnumber'])) {
                    $dataInfo[$val['field']] = !empty($dataInfo[$val['field']]) ? (string)substr_replace($dataInfo[$val['field']], '*****',0,strlen($dataInfo[$val['field']])) : null;
                }
            }
        }
//        $userModel = new \app\admin\model\User();
//        $dataInfo['create_user_id_info'] = isset($dataInfo['create_user_id']) ? $userModel->getUserById($dataInfo['create_user_id']) : [];
//        $dataInfo['owner_user_id_info'] = isset($dataInfo['owner_user_id']) ? $userModel->getUserById($dataInfo['owner_user_id']) : [];
//        $dataInfo['create_user_name'] = !empty($dataInfo['create_user_id_info']['realname']) ? $dataInfo['create_user_id_info']['realname'] : '';
//        $dataInfo['owner_user_name'] = !empty($dataInfo['owner_user_id_info']['realname']) ? $dataInfo['owner_user_id_info']['realname'] : '';
//        $dataInfo['customer_id_info'] = $dataInfo['customer_id'] ? db('crm_customer')->where(['customer_id' => $dataInfo['customer_id']])->field('customer_id,name')->find() : [];
//        $dataInfo['contract_id_info'] = $dataInfo['contract_id'] ? db('crm_contract')->where(['contract_id' => $dataInfo['contract_id']])->field('contract_id,name,money')->find() : [];
//        $dataInfo['receivables_id'] = $id;
//        $userModel = new \app\admin\model\User();
//        $dataInfo['create_user_info'] = $userModel->getUserById($dataInfo['create_user_id']);
//        $dataInfo['plan_id'] = $id;
//        # 处理时间格式
//        $fieldModel = new \app\admin\model\Field();
//        $datetimeField = $fieldModel->getFieldByFormType('crm_receivables', 'datetime'); //日期时间类型
//        foreach ($datetimeField as $key => $val) {
//            $dataInfo[$val] = !empty($dataInfo[$val]) ? date('Y-m-d H:i:s', $dataInfo[$val]) : null;
//        }
//        $dataInfo['create_time'] = !empty($dataInfo['create_time']) ? date('Y-m-d H:i:s', $dataInfo['create_time']) : null;
//        $dataInfo['update_time'] = !empty($dataInfo['update_time']) ? date('Y-m-d H:i:s', $dataInfo['update_time']) : null;
//        // 字段授权
//        if (!empty($userId)) {
//            $grantData = getFieldGrantData($userId);
//            $userLevel = isSuperAdministrators($userId);
//            foreach ($dataInfo as $key => $value) {
//                if (!$userLevel && !empty($grantData['crm_receivables'])) {
//                    $status = getFieldGrantStatus($key, $grantData['crm_receivables']);
//
//                    # 查看权限
//                    if ($status['read'] == 0) unset($dataInfo[$key]);
//                }
//            }
//            if (!$userLevel && !empty($grantData['crm_receivables'])) {
//                # 客户名称
//                $customerStatus = getFieldGrantStatus('customer_id', $grantData['crm_receivables']);
//                if ($customerStatus['read'] == 0) {
//                    $dataInfo['customer_name'] = '';
//                    $dataInfo['customer_id_info'] = [];
//                }
//                # 合同金额
//                $contractMoneyStatus = getFieldGrantStatus('contract_money', $grantData['crm_receivables']);
//                if ($contractMoneyStatus['read'] == 0) $dataInfo['contract_id_info']['money'] = '';
//                # 合同名称
//                $contractMoneyStatus = getFieldGrantStatus('contract_money', $grantData['crm_receivables']);
//                if ($contractMoneyStatus['read'] == 0) $dataInfo['contract_id_info']['money'] = '';
//            }
//        }
        return $dataInfo;
    }
}