File "LegalModel.php"

Full Path: C:/wamp64/www/AVIDOTAPP/models/LegalModel.php
File size: 3.65 KB
MIME-type: text/x-php
Charset: utf-8

<?php
class LegalModel {
    private $conexion;

    public function __construct() {
        $database = new Database();
        $this->conexion = $database->connect();
    }

    public function insertarEmpleadoConDotacion($datosEmpleado, $dotaciones) {
        mysqli_autocommit($this->conexion, FALSE);
        try {
            // Escapar datos de empleado
            $fingreso   = mysqli_real_escape_string($this->conexion, $datosEmpleado['fingreso']);
            $ident      = mysqli_real_escape_string($this->conexion, $datosEmpleado['ident']);
            $nombre     = mysqli_real_escape_string($this->conexion, $datosEmpleado['nombre']);
            $ccosto     = mysqli_real_escape_string($this->conexion, $datosEmpleado['ccosto']);
            $area       = mysqli_real_escape_string($this->conexion, $datosEmpleado['area']);
            $cargo      = mysqli_real_escape_string($this->conexion, $datosEmpleado['cargo']);
            $tallas     = [ $datosEmpleado['tallaPant'], $datosEmpleado['tallaCami'], $datosEmpleado['tallaBot'], 
                            $datosEmpleado['tallaChaq'], $datosEmpleado['tallaImp'] ];
            $tpContrato = mysqli_real_escape_string($this->conexion, $datosEmpleado['tpContrato']);
            $tpEntrega  = mysqli_real_escape_string($this->conexion, $datosEmpleado['tpEntrega']);

            // 1. Insertar en tabla empleado
            $q = "INSERT INTO empleado (fingreso, cedula, nombre, ccosto, area, cargo, tallaPant, tallaCami, 
                                       tallaBot, tallaChaq, tallaImp, tpContrato, ESTADO, tpEntrega)
                  VALUES ('$fingreso', '$ident', '$nombre', '$ccosto', '$area', '$cargo', '$tallas[0]', '$tallas[1]', 
                          '$tallas[2]', '$tallas[3]', '$tallas[4]', '$tpContrato', 'Pendiente', '$tpEntrega')";

            if (!mysqli_query($this->conexion, $q)) throw new Exception(mysqli_error($this->conexion));

            $empleado_id = mysqli_insert_id($this->conexion); // Obtener ID generado

            // 2. Insertar en tabla dotación
            foreach ($dotaciones as $dot) {
                $codigo_epp = mysqli_real_escape_string($this->conexion, $dot['codigo']);
                $cant       = intval($dot['cantidad']);
                
                // Buscar descripción en inventario usando el código
                $q_inv = "SELECT DESCRIPCION FROM inventario WHERE CODIGO = '$codigo_epp' LIMIT 1";
                $result_inv = mysqli_query($this->conexion, $q_inv);
                
                if (!$result_inv || mysqli_num_rows($result_inv) == 0) {
                    throw new Exception("Código EPP '$codigo_epp' no encontrado en inventario");
                }
                
                $row_inv = mysqli_fetch_assoc($result_inv);
                $nombre_epp = mysqli_real_escape_string($this->conexion, $row_inv['DESCRIPCION']);
                
                // Insertar en dotacion con codigo_epp y nombre_epp
                $qd = "INSERT INTO dotacion (empleado_id, codigo_epp, nombre_epp, cantidad, fecha_entrega)
                       VALUES ($empleado_id, '$codigo_epp', '$nombre_epp', $cant, NOW())";
                if (!mysqli_query($this->conexion, $qd)) throw new Exception(mysqli_error($this->conexion));
            }

            mysqli_commit($this->conexion);
            return ['success' => true, 'empleado_id' => $empleado_id, 'nombre' => $nombre];

        } catch (Exception $e) {
            mysqli_rollback($this->conexion);
            return ['success' => false, 'error' => $e->getMessage()];
        } finally {
            mysqli_autocommit($this->conexion, TRUE);
        }
    }
}