<?php
/**
 * This is the model class for table "sidcai_actividad_economica".
 *
 * The following are the available columns in table 'sidcai_actividad_economica':
 * @property integer $act_codigo_pk
 * @property string $act_nombre
 * @property integer $act_tipoempresa_fk
 * @property boolean $act_habilitado
 * @property string $act_fecha_registro
 */
class SidcaiActividadEconomica extends CActiveRecord
{
    /**
     * @return string the associated database table name
     */
    public function tableName()
    {
        return 'sidcai_actividad_economica';
    }

    /**
     * @return array validation rules for model attributes.
     */
    public function rules()
    {
        return array(
            // Define los campos requeridos
            array('act_nombre, act_tipoempresa_fk', 'required', 'message' => 'Este campo es requerido.'),
            // Define la longitud y tipo de los campos
            array('act_nombre', 'length', 'min' => 4, 'max' => 250, 'tooShort' => 'Mínimo 4 caracteres.', 'tooLong' => 'Máximo 250 caracteres.'),
            array('act_tipoempresa_fk', 'numerical', 'integerOnly' => true, 'message' => 'Debe ser un número entero.'),
            // Define reglas de validación únicas
            array('act_nombre', 'unique', 'attributeName' => 'act_nombre', 'className' => 'SidcaiActividadEconomica', 'message' => '{value} ya se encuentra registrado.', 'on' => 'agregar'),
            // Define reglas para el escenario de modificación
            array('act_nombre', 'existeNombre', 'on' => 'modificar'),
            // Define campos seguros
            array('act_habilitado, act_tipoempresa_fk, act_fecha_registro', 'safe'),
        );
    }

    /**
     * Define los escenarios para el modelo
     */
    public function scenarios()
    {
        return array(
            'agregar' => array('act_nombre', 'act_tipoempresa_fk', 'act_habilitado', 'act_fecha_registro'),
            'modificar' => array('act_nombre', 'act_tipoempresa_fk', 'act_habilitado', 'act_fecha_registro'),
        );
    }

    /**
     * @return array customized attribute labels (name=>label)
     */
    public function attributeLabels()
    {
        return array(
            'act_codigo_pk' => 'Código',
            'act_nombre' => 'Nombre',
            'act_tipoempresa_fk' => 'Tipo de Empresa',
            'act_habilitado' => 'Habilitado',
            'act_fecha_registro' => 'Fecha de Registro',
        );
    }

    /**
     * Returns the static model of the specified AR class.
     * @param string $className active record class name.
     * @return SidcaiActividadEconomica the static model class
     */
    public static function model($className=__CLASS__)
    {
        return parent::model($className);
    }

    /**
     * Verifica si el nombre de la actividad económica ya existe en la base de datos.
     */
    public function existeNombre()
    {
        $original = SidcaiActividadEconomica::model()->findByPk($this->act_codigo_pk);
        $nuevo = SidcaiActividadEconomica::model()->find('act_nombre = :act_nombre', array(':act_nombre' => $this->act_nombre));
        if($nuevo != null) {
            if($nuevo->act_codigo_pk != $original->act_codigo_pk)
                $this->addError('act_nombre', $this->act_nombre . ' ya se encuentra registrado.');
        }
    }

    /**
     * Obtiene las actividades económicas habilitadas.
     * @return array lista de actividades económicas habilitadas.
     */
    public static function getActividadEcon()
    {
        $actividad_econ = SidcaiActividadEconomica::model()->findAll('act_habilitado = :act_habilitado', array(':act_habilitado' => true));
        return CHtml::listData($actividad_econ, 'act_codigo_pk', 'act_nombre');
    }

    /**
     * Antes de guardar, establece la fecha de registro si no está establecida.
     */
    protected function beforeSave()
    {
        if (parent::beforeSave()) {
            if ($this->isNewRecord) {
                $this->act_fecha_registro = date('Y-m-d H:i:s'); // Establece la fecha actual si es un nuevo registro
				$this->act_fecha_actualizacion = date('Y-m-d H:i:s'); // Establece la fecha actual si es un nuevo registro
            }
            return true;
        }
        return false;
    }
}
