<?php

/**
 * Descripción del Modelo de Datos PlanesOperacionesPredefinidas
 *
 * %%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\Planeador\PlanesOperaciones
 * @author     RONALD ANDRES FABRA JIMENEZ <rfabra@ccsm.org.co>
 * @author     SICAM 20171025 <sicam32@ccsm.org.co>
 * @copyright  2017 Cámara de Comercio de Santa Marta para el Magdalena
 * @license    http://www.php.net/license/3_01.txt  PHP License 3.01
 * @version    201711141053
 * @link       http://sicam.ccsm.org.co/docs/modelos/datos/PlanesOperacionesPredefinidas
 */
 
class PlanesOperacionesPredefinidas extends ModeloDatos {

    const ACTIVO     = 'ACTIVO';
    const DESACTIVO  = 'DESACTIVO';
    const SUSPENDIDO = 'SUSPENDIDO';
    /**
     * Recibe el Identificador del registro de OperacionPredefinida y 
     * devuelve un objeto con sus datos.
     * @param int $operacionPredefinidaID
     * @return Objeto OperacionPredefinida
     */
    public static function datos($operacionPredefinidaID) {
        $sqlQuery = PlanesOperacionesPredefinidasSQL::DATOS_BASICOS . " WHERE operacionPredefinidaID =  ? ; ";
        return SicamDB::selectUnaFila($sqlQuery, array($operacionPredefinidaID));
    }
    /**
     * Recibe el Identificador del registro de OperacionPredefinida y 
     * devuelve un objeto con sus datos completos con todas sus relacion.
     * @param int $operacionPredefinidaID
     * @return Objeto OperacionPredefinida
     */
    public static function datosCompletos($operacionPredefinidaID) {
        $sqlQuery = PlanesOperacionesPredefinidasSQL::DATOS_COMPLETOS . " WHERE operacionPredefinidaID =  ? ; ";
        $OperacionPredefinida = SicamDB::selectUnaFila($sqlQuery, array($operacionPredefinidaID));
        return $OperacionPredefinida;
    }
    /**
     * Devuelve todos los registros de OperacionesPredefinidas, según el estado.
     * Si no se envia el estado devuelve todos los registros 
     * sin importar su estado.
     * @param String $operacionPredefinidaESTADO
     * @return Array de Objetos OperacionesPredefinidas
     */
    public static function todas($operacionPredefinidaESTADO = null) {
        $datos    = array();
        $sqlQuery = PlanesOperacionesPredefinidasSQL::DATOS_COMPLETOS;
        if (!is_null($operacionPredefinidaESTADO)) {
            $sqlQuery .= " WHERE operacionPredefinidaESTADO = ? ";
            array_push($datos, $operacionPredefinidaESTADO);
        }
        $sqlQuery .= " ORDER BY PlanesOperacionesPredefinidas.operacionPredefinidaFCHCREADA DESC ";
        return SicamDB::selectVariasFilas($sqlQuery, $datos);
    }
    /**
     * Devuelve los datos basicos para listas de los registros 
     * de OperacionesPredefinidas, según el estado.
     * Si no se envia el estado devuelve todos los registros 
     * sin importar su estado.
     * @param String $operacionPredefinidaESTADO
     * @return Array de Objetos OperacionesPredefinidas
     */
    public static function paraListas($operacionPredefinidaESTADO = null) {
        $datos    = array();
        $sqlQuery = PlanesOperacionesPredefinidasSQL::DATOS_COMPLETOS;
        if (!is_null($operacionPredefinidaESTADO)) {
            $sqlQuery .= " WHERE operacionPredefinidaESTADO = ? ";
            array_push($datos, $operacionPredefinidaESTADO);
        }
        $sqlQuery .= " ORDER BY PlanesOperacionesPredefinidas.operacionPredefinidaTITULO ASC ";
        return SicamDB::selectVariasFilas($sqlQuery, $datos);
    }
    /**
     * Devuelve los registros de OperacionesPredefinidas en estado ACTIVO.
     * @return Array de Objetos OperacionesPredefinidas
     */
    public static function activos() {
        return self::todos(self::ACTIVO);
    }  
    /**
     * Recibe Todos los datos de necesarios para la creación de un nuevo 
     * registro de OperacionesPredefinidas.
     * @param int $categoriaID Identificador de la Categoria
     * @param String $operacionPredefinidaCODIGO Código de OperacionesPredefinidas 
     * @param String $operacionPredefinidaTITULO Titulo de OperacionesPredefinidas 
     * @param Texto $operacionPredefinidaDESCRIPCION Descripción de OperacionesPredefinidas
     * @param Url $operacionPredefinidaURL Url del archivo asociado al OperacionesPredefinidas
     * @param String $operacionPredefinidaESTADO Estado del registro de OperacionesPredefinidas
     * @return int con el Identificador del Registro OperacionesPredefinidas 
     */
    public static function guardar($rubroID, $centroCostosID, $tipoOperacionID, $claseOperacionID, $operacionPredefinidaCODIGO, $operacionPredefinidaTITULO, $operacionPredefinidaDESCRIPCION) {
        $sqlQuery = PlanesOperacionesPredefinidasSQL::CREAR_REGISTRO;
        return SicamDB::insertFila($sqlQuery, array(
              $rubroID, $centroCostosID, $tipoOperacionID, $claseOperacionID,
              $operacionPredefinidaCODIGO, $operacionPredefinidaTITULO, $operacionPredefinidaDESCRIPCION, 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 $operacionPredefinidaID Identificador del Registro de OperacionesPredefinidas
     * @param int $categoriaID Identificador de la Categoria
     * @param String $operacionPredefinidaCODIGO Código de OperacionesPredefinidas 
     * @param String $operacionPredefinidaTITULO Titulo de OperacionesPredefinidas 
     * @param Texto $operacionPredefinidaDESCRIPCION Descripción de OperacionesPredefinidas
     * @param Url $operacionPredefinidaURL Url del archivo asociado al OperacionesPredefinidas
     * @param String $operacionPredefinidaESTADO Estado del registro de OperacionesPredefinidas
     * @return int cantidad de registros actualziados en la operacion
     */
    public static function actualizar($operacionPredefinidaID, $rubroID, $centroCostosID, $tipoOperacionID, $claseOperacionID, $operacionPredefinidaCODIGO, $operacionPredefinidaTITULO, $operacionPredefinidaDESCRIPCION) {
        $sqlQuery = PlanesOperacionesPredefinidasSQL::ACTUALIZAR_REGISTRO;
        return SicamDB::actualizarFila($sqlQuery, array(
              $rubroID, $centroCostosID, $tipoOperacionID, 
              $claseOperacionID, $operacionPredefinidaCODIGO, 
              $operacionPredefinidaTITULO, $operacionPredefinidaDESCRIPCION, 
              Cliente::usuarioID(),$operacionPredefinidaID
                )
        );
    }
        /**
     * Recibe un identificador de OperacionesPredefinidas y elimina el registro.
     * @param int $operacionPredefinidaID Identificador del registro
     * ha eliminar.
     * @return int Cantidad de registros eliminados
     */
    public static function eliminar($operacionPredefinidaID) {
        $sqlQuery = PlanesOperacionesPredefinidasSQL::ELIMINAR_REGISTRO;
        return SicamDB::actualizarFila($sqlQuery, array($operacionPredefinidaID));
    }
    /**
     * Recibe un identificador de OperacionesPredefinidas y reactiva el registro.
     * @param int $operacionPredefinidaID Identificador del registro
     * @return int Cantidad de registros reactivados
     */
    public static function reactivar($operacionPredefinidaID) {
        return self::cambiarEstado(self::ACTIVO, $operacionPredefinidaID);
    }
    /**
     * Recibe un identificador y el Estado y actualiza el estado del registro
     * @param String $operacionPredefinidaESTADO Nuevo estado del registro.
     * @param int $operacionPredefinidaID Identificador del registro
     * @return int Cantidad de registros desactivados
     */
    public static function cambiarEstado($operacionPredefinidaESTADO, $operacionPredefinidaID) {
        $sqlQuery = PlanesOperacionesPredefinidasSQL::ACUALIZAR_ESTADO;
        return SicamDB::actualizarFila($sqlQuery, array($operacionPredefinidaESTADO, Cliente::usuarioID(),  $operacionPredefinidaID));
    }
    /**
     * Recibe un identificador de OperacionesPredefinidas y desactiva el registro.
     * @param int $operacionPredefinidaID Identificador del registro
     * @return int Cantidad de registros desactivados
     */
    public static function desactivar($operacionPredefinidaID) {
        return self::cambiarEstado(self::DESACTIVO, $operacionPredefinidaID);
    }
    
    /**
     * Devuelve todos los registros de OperacionesPredefinidas, según el estado.
     * Si no se envia el estado devuelve todos los registros 
     * sin importar su estado.
     * @param String $operacionPredefinidaESTADO
     * @return Array de Objetos OperacionesPredefinidas
     */
    public static function porActividadPreconfigurada($actividadPreconfiguradaID) {
        $sqlQuery = PlanesOperacionesPredefinidasSQL::DATOS_COMPLETOS_PORACTIVIDAD. " WHERE tipoActividadID = ? ";
        return SicamDB::selectVariasFilas($sqlQuery, array($actividadPreconfiguradaID));
    }
    
    
    /**
     * Devuelve todos los registros de OperacionesPredefinidas, según el estado.
     * Si no se envia el estado devuelve todos los registros 
     * sin importar su estado.
     * @param String $tipoOPERACION
     * @return Array de Objetos OperacionesPredefinidas
     */
    public static function porTipoOperacion($tipoOPERACION) {
        $sqlQuery = PlanesOperacionesPredefinidasSQL::DATOS_COMPLETOS 
            . " WHERE PlanesOperacionesPredefinidas.tipoOperacionID = ? "
            . " ORDER BY PlanesOperacionesPredefinidas.operacionPredefinidaFCHCREADA DESC ";
        return SicamDB::selectVariasFilas($sqlQuery, array($tipoOPERACION));
    }
    
}
// Generado el 2017-11-14 10:53:56:000000
