<?php

namespace common\models;

use backendApi\modules\v1\models\Admin;
use Yii;
use common\libs\logging\operate\valueType\Config as ValueTypeConfig;

/**
 * This is the model class for table "{{%USER_STATUS_AUDIT}}".
 *
 * @property string $ID
 * @property string $USER_ID 会员ID
 * @property int $STATUS_VALUE 修改后状态值
 * @property int $ORI_VALUE 原始状态值
 * @property int $PERIOD_NUM 期数
 * @property int $AUDIT_STATUS 审核状态
 * @property string $DEC_LV 修改状态时报单级别
 * @property string $EMP_LV 修改状态时聘级
 * @property string $PV_1L 修改状态时一市场业绩
 * @property string $PV_2L 修改状态时二市场业绩
 * @property string $PV_3L 修改状态时三市场业绩
 * @property string $PV_4L 修改状态时四市场业绩
 * @property string $PV_5L 修改状态时五市场业绩
 * @property string $SURPLUS_1L 修改状态时一市场剩余业绩
 * @property string $SURPLUS_2L 修改状态时二市场剩余业绩
 * @property string $SURPLUS_3L 修改状态时三市场剩余业绩
 * @property string $SURPLUS_4L 修改状态时四市场剩余业绩
 * @property string $SURPLUS_5L 修改状态时五市场剩余业绩
 * @property int $IS_PERIOD_ADD_T 是否按照期数加T
 * @property int $ADD_T_PERIOD_NUM 身份证加T的期数
 * @property int $IS_PERIOD_OPEN 是否按照期数开通
 * @property int $OPEN_PERIOD_NUM 开通期数
 * @property string $CREATE_ADMIN 创建人
 * @property string $AUDIT_ADMIN 审核人
 * @property string $CREATE_REMARK 创建备注
 * @property string $AUDIT_REMARK 审核备注
 * @property int $CREATED_AT 创建时间
 * @property int $AUDITED_AT 审核时间
 */
class UserStatusAudit extends \common\components\ActiveRecord
{
    /**
     * {@inheritdoc}
     */
    public static function tableName()
    {
        return '{{%USER_STATUS_AUDIT}}';
    }

    /**
     * {@inheritdoc}
     */
    public function rules()
    {
        return [
            [['USER_ID', 'PERIOD_NUM', 'CREATE_ADMIN', 'CREATED_AT'], 'required'],
            [['STATUS_VALUE', 'ORI_VALUE', 'PERIOD_NUM', 'AUDIT_STATUS', 'IS_PERIOD_ADD_T', 'ADD_T_PERIOD_NUM', 'IS_PERIOD_OPEN', 'OPEN_PERIOD_NUM', 'CREATED_AT', 'AUDITED_AT'], 'integer'],
            [['PV_1L', 'PV_2L', 'PV_3L', 'PV_4L', 'PV_5L', 'SURPLUS_1L', 'SURPLUS_2L', 'SURPLUS_3L', 'SURPLUS_4L', 'SURPLUS_5L'], 'number'],
            [['ID', 'USER_ID', 'DEC_LV', 'EMP_LV', 'CREATE_ADMIN', 'AUDIT_ADMIN'], 'string', 'max' => 32],
            [['CREATE_REMARK', 'AUDIT_REMARK'], 'string', 'max' => 4000],
            [['ID'], 'unique'],
        ];
    }

    /**
     * {@inheritdoc}
     */
    public function attributeLabels()
    {
        return [
            'ID' => 'ID',
            'USER_ID' => '会员ID',
            'STATUS_VALUE' => '修改后状态值',
            'ORI_VALUE' => '原始状态值',
            'PERIOD_NUM' => '期数',
            'AUDIT_STATUS' => '审核状态',
            'DEC_LV' => '修改状态时报单级别',
            'EMP_LV' => '修改状态时聘级',
            'PV_1L' => '修改状态时一市场业绩',
            'PV_2L' => '修改状态时二市场业绩',
            'PV_3L' => '修改状态时三市场业绩',
            'PV_4L' => '修改状态时四市场业绩',
            'PV_5L' => '修改状态时五市场业绩',
            'SURPLUS_1L' => '修改状态时一市场剩余业绩',
            'SURPLUS_2L' => '修改状态时二市场剩余业绩',
            'SURPLUS_3L' => '修改状态时三市场剩余业绩',
            'SURPLUS_4L' => '修改状态时四市场剩余业绩',
            'SURPLUS_5L' => '修改状态时五市场剩余业绩',
            'IS_PERIOD_ADD_T' => '是否按照期数加T',
            'ADD_T_PERIOD_NUM' => '身份证加T的期数',
            'IS_PERIOD_OPEN' => '是否按照期数开通',
            'OPEN_PERIOD_NUM' => '开通期数',
            'CREATE_ADMIN' => '创建人',
            'AUDIT_ADMIN' => '审核人',
            'CREATE_REMARK' => '创建备注',
            'AUDIT_REMARK' => '审核备注',
            'CREATED_AT' => '创建时间',
            'AUDITED_AT' => '审核时间',
        ];
    }

    /**
     * 操作日志记录条件
     * @return array
     */
    public function attrLabelsWithLogType(){
        return [
            'ID' => 'ID',
            'USER_ID' => '会员ID',
            'STATUS_VALUE' => [
                'label' => '修改后状态值',
                'type' => ValueTypeConfig::USER_STATUS_TYPE,
            ],
            'ORI_VALUE' => [
                'label' => '原始状态值',
                'type' => ValueTypeConfig::USER_STATUS_TYPE,
            ],
            'PERIOD_NUM' => '期数',
            'AUDIT_STATUS' => [
                'label' => '审核状态',
                'type' => ValueTypeConfig::AUDIT_STATUS_TYPE,
            ],
            'DEC_LV' => [
                'label' => '修改状态时报单级别',
                'type' => ValueTypeConfig::DEC_LV_TYPE,
            ],
            'EMP_LV' => [
                'label' => '修改状态时聘级',
                'type' => ValueTypeConfig::EMP_LV_TYPE,
            ],
            'PV_1L' => '修改状态时一市场业绩',
            'PV_2L' => '修改状态时二市场业绩',
            'PV_3L' => '修改状态时三市场业绩',
            'PV_4L' => '修改状态时四市场业绩',
            'PV_5L' => '修改状态时五市场业绩',
            'SURPLUS_1L' => '修改状态时一市场剩余业绩',
            'SURPLUS_2L' => '修改状态时二市场剩余业绩',
            'SURPLUS_3L' => '修改状态时三市场剩余业绩',
            'SURPLUS_4L' => '修改状态时四市场剩余业绩',
            'SURPLUS_5L' => '修改状态时五市场剩余业绩',
            'IS_PERIOD_ADD_T' => [
                'label' => '是否按照期数加T',
                'type' => ValueTypeConfig::YES_NO_TYPE,
            ],
            'ADD_T_PERIOD_NUM' => '身份证加T的期数',
            'IS_PERIOD_OPEN' => [
                'label' => '是否按照期数开通',
                'type' => ValueTypeConfig::YES_NO_TYPE,
            ],
            'OPEN_PERIOD_NUM' => '开通期数',
            'CREATE_ADMIN' => [
                'label' => '创建人',
                'type' => function($data){
                    $value = $data['value'];
                    $result = Admin::findOneAsArray('ID=:ID', [':ID'=>$value], 'ADMIN_NAME');
                    return $result['ADMIN_NAME'];
                },
            ],
            'AUDIT_ADMIN' => [
                'label' => '审核人',
                'type' => function($data){
                    $value = $data['value'];
                    $result = Admin::findOneAsArray('ID=:ID', [':ID'=>$value], 'ADMIN_NAME');
                    return $result['ADMIN_NAME'];
                },
            ],
            'CREATE_REMARK' => '创建备注',
            'AUDIT_REMARK' => '审核备注',
            'CREATED_AT' => [
                'label' => '创建时间',
                'type' => ValueTypeConfig::DATE_TIME_TYPE,
            ],
            'AUDITED_AT' => [
                'label' => '审核时间',
                'type' => ValueTypeConfig::DATE_TIME_TYPE,
            ],
        ];
    }
}
