<?php

/**
 * Descripción del Modelo de Datos PlanesOperacionesAvances
 *
 * %%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    201712060410
 * @link       http://sicam.ccsm.org.co/docs/modelos/datos/PlanesOperacionesAvances
 */
 
class PlanesOperacionesAvances extends ModeloDatos {

    const ACTIVO     = 'ACTIVO';
    const DESACTIVO  = 'DESACTIVO';
    const SUSPENDIDO = 'SUSPENDIDO';
    /**
     * Recibe el Identificador del registro de PlanOperacionAvance y 
     * devuelve un objeto con sus datos.
     * @param int $operacionAvanceID
     * @return Objeto PlanOperacionAvance
     */
    public static function datos($operacionAvanceID) {
        $sqlQuery = PlanesOperacionesAvancesSQL::DATOS_BASICOS . " WHERE operacionAvanceID =  ? ; ";
        return SicamDB::selectUnaFila($sqlQuery, array($operacionAvanceID));
    }
    /**
     * Recibe el Identificador del registro de planOperacionID y 
     * devuelve un objeto con sus datos.
     * @param int $planOperacionID
     * @return Objeto PlanOperacionAvance
     */
    public static function GastadoTotalPorOperacion($actividadID, $planOperacionID, $tipoPlanID = null) {
        if (!is_null($tipoPlanID)) {
            $sqlQuery = PlanesOperacionesAvancesSQL::TOTAL_AVANCE . "WHERE PlanesActividades.actividadID = ? AND PlanesOperaciones.tipoPlanID = ? AND PlanesOperacionesAvances.planOperacionID = ? ; ";
            return SicamDB::selectUnaFila($sqlQuery, array($actividadID,$tipoPlanID,$planOperacionID));
        }else{
            $sqlQuery = PlanesOperacionesAvancesSQL::TOTAL_AVANCE . "WHERE PlanesActividades.actividadID = ? AND PlanesOperacionesAvances.planOperacionID = ? ; ";
            return SicamDB::selectUnaFila($sqlQuery, array($actividadID,$planOperacionID));
        }
    }
    /**
     * Recibe el Identificador del registro de actividadID y tipoPlanID 
     * devuelve un objeto con sus datos.
     * @param int $actividadID
     * * @param int $tipoPlanID
     * @return Objeto PlanOperacionAvance
     */
    public static function GastadoTotalPorActividad($actividadID,$tipoPlanID = null) {
        if (!is_null($tipoPlanID)) {
            $sqlQuery = PlanesOperacionesAvancesSQL::TOTAL_AVANCE . " WHERE PlanesActividades.actividadID = ? AND PlanesOperaciones.tipoPlanID = ? ; ";
            return SicamDB::selectUnaFila($sqlQuery, array($actividadID,$tipoPlanID));
        }else{
            $sqlQuery = PlanesOperacionesAvancesSQL::TOTAL_AVANCE . " WHERE PlanesActividades.actividadID = ? ; ";
            return SicamDB::selectUnaFila($sqlQuery, array($actividadID));
        }
    }
    /**
     * Recibe el Identificador del registro de accionID y tipoPlanID 
     * devuelve un objeto con sus datos.
     * @param int $accionID
     * * @param int $tipoPlanID
     * @return Objeto PlanOperacionAvance
     */
    public static function GastadoTotalPorAccion($accionID,$tipoPlanID = null) {
        if (!is_null($tipoPlanID)) {
            $sqlQuery = PlanesOperacionesAvancesSQL::TOTAL_AVANCE . " WHERE PlanesAcciones.accionID = ? AND PlanesOperaciones.tipoPlanID = ? ; ";
            return SicamDB::selectUnaFila($sqlQuery, array($accionID,$tipoPlanID));
        }else{
            $sqlQuery = PlanesOperacionesAvancesSQL::TOTAL_AVANCE . " WHERE PlanesAcciones.accionID = ?; ";
            return SicamDB::selectUnaFila($sqlQuery, array($accionID));
        }
    }
    
    /**
     * Recibe el Identificador del registro de PlanOperacionAvance y 
     * devuelve un objeto con sus datos completos con todas sus relacion.
     * @param int $operacionAvanceID
     * @return Objeto PlanOperacionAvance
     */
    /*public static function datosCompletos($operacionAvanceID) {
        $sqlQuery = PlanesOperacionesAvancesSQL::DATOS_COMPLETOS . " WHERE operacionAvanceID =  ? ; ";
        $PlanOperacionAvance = SicamDB::selectUnaFila($sqlQuery, array($operacionAvanceID));
        $PlanOperacionAvance->Items = Items::delPlanOperacionAvance($operacionAvanceID);
        $PlanOperacionAvance->Usuario = Usuarios::datos($PlanOperacionAvance->operacionAvanceUSRCREO);
        return $PlanOperacionAvance;
    }*/
    /**
     * Devuelve todos los registros de PlanOperacionAvances, según el estado.
     * Si no se envia el estado devuelve todos los registros 
     * sin importar su estado.
     * @param String $operacionAvanceESTADO
     * @return Array de Objetos PlanOperacionAvances
     */
    /*public static function todos($operacionAvanceESTADO = null) {
        $datos    = array();
        $sqlQuery = PlanesOperacionesAvancesSQL::DATOS_BASICOS;
        if (!is_null($operacionAvanceESTADO)) {
            $sqlQuery .= " WHERE operacionAvanceESTADO = ? ";
            array_push($datos, $operacionAvanceESTADO);
        }
        return SicamDB::selectVariasFilas($sqlQuery, $datos);
    }*/
    /**
     * Devuelve los registros de PlanOperacionAvances en estado ACTIVO.
     * @return Array de Objetos PlanOperacionAvances
     */
   /* public static function activos() {
        return self::todos(self::ACTIVO);
    }*/  
    /**
     * Recibe Todos los datos de necesarios para la creación de un nuevo 
     * registro de PlanOperacionAvances.
     * @param int $categoriaID Identificador de la Categoria
     * @param String $operacionAvanceCODIGO Código de PlanOperacionAvances 
     * @param String $operacionAvanceTITULO Titulo de PlanOperacionAvances 
     * @param Texto $operacionAvanceDESCRIPCION Descripción de PlanOperacionAvances
     * @param Url $operacionAvanceURL Url del archivo asociado al PlanOperacionAvances
     * @param String $operacionAvanceESTADO Estado del registro de PlanOperacionAvances
     * @return int con el Identificador del Registro PlanOperacionAvances 
     */
    public static function guardar($planOperacionID, $estadoOperacionID, $operacionAvanceFCHAVANCE, $operacionAvanceLOGRADO, $operacionAvanceEJECUTADO, $operacionAvanceCUMPLIMIENTO) {
        $sqlQuery = PlanesOperacionesAvancesSQL::CREAR_REGISTRO;
        return SicamDB::insertFila($sqlQuery, array(
              $planOperacionID, $estadoOperacionID, $operacionAvanceFCHAVANCE, $operacionAvanceLOGRADO,
              $operacionAvanceEJECUTADO, $operacionAvanceCUMPLIMIENTO, 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 $operacionAvanceID Identificador del Registro de PlanOperacionAvances
     * @param int $categoriaID Identificador de la Categoria
     * @param String $operacionAvanceCODIGO Código de PlanOperacionAvances 
     * @param String $operacionAvanceTITULO Titulo de PlanOperacionAvances 
     * @param Texto $operacionAvanceDESCRIPCION Descripción de PlanOperacionAvances
     * @param Url $operacionAvanceURL Url del archivo asociado al PlanOperacionAvances
     * @param String $operacionAvanceESTADO Estado del registro de PlanOperacionAvances
     * @return int cantidad de registros actualziados en la operacion
     */
    /*public static function actualizar($operacionAvanceID, $categoriaID, $operacionAvanceCODIGO, $operacionAvanceTITULO, $operacionAvanceDESCRIPCION, $operacionAvanceURL, $operacionAvanceESTADO) {
        $sqlQuery = PlanesOperacionesAvancesSQL::ACTUALIZAR_REGISTRO;
        return SicamDB::actualizarFila($sqlQuery, array(
              $categoriaID, $operacionAvanceCODIGO,
              $operacionAvanceTITULO, $operacionAvanceDESCRIPCION, $operacionAvanceURL,
              $operacionAvanceESTADO, Cliente::usuarioID(), $operacionAvanceID
                )
        );
    }*/
        /**
     * Recibe un identificador de PlanOperacionAvances y elimina el registro.
     * @param int $operacionAvanceID Identificador del registro
     * ha eliminar.
     * @return int Cantidad de registros eliminados
     */
    /*public static function eliminar($operacionAvanceID) {
        $sqlQuery = PlanOperacionAvancesSQL::ELIMINAR_REGISTRO;
        return SicamDB::actualizarFila($sqlQuery, array($operacionAvanceID));
    }*/
    /**
     * Recibe un identificador de PlanOperacionAvances y reactiva el registro.
     * @param int $operacionAvanceID Identificador del registro
     * @return int Cantidad de registros reactivados
     */
    /*public static function reactivar($operacionAvanceID) {
        return self::cambiarEstado(self::ACTIVO, $operacionAvanceID);
    }*/
    /**
     * Recibe un identificador y el Estado y actualiza el estado del registro
     * @param String $operacionAvanceESTADO Nuevo estado del registro.
     * @param int $operacionAvanceID Identificador del registro
     * @return int Cantidad de registros desactivados
     */
    /*public static function cambiarEstado($operacionAvanceESTADO, $operacionAvanceID) {
        $sqlQuery = PlanesOperacionesAvancesSQL::ACUALIZAR_ESTADO;
        return SicamDB::actualizarFila($sqlQuery, array($operacionAvanceESTADO, $operacionAvanceID));
    }*/
    /**
     * Recibe un identificador de PlanOperacionAvances y desactiva el registro.
     * @param int $operacionAvanceID Identificador del registro
     * @return int Cantidad de registros desactivados
     */
    /*public static function desactivar($operacionAvanceID) {
        return self::cambiarEstado(self::DESACTIVO, $operacionAvanceID);
    }*/
    
     public static function datosporOperacion($operacionID) {
        $sqlQuery = PlanesOperacionesAvancesSQL::DATOS_BASICOS . " WHERE PlanesOperacionesAvances.planOperacionID =  ? ; ";
        return SicamDB::selectUnaFila($sqlQuery, array($operacionID));
    }
    
}
// Generado el 2017-12-06 04:10:13:000000
