File "ActaApp-20260419143021.php"
Full Path: C:/wamp64/www/Actas_Usuarios/models/ActaApp-20260419143021.php
File size: 3.67 KB
MIME-type: text/x-php
Charset: utf-8
<?php
// models/ActaApp.php
require_once __DIR__ . '/../config/db.php';
class ActaApp
{
private $db;
private $dbEmpleados;
public function __construct()
{
$database = new Database();
$this->db = $database->connect();
$dbEmp = new DatabaseEmpleados();
$this->dbEmpleados = $dbEmp->connect();
}
public function buscarEmpleadoPorCedula($cedula)
{
$stmt = $this->dbEmpleados->prepare(
"SELECT CONCAT(nombre, ' ', apellido) AS nombre_completo, cargo
FROM empleados WHERE cedula = ? LIMIT 1"
);
if (!$stmt) return null;
$stmt->bind_param('s', $cedula);
$stmt->execute();
$row = $stmt->get_result()->fetch_assoc();
$stmt->close();
return $row ?: null;
}
// $d['usuarios'] es un array de [{aplicacion, usuario, link}, ...]
public function guardar($d)
{
// Guardamos los usuarios como JSON en la columna UsuariosJSON
$usuarios_json = json_encode($d['usuarios'], JSON_UNESCAPED_UNICODE);
// Para retrocompatibilidad guardamos el primero en columnas legacy
$primero = $d['usuarios'][0] ?? [];
$sql = "INSERT INTO ActaEntregaApp
(Nombre, Cedula, Cargo,
UsuarioApp, Aplicacion, Link,
UsuariosJSON,
DescripcionUsuario, Observaciones,
NombreEntrega, CargoEntrega,
FirmaEntregaBase64, FirmaRecibeBase64,
ActaHTML, IpCreacion)
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
$stmt = $this->db->prepare($sql);
if (!$stmt) throw new RuntimeException("Prepare error: " . $this->db->error);
$usuario_0 = $primero['usuario'] ?? '';
$aplicacion_0= $primero['aplicacion'] ?? '';
$link_0 = $primero['link'] ?? '';
$stmt->bind_param('sssssssssssssss',
$d['nombre'], $d['cedula'], $d['cargo'],
$usuario_0, $aplicacion_0, $link_0,
$usuarios_json,
$d['descripcion'], $d['observaciones'],
$d['nombre_entrega'], $d['cargo_entrega'],
$d['firma_entrega'], $d['firma_recibe'],
$d['acta_html'], $d['ip']
);
$stmt->execute();
$id = (int) $this->db->insert_id;
$stmt->close();
return $id;
}
public function listar()
{
$sql = "SELECT IdActa, FechaCreacion, Nombre, Cedula,
Cargo, UsuarioApp, Aplicacion, UsuariosJSON,
NombreEntrega, CargoEntrega
FROM ActaEntregaApp
ORDER BY FechaCreacion DESC";
$result = $this->db->query($sql);
if (!$result) throw new RuntimeException("Query error: " . $this->db->error);
$rows = [];
while ($row = $result->fetch_assoc()) $rows[] = $row;
$result->free();
return $rows;
}
public function obtenerPorId($id)
{
$stmt = $this->db->prepare(
"SELECT IdActa, ActaHTML, Nombre, FechaCreacion
FROM ActaEntregaApp WHERE IdActa = ? LIMIT 1"
);
$stmt->bind_param('i', $id);
$stmt->execute();
$row = $stmt->get_result()->fetch_assoc();
$stmt->close();
return $row ?: null;
}
public function listarApps()
{
$result = $this->db->query("SELECT id, app, link FROM apps ORDER BY app ASC");
if (!$result) throw new RuntimeException("Query error: " . $this->db->error);
$rows = [];
while ($row = $result->fetch_assoc()) $rows[] = $row;
$result->free();
return $rows;
}
}