<?php

class SeguimientoConfAporteVoluntario extends CActiveRecord
{
    public function tableName()
    {
        return 'retenciones.seguimiento_conf_aporte_voluntario';
    }

    public function rules()
    {
        return array(
            array('id_txt', 'required'),
            array('aplica_capitalizacion, aplica_retiro', 'boolean'),
        );
    }

    public function attributeLabels()
    {
        return array(
            'id' => 'ID',
            'aplica_retiro' => 'Aplica comisión a retiro',
            'aplica_capitalizacion' => 'Aplica comisión a capitalización',
        );
    }

    public static function model($className = __CLASS__)
    {
        return parent::model($className);
    }

    /**
     * Registra modificación seguimiento y actualiza la configuracion global.
     *
     * @param  integer
     * @param  ConfAporteVoluntario
     * @param  POST request
     * @return void
     */
    public static function registrar($idNomina, $datos)
    {
        if (!isset($datos['ConfAporteVoluntario'])) {
            return;
        }

        $model = new self();
        $model->id_txt = $idNomina;
        $model->attributes = $datos['ConfAporteVoluntario'];
        $model->save();
    }

    /**
     * Obtiene la configuración para la nomina seleccionada.
     *
     * @param  integer
     * @return mixed
     */
    public static function getConf($idNomina)
    {
        return self::model()->find(array(
            'condition' => 'id_txt=:id_txt',
            'params' => array(
                'id_txt' => $idNomina,
            ),
        ));
    }

    /**
     * Comprueba si existe una configuracion para la nomina seleccionada
     *
     * @param  integer
     * @return boolean
     */
    public static function has($idNomina)
    {
        return Yii::app()->getDb()->createCommand('
            SELECT exists
              (SELECT 1
               FROM retenciones.seguimiento_conf_aporte_voluntario
               WHERE id_txt=:id)
        ')->bindValue('id', $idNomina)->queryRow()['exists'];
    }
}
