<?php

/**
 * Descripción del Modelo vigencia
 * 
 * Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Donec odio. 
 * Quisque volutpat mattis eros. Nullam malesuada erat ut turpis. 
 * 
 * @package Constructor\Modelo
 * @license GPL
 * @author Diseñado por jpllinas@ccsm.org.co; Generado por SICAM.
 * 
 */
class Vigencias {

    const VIGENTE     = 'VIGENTE';
    const VENCIDA     = 'VENCIDA';
    const PLANEADA     = 'PLANEADA';
    const PREPARACION     = 'PREPARACION';

    /**
     * Devuleve el objeto con los datos de la Vigencia Actual.
     * @return Objeto Vigencias
     */
    public static function actual() {
        $sqlQuery = VigenciasSQL::DATOS_COMPLETOS . " WHERE vigenciaESTADO =  ? ; ";
        return SicamDB::selectUnaFila($sqlQuery, array(self::VIGENTE));
    }
    /**
     * Recibe el Identificador del registro de Vigencias y 
     * devuelve un objeto con sus datos.
     * @param int $vigenciaID
     * @return Objeto Vigencias
     */
    public static function datos($vigenciaID) {
        $sqlQuery = VigenciasSQL::DATOS_COMPLETOS . " WHERE vigenciaID =  ? ; ";
        return SicamDB::selectUnaFila($sqlQuery, array($vigenciaID));
    }

    /**
     * Devuelve todos los registros de Vigencias, según el estado.
     * Si no se envia el estado devuelve todos los registros 
     * sin importar su estado.
     * @param String $vigenciaESTADO
     * @return Array de Objetos Vigencias
     */
    public static function todos($vigenciaESTADO = null) {
        $datos    = array();
        $sqlQuery = VigenciasSQL::DATOS_BASICOS;
        if (!is_null($vigenciaESTADO)) {
            $sqlQuery .= " WHERE vigenciaESTADO = ? ";
            array_push($datos, $vigenciaESTADO);
        }
        return SicamDB::selectVariasFilas($sqlQuery);
    }

    /**
     * Devuelve los registros de Vigencias en estado ACTIVO.
     * @return Array de Objetos Vigencias
     */
    public static function vigentes() {
        return self::todos(self::VIGENTE);
    }

    /**
     * Devuelve los registros de Vigencias en estado DESACTIVO.
     * @return Array de Objetos Vigencias
     */
    public static function vencidas() {
        return self::todos(self::VENCIDA);
    }

    /**
     * Recibe Todos los datos de necesarios para la creación de un nuevo 
     * registro de Vigencias.
     * @param int $categoriaID Identificador de la Categoria
     * @param String $vigenciaCODIGO Código de Vigencias 
     * @param String $vigenciaTITULO Titulo de Vigencias 
     * @param Texto $vigenciaDESCRIPCION Descripción de Vigencias
     * @param Url $vigenciaURL Url del archivo asociado al Vigencias
     * @param String $vigenciaESTADO Estado del registro de Vigencias
     * @return int con el Identificador del Registro Vigencias 
     */
    public static function guardar($categoriaID, $vigenciaCODIGO, $vigenciaTITULO, $vigenciaDESCRIPCION, $vigenciaURL, $vigenciaESTADO) {
        $sqlQuery = VigenciasSQL::CREAR_REGISTRO;
        return SicamDB::insertFila($sqlQuery, array(
              $categoriaID, $vigenciaCODIGO, $vigenciaTITULO, $vigenciaDESCRIPCION,
              $vigenciaURL, $vigenciaESTADO, Cliente::usuarioID()
                )
        );
    }

    /**
     * Recibe los todos los datos del registro para ser actualizados, junto con
     * el identificador del registro que se va ha actualizar.
     * @param int $vigenciaID Identificador del Registro de Vigencias
     * @param int $categoriaID Identificador de la Categoria
     * @param String $vigenciaCODIGO Código de Vigencias 
     * @param String $vigenciaTITULO Titulo de Vigencias 
     * @param Texto $vigenciaDESCRIPCION Descripción de Vigencias
     * @param Url $vigenciaURL Url del archivo asociado al Vigencias
     * @param String $vigenciaESTADO Estado del registro de Vigencias
     * @return int cantidad de registros actualziados en la operacion
     */
    public static function actualizar($vigenciaID, $categoriaID, $vigenciaCODIGO, $vigenciaTITULO, $vigenciaDESCRIPCION, $vigenciaURL, $vigenciaESTADO) {
        $sqlQuery = VigenciasSQL::ACTUALIZAR_REGISTRO;
        return SicamDB::actualizarFila($sqlQuery, array(
              $categoriaID, $vigenciaCODIGO,
              $vigenciaTITULO, $vigenciaDESCRIPCION, $vigenciaURL,
              $vigenciaESTADO, Cliente::usuarioID(), $vigenciaID
                )
        );
    }

    /**
     * Recibe un identificador de Vigencias y elimina el registro.
     * @param int $vigenciaID Identificador del registro
     * ha eliminar.
     * @return int Cantidad de registros eliminados
     */
    public static function eliminar($vigenciaID) {
        $sqlQuery = VigenciasSQL::ELIMINAR_REGISTRO;
        return SicamDB::actualizarFila($sqlQuery, array($vigenciaID));
    }

    /**
     * Recibe un identificador de Vigencias y desactiva el registro.
     * @param int $vigenciaID Identificador del registro
     * @return int Cantidad de registros desactivados
     */
    public static function desactivar($vigenciaID) {
        return self::cambiarEstado(self::DESACTIVO, $vigenciaID);
    }

    /**
     * Recibe un identificador de Vigencias y reactiva el registro.
     * @param int $vigenciaID Identificador del registro
     * @return int Cantidad de registros reactivados
     */
    public static function reactivar($vigenciaID) {
        return self::cambiarEstado(self::ACTIVO, $vigenciaID);
    }

    /**
     * Recibe un identificador y el Estado y actualiza el estado del registro
     * @param String $vigenciaESTADO Nuevo estado del registro.
     * @param int $vigenciaID Identificador del registro
     * @return int Cantidad de registros desactivados
     */
    public static function cambiarEstado($vigenciaESTADO, $vigenciaID) {
        $sqlQuery = VigenciasSQL::ACUALIZAR_ESTADO;
        return SicamDB::actualizarFila($sqlQuery, array($vigenciaESTADO, $vigenciaID));
    }

}

