<?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 "{{%RECONSUME_AUDIT}}".
 *
 * @property string $ID
 * @property string $USER_ID 会员ID
 * @property int $TYPE 类型
 * @property string $CHANGE_PV 变动PV
 * @property int $CHANGE_MONTH 变动月数
 * @property int $CALC_MONTH 扣月复销时的结算月
 * @property int $AUDIT_STATUS 审核状态
 * @property string $CREATE_ADMIN 创建管理员
 * @property string $AUDIT_ADMIN 审核管理员
 * @property string $CREATE_REMARK 申请备注
 * @property string $AUDIT_REMARK 审核备注
 * @property int $REMARK_IS_SHOW 申请备注是否显示
 * @property int $CREATED_AT 创建时间
 * @property int $AUDITED_AT 审核时间
 */
class ReconsumeAudit extends \common\components\ActiveRecord
{
    const TYPE_CHANGE = 0;      // 一般性质的变动余额和月数，不影响复销得奖资格
    const TYPE_RECONSUME = 1;   // 扣除复销余额和月数，并使下个月得奖复销有效

    /**
     * {@inheritdoc}
     */
    public static function tableName()
    {
        return '{{%RECONSUME_AUDIT}}';
    }

    /**
     * {@inheritdoc}
     */
    public function rules()
    {
        return [
            [['USER_ID', 'CREATE_ADMIN', 'CREATED_AT'], 'required'],
            [['TYPE', 'CHANGE_MONTH', 'CALC_MONTH', 'AUDIT_STATUS', 'REMARK_IS_SHOW', 'CREATED_AT', 'AUDITED_AT'], 'integer'],
            [['CHANGE_PV'], 'number'],
            [['ID', 'USER_ID', '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',
            'TYPE' => '类型',
            'CHANGE_PV' => '变动PV',
            'CHANGE_MONTH' => '变动月数',
            'CALC_MONTH' => '扣月复销时的结算月',
            'AUDIT_STATUS' => '审核状态',
            'CREATE_ADMIN' => '创建管理员',
            'AUDIT_ADMIN' => '审核管理员',
            'CREATE_REMARK' => '申请备注',
            'AUDIT_REMARK' => '审核备注',
            'REMARK_IS_SHOW' => '申请备注是否显示',
            'CREATED_AT' => '创建时间',
            'AUDITED_AT' => '审核时间',
        ];
    }

    /**
     * 操作日志记录条件
     * @return array
     */
    public function attrLabelsWithLogType(){
        return [
            'USER_ID' => '会员ID',
            'TYPE' => [
                'label' => '类型',
                'type' => function($data){
                    $value = $data['value'];
                    return $value==self::TYPE_CHANGE?'调整积分余额':'调整剩余月份';
                },
            ],
            'CHANGE_PV' => '变动PV',
            'CHANGE_MONTH' => '变动月数',
            'AUDIT_STATUS' => [
                'label' => '审核状态',
                'type' => ValueTypeConfig::AUDIT_STATUS_TYPE,
            ],
            'CREATE_ADMIN' => [
                'label' => '申请人',
                'type' => function($data){
                    $value = is_array($data) && isset($data['value']) ? $data['value'] : '';
                    $result = Admin::findOneAsArray('ID=:ID', [':ID'=>$value], 'ADMIN_NAME');
                    return !empty($result) ? $result['ADMIN_NAME'] : '';
                },
            ],
            'AUDIT_ADMIN' => [
                'label' => '审核人',
                'type' => function($data){
                    $value = is_array($data) && isset($data['value']) ? $data['value'] : '';
                    $result = Admin::findOneAsArray('ID=:ID', [':ID'=>$value], 'ADMIN_NAME');
                    return !empty($result) ? $result['ADMIN_NAME'] : '';
                },
            ],
            'CREATE_REMARK' => '备注',
            'REMARK_IS_SHOW' => [
                'label' => '申请备注是否显示',
                'type' => ValueTypeConfig::YES_NO_TYPE,
            ],
            'CREATED_AT' => [
                'label' => '申请时间',
                'type' => ValueTypeConfig::DATE_TIME_TYPE,
            ],
            'AUDITED_AT' => [
                'label' => '审核时间',
                'type' => ValueTypeConfig::DATE_TIME_TYPE,
            ],
        ];
    }
}
