<?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 productoModelo extends Modelo
{
    private $atIdUsuario;
    public function __construct()
    {
        parent::__construct();
        $this->atIdUsuario = Session::metObtener('idUsuario');
        $this->atMiscelaneoModelo = new miscelaneoModelo();
    }

    public function metMostrarProducto($idProducto){
        $mostrarProducto = $this->_db->query("
              SELECT
                po_b004_productos.*
              FROM
                po_b004_productos
              WHERE
                po_b004_productos.pk_num_productos='$idProducto'
        ");
        $mostrarProducto->setFetchMode(PDO::FETCH_ASSOC);
        return $mostrarProducto->fetch();
    }

    public function metListarActividades(){
        $mostrarActividad = $this->_db->query("
              SELECT
                po_b003_actividad.*
              FROM
                po_b003_actividad
                INNER JOIN a019_seguridad_dependencia AS seguridad ON seguridad.fk_a004_num_dependencia = po_b003_actividad.fk_a004_num_dependencia
                      AND seguridad.fk_a018_num_seguridad_usuario = '".Session::metObtener('idUsuario')."' AND seguridad.fk_a015_num_seguridad_aplicacion = '22'
        ");
        $mostrarActividad->setFetchMode(PDO::FETCH_ASSOC);
        return $mostrarActividad->fetchAll();
    }

    public function metCrearProducto($datos)
    {
        $this->_db->beginTransaction();
        $registroProducto = $this->_db->prepare("
          INSERT INTO
            po_b004_productos
          SET
              cod_producto=:cod_producto,
              ind_descripcion=:ind_descripcion,
              fec_creacion=NOW(),
              fk_a006_num_miscelaneos_tipo_producto=:fk_a006_num_miscelaneos_tipo_producto,
              ind_observacion_general=:ind_observacion_general,
              fk_pob003_num_actividad=:fk_pob003_num_actividad,
              fk_a018_num_seguridad_usuario='$this->atIdUsuario',
              fec_ultima_modificacion=NOW()
           ");

        $registroProducto->execute(array(
            'cod_producto'=>$datos['codigo'],
            'ind_descripcion'=>$datos['descripcion'],
            'fk_a006_num_miscelaneos_tipo_producto'=>$datos['tipo_producto'],
            'ind_observacion_general'=>$datos['observacion'],
            'fk_pob003_num_actividad'=>$datos['actividad'],

        ));

        $idRegistro= $this->_db->lastInsertId();
        $fallaTansaccion = $registroProducto->errorInfo();

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

    }

    public function metModificarProducto($idProducto,$datos)
    {
        $this->_db->beginTransaction();
        $modificarRegistro=$this->_db->prepare("
              UPDATE
                  po_b004_productos
              SET
                  cod_producto=:cod_producto,
                  ind_descripcion=:ind_descripcion,
                  fk_a006_num_miscelaneos_tipo_producto=:fk_a006_num_miscelaneos_tipo_producto,
                  ind_observacion_general=:ind_observacion_general,
                  fk_pob003_num_actividad=:fk_pob003_num_actividad,
                  fk_a018_num_seguridad_usuario='$this->atIdUsuario',
                  fec_ultima_modificacion=NOW()
              WHERE
                  pk_num_productos='$idProducto'
            ");
        $modificarRegistro->execute(array(
            'cod_producto'=>$datos['codigo'],
            'ind_descripcion'=>$datos['descripcion'],
            'fk_a006_num_miscelaneos_tipo_producto'=>$datos['tipo_producto'],
            'ind_observacion_general'=>$datos['observacion'],
            'fk_pob003_num_actividad'=>$datos['actividad'],
        ));
        $error = $modificarRegistro->errorInfo();
        if(!empty($error[1]) && !empty($error[2])){
            $this->_db->rollBack();
            return $error;
        }else{
            $this->_db->commit();
            return $idProducto;
        }
    }

    public function metEliminarProducto($idProducto){
        $this->_db->beginTransaction();
        $eliminaridProducto=$this->_db->prepare("
            DELETE FROM
            po_b004_productos
            WHERE
            pk_num_productos=:pk_num_productos
            ");
        $eliminaridProducto->execute(array(
            'pk_num_productos'=>$idProducto
        ));

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

}

?>