<?php

/**
 * Descripción del Modelo TMPLModelo
 * 
 * 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 TMPLModelo {
    
    const ENCABEZADO = <<<php
<?php

/**
 * Descripción del Modelo de Datos %%MODELO%%
 *
 * %%DESC_MODELO%%
 *
 * Licenciado bajo la Licencia Apache, Versión 2.0;
 * Usted no puede usar este archivo excepto en conformidad con la Licencia.
 * Usted puede obtener una copia de la Licencia en:
 *      http://www.php.net/license/3_01.txt. 
 * A menos que sea requerido por la ley aplicable o acordado por escrito, el software
 * Distribuido bajo la licencia se distribuye en una "AS IS" o  "COMO ESTA" BASE,
 * SIN GARANTÍAS NI CONDICIONES DE NINGÚN TIPO, expresas o implícitas.
 * Consulte la Licencia para los permisos y Limitaciones bajo la Licencia.
 *
 * @package    Modelos\Datos\%%COMPONENTE%%
 * @author     %%NOMBRE_COLABORADOR%% <%%CORREO_COLABORADOR%%>
 * @author     SICAM %%VERSION_SICAM%% <%%CORREO_SICAM%%>
 * @copyright  %%ANIO_CREACION%% Cámara de Comercio de Santa Marta para el Magdalena
 * @license    http://www.php.net/license/3_01.txt  PHP License 3.01
 * @version    %%VERSION_ARCHIVO%%
 * @link       modelos/datos/%%COMPONENTE%%/%%MODELO%%/
 */
 
class %%MODELO%% extends ModeloDatos {

    const ACTIVO     = 'ACTIVO';
    const DESACTIVO  = 'DESACTIVO';
    const SUSPENDIDO = 'SUSPENDIDO';

php;

    const DATOS = <<<php
    /**
     * Recibe el Identificador del registro de %%ENTIDAD%% y 
     * devuelve un objeto con sus datos.
     * @param int $%%PREFIJODATOS%%ID
     * @return Objeto %%ENTIDAD%%
     */
    public static function datos($%%PREFIJODATOS%%ID) {
        \$sqlQuery = %%MODELO%%SQL::DATOS_BASICOS . " WHERE %%PREFIJODATOS%%ID =  ? ; ";
        return SicamDB::selectUnaFila(\$sqlQuery, array($%%PREFIJODATOS%%ID));
    }

php;
    const DATOS_COMPLETOS = <<<php
    /**
     * Recibe el Identificador del registro de %%ENTIDAD%% y 
     * devuelve un objeto con sus datos completos con todas sus relacion.
     * @param int $%%PREFIJODATOS%%ID
     * @return Objeto %%ENTIDAD%%
     */
    public static function datosCompletos($%%PREFIJODATOS%%ID) {
        \$sqlQuery = %%MODELO%%SQL::DATOS_COMPLETOS . " WHERE %%PREFIJODATOS%%ID =  ? ; ";
        $%%ENTIDAD%% = SicamDB::selectUnaFila(\$sqlQuery, array($%%PREFIJODATOS%%ID));
        $%%ENTIDAD%%->Items = Items::del%%ENTIDAD%%($%%PREFIJODATOS%%ID);
        $%%ENTIDAD%%->Usuario = Usuarios::datos($%%ENTIDAD%%->%%PREFIJODATOS%%USRCREO);
        return $%%ENTIDAD%%;
    }

php;

    const TODOS_REGISTROS  = <<<php
    /**
     * Devuelve todos los registros de %%ENTIDADES%%, según el estado.
     * Si no se envia el estado devuelve todos los registros 
     * sin importar su estado.
     * @param String $%%PREFIJODATOS%%ESTADO
     * @return Array de Objetos %%ENTIDADES%%
     */
    public static function todos%%SUFIJO_VISTA%%($%%PREFIJODATOS%%ESTADO = null) {
        \$datos    = array();
        \$sqlQuery = %%MODELO%%SQL::DATOS_BASICOS;
        if (!is_null($%%PREFIJODATOS%%ESTADO)) {
            \$sqlQuery .= " WHERE %%PREFIJODATOS%%ESTADO = ? ";
            array_push(\$datos, $%%PREFIJODATOS%%ESTADO);
        }
        return SicamDB::selectVariasFilas(\$sqlQuery, \$datos);
    }

php;

    const TODOS_ACTIVOS  = <<<php
    /**
     * Devuelve los registros de %%ENTIDADES%% en estado ACTIVO.
     * @return Array de Objetos %%ENTIDADES%%
     */
    public static function activos() {
        return self::todos(self::ACTIVO);
    }  

php;

    const TODOS_DESACTIVOS  = <<<php
    /**
     * Devuelve los registros de %%ENTIDADES%% en estado DESACTIVO.
     * @return Array de Objetos %%ENTIDADES%%
     */
    public static function desactivos() {
        return self::todos(self::DESACTIVO);
    }

php;

    const GUARDAR_DATOS  = <<<php
    /**
     * Recibe Todos los datos de necesarios para la creación de un nuevo 
     * registro de %%ENTIDADES%%.
     * @param int \$categoriaID Identificador de la Categoria
     * @param String $%%PREFIJODATOS%%CODIGO Código de %%ENTIDADES%% 
     * @param String $%%PREFIJODATOS%%TITULO Titulo de %%ENTIDADES%% 
     * @param Texto $%%PREFIJODATOS%%DESCRIPCION Descripción de %%ENTIDADES%%
     * @param Url $%%PREFIJODATOS%%URL Url del archivo asociado al %%ENTIDADES%%
     * @param String $%%PREFIJODATOS%%ESTADO Estado del registro de %%ENTIDADES%%
     * @return int con el Identificador del Registro %%ENTIDADES%% 
     */
    public static function guardar(\$categoriaID, $%%PREFIJODATOS%%CODIGO, $%%PREFIJODATOS%%TITULO, $%%PREFIJODATOS%%DESCRIPCION, $%%PREFIJODATOS%%URL, $%%PREFIJODATOS%%ESTADO) {
        \$sqlQuery = %%MODELO%%SQL::CREAR_REGISTRO;
        return SicamDB::insertFila(\$sqlQuery, array(
              \$categoriaID, $%%PREFIJODATOS%%CODIGO, $%%PREFIJODATOS%%TITULO, $%%PREFIJODATOS%%DESCRIPCION,
              $%%PREFIJODATOS%%URL, $%%PREFIJODATOS%%ESTADO, Cliente::usuarioID()
                )
        );
    }

php;

    const ACTUALIZAR_DATOS = <<<php
    /**
     * Recibe los todos los datos del registro para ser actualizados, junto con
     * el identificador del registro que se va ha actualizar.
     * @param int $%%PREFIJODATOS%%ID Identificador del Registro de %%ENTIDADES%%
     * @param int \$categoriaID Identificador de la Categoria
     * @param String $%%PREFIJODATOS%%CODIGO Código de %%ENTIDADES%% 
     * @param String $%%PREFIJODATOS%%TITULO Titulo de %%ENTIDADES%% 
     * @param Texto $%%PREFIJODATOS%%DESCRIPCION Descripción de %%ENTIDADES%%
     * @param Url $%%PREFIJODATOS%%URL Url del archivo asociado al %%ENTIDADES%%
     * @param String $%%PREFIJODATOS%%ESTADO Estado del registro de %%ENTIDADES%%
     * @return int cantidad de registros actualziados en la operacion
     */
    public static function actualizar($%%PREFIJODATOS%%ID, \$categoriaID, $%%PREFIJODATOS%%CODIGO, $%%PREFIJODATOS%%TITULO, $%%PREFIJODATOS%%DESCRIPCION, $%%PREFIJODATOS%%URL, $%%PREFIJODATOS%%ESTADO) {
        \$sqlQuery = %%MODELO%%SQL::ACTUALIZAR_REGISTRO;
        return SicamDB::actualizarFila(\$sqlQuery, array(
              \$categoriaID, $%%PREFIJODATOS%%CODIGO,
              $%%PREFIJODATOS%%TITULO, $%%PREFIJODATOS%%DESCRIPCION, $%%PREFIJODATOS%%URL,
              $%%PREFIJODATOS%%ESTADO, Cliente::usuarioID(), $%%PREFIJODATOS%%ID
                )
        );
    }
    
php;

    const ELIMINAR_DATOS = <<<php
    /**
     * Recibe un identificador de %%ENTIDADES%% y elimina el registro.
     * @param int $%%PREFIJODATOS%%ID Identificador del registro
     * ha eliminar.
     * @return int Cantidad de registros eliminados
     */
    public static function eliminar($%%PREFIJODATOS%%ID) {
        \$sqlQuery = %%ENTIDADES%%SQL::ELIMINAR_REGISTRO;
        return SicamDB::actualizarFila(\$sqlQuery, array($%%PREFIJODATOS%%ID));
    }

php;

    const DESACTIVAR_DATOS = <<<php
    /**
     * Recibe un identificador de %%ENTIDADES%% y desactiva el registro.
     * @param int $%%PREFIJODATOS%%ID Identificador del registro
     * @return int Cantidad de registros desactivados
     */
    public static function desactivar($%%PREFIJODATOS%%ID) {
        return self::cambiarEstado(self::DESACTIVO, $%%PREFIJODATOS%%ID);
    }

php;

    const REACTIVAR_DATOS = <<<php
    /**
     * Recibe un identificador de %%ENTIDADES%% y reactiva el registro.
     * @param int $%%PREFIJODATOS%%ID Identificador del registro
     * @return int Cantidad de registros reactivados
     */
    public static function reactivar($%%PREFIJODATOS%%ID) {
        return self::cambiarEstado(self::ACTIVO, $%%PREFIJODATOS%%ID);
    }

php;

    const CAMBIAR_ESTADO = <<<php
    /**
     * Recibe un identificador y el Estado y actualiza el estado del registro
     * @param String $%%PREFIJODATOS%%ESTADO Nuevo estado del registro.
     * @param int $%%PREFIJODATOS%%ID Identificador del registro
     * @return int Cantidad de registros desactivados
     */
    public static function cambiarEstado($%%PREFIJODATOS%%ESTADO, $%%PREFIJODATOS%%ID) {
        \$sqlQuery = %%MODELO%%SQL::ACUALIZAR_ESTADO;
        return SicamDB::actualizarFila(\$sqlQuery, array($%%PREFIJODATOS%%ESTADO, $%%PREFIJODATOS%%ID));
    }

php;



    const PIECERA = <<<php
    
}
// Generado el %%FECHA_CREACION%%
php;



}

