<?php
/************************************************************************************************************
 * DEV: CONTRALORIA DEL ESTADO.
 * MODULO: Logistica
 * PROGRAMADORES.____________________________________________________________________________________________
 * | # | NOMBRE.              | CORREO.                                 | TELEFONO.         | CONTRALORIA
 * | 1 | Fernando Rosillo     | f.rosillo@contraloriamonagas.gob.ve     | 0414-8807980      | MONAGAS
 * | 2 |
 * |_________________________________________________________________________________________________________
 * **********************************************************************************************************/
require_once RUTA_MODELO.'miscelaneoModelo.php';
class planEstrategicoModelo extends Modelo
{
    private $atIdUsuario;
    public function __construct()
    {
        parent::__construct();
        $this->atIdUsuario = Session::metObtener('idUsuario');
        $this->atMiscelaneoModelo = new miscelaneoModelo();
    }

    public function metMostrarPlanEst($idPlanEst){
        $mostrarplanEstrategico = $this->_db->query("
              SELECT
                po_b005_plan_estrategico.*
              FROM
                po_b005_plan_estrategico
              WHERE
                po_b005_plan_estrategico.pk_num_plan_estrategico='$idPlanEst' 
        ");
        $mostrarplanEstrategico->setFetchMode(PDO::FETCH_ASSOC);
        return $mostrarplanEstrategico->fetch();
    }

    public function metMostrarPlanEstDet($idPlanEst){
        $mostrarplanEstrategico = $this->_db->query("
              SELECT
                po_b006_plan_estrategico_detalle.*
              FROM
                po_b006_plan_estrategico_detalle
              WHERE
                po_b006_plan_estrategico_detalle.fk_pob005_num_plan_estrategico='$idPlanEst' 
              AND pk_num_plan_estrategico_detalle IN (SELECT MAX(pk_num_plan_estrategico_detalle) FROM po_b006_plan_estrategico_detalle 
                    WHERE po_b006_plan_estrategico_detalle.fk_pob005_num_plan_estrategico='$idPlanEst' GROUP BY codigo_objetivo)
        ");
        $mostrarplanEstrategico->setFetchMode(PDO::FETCH_ASSOC);
        return $mostrarplanEstrategico->fetchAll();
    }

    public function metListarDependencias(){
        $mostrarplanEstrategico = $this->_db->query("
              SELECT
                a004_dependencia.*
              FROM
                a004_dependencia
        ");
        $mostrarplanEstrategico->setFetchMode(PDO::FETCH_ASSOC);
        return $mostrarplanEstrategico->fetchAll();
    }

    public function metCrearPlanEst($datos)
    {
        $this->_db->beginTransaction();
        $registroplanEstrategico = $this->_db->prepare("
          INSERT INTO
            po_b005_plan_estrategico
          SET
            ind_periodo=:ind_periodo,
            num_estatus=:num_estatus,
            fec_ultima_modificacion=NOW(),
            fk_a018_num_seguridad_usuario='$this->atIdUsuario'
           ");

        $registroplanEstrategico->execute(array(
            'ind_periodo'=>$datos['periodo'],
            'num_estatus'=>$datos['estado'],
        ));

        $idRegistro= $this->_db->lastInsertId();

        $registroplanEstrategico2 = $this->_db->prepare("
          INSERT INTO
            po_b006_plan_estrategico_detalle
          SET
          ind_tipo=:ind_tipo,
          ind_objetivo=:ind_objetivo,
          codigo_objetivo=:codigo_objetivo,
          fk_pob005_num_plan_estrategico=:fk_pob005_num_plan_estrategico,
          fec_ultima_modificacion=NOW(),
          fk_a018_num_seguridad_usuario='$this->atIdUsuario'
           ");

        foreach ($datos['opcion'] as $key=>$opcion) {
            $registroplanEstrategico2->execute(array(
                'ind_tipo'=>$opcion,
                'ind_objetivo'=>$datos['objetivo'][$key],
                'codigo_objetivo'=>$datos['codigo'][$key],
                'fk_pob005_num_plan_estrategico'=>$idRegistro,
            ));
        }

        $fallaTansaccion = $registroplanEstrategico->errorInfo();
        $fallaTansaccion2 = $registroplanEstrategico2->errorInfo();

        if(!empty($fallaTansaccion[1]) && !empty($fallaTansaccion[2])){
            $this->_db->rollBack();
            return $fallaTansaccion;
        }elseif(!empty($fallaTansaccion2[1]) && !empty($fallaTansaccion2[2])){
            $this->_db->rollBack();
            return $fallaTansaccion2;
        }else{
            $this->_db->commit();
            return $idRegistro;
        }
    }

    public function metModificarPlanEst($idPlanEst,$datos)
    {
        $this->_db->beginTransaction();

        $modificarRegistro = $this->_db->prepare("
          UPDATE
            po_b005_plan_estrategico
          SET
            ind_periodo=:ind_periodo,
            num_estatus=:num_estatus,
            fec_ultima_modificacion=NOW(),
            fk_a018_num_seguridad_usuario='$this->atIdUsuario'
            WHERE pk_num_plan_estrategico=:pk_num_plan_estrategico
           ");

        $modificarRegistro->execute(array(
            'ind_periodo'=>$datos['periodo'],
            'num_estatus'=>$datos['estado'],
            'pk_num_plan_estrategico'=>$idPlanEst
        ));

        $this->_db->query("DELETE FROM po_b006_plan_estrategico_detalle WHERE fk_pob005_num_plan_estrategico='$idPlanEst'");
        $this->_db->query("ALTER TABLE po_b006_plan_estrategico_detalle AUTO_INCREMENT=1");

        $modificarRegistro2 = $this->_db->prepare("
          INSERT INTO
            po_b006_plan_estrategico_detalle
          SET
          ind_tipo=:ind_tipo,
          ind_objetivo=:ind_objetivo,
          codigo_objetivo=:codigo_objetivo,
          fk_pob005_num_plan_estrategico=:fk_pob005_num_plan_estrategico,
          fec_ultima_modificacion=NOW(),
          fk_a018_num_seguridad_usuario='$this->atIdUsuario'
           ");

        foreach ($datos['opcion'] as $key=>$opcion) {
            $modificarRegistro2->execute(array(
                'ind_tipo'=>$opcion,
                'ind_objetivo'=>$datos['objetivo'][$key],
                'codigo_objetivo'=>$datos['codigo'][$key],
                'fk_pob005_num_plan_estrategico'=>$idPlanEst,
            ));
        }

        $error = $modificarRegistro->errorInfo();
        $error2 = $modificarRegistro2->errorInfo();
        if(!empty($error[1]) && !empty($error[2])){
            $this->_db->rollBack();
            return $error;
        }elseif(!empty($error2[1]) && !empty($error2[2])){
            $this->_db->rollBack();
            return $error2;
        }else{
            $this->_db->commit();
            return $idPlanEst;
        }
    }

    public function metEliminarPlanEst($idPlanEst){
        $this->_db->beginTransaction();
        $eliminaridplanEstrategico=$this->_db->prepare("
            DELETE FROM
            po_b005_plan_estrategico
            WHERE
            pk_num_plan_estrategico=:pk_num_plan_estrategico
            ");
        $eliminaridplanEstrategico->execute(array(
            'pk_num_plan_estrategico'=>$idPlanEst
        ));

        $error = $eliminaridplanEstrategico->errorInfo();
        if(!empty($error[1]) && !empty($error[2])){
            $this->_db->rollBack();
            return $error;
        }else{
            $this->_db->commit();
            return $idPlanEst;
        }
    }

}

?>