<?php

class GestionAporteVoluntario extends CActiveRecord
{
    public function tableName()
    {
        return 'retenciones.gestion_aporte_voluntario';
    }

    public function rules()
    {
        return array(
            array('fecha_apertura, fecha_cierre', 'required'),
        );
    }

    public function attributeLabels()
    {
        return array(
            'id' => 'ID',
            'fecha_apertura' => 'Fecha de apertura',
            'fecha_cierre' => 'Fecha de cierre',
            'estatus' => 'Estatus',
        );
    }

    public function search($id)
    {
        $criteria = new CDbCriteria;

        $criteria->compare('fecha_apertura', $this->fecha_apertura);
        $criteria->compare('fecha_cierre', $this->fecha_cierre);
        $criteria->compare('estatus', $this->estatus);
        $criteria->addCondition("id_datos_txt_integrado={$id}");

        return new CActiveDataProvider($this, array(
            'criteria' => $criteria,
        ));
    }

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

    public function cerrar()
    {
        $this->estatus = 2;

        return $this->save();
    }

    public function checkPeriodo($idTxtIntegrado)
    {
        $periodo = static::model()->find('id_datos_txt_integrado=:id AND estatus=1', array('id' => $idTxtIntegrado));

        if (is_null($periodo)) {
            return false;
        }

        return $this->check_in_range($periodo->fecha_apertura, $periodo->fecha_cierre, date('Y-m-d'));
    }

    public function cerrado()
    {
        if ($this->fecha_apertura == null) {
            return true;
        }
        return $this->estatus == 2;
    }

    private function check_in_range($start_date, $end_date, $date_from_user)
    {
        // Convert to timestamp
        $start_ts = strtotime($start_date);
        $end_ts = strtotime($end_date);
        $user_ts = strtotime($date_from_user);

        // Check that user date is between start & end
        return (($user_ts >= $start_ts) && ($user_ts <= $end_ts));
    }
}
