academy/models/armasql.php

74 lines
2.3 KiB
PHP

<?php
function construirSentenciaInsert($tabla, $datos) {
// Filtramos campos que no queremos en el INSERT
$camposExcluidos = ['accion'];
$camposInsertar = array_diff_key($datos, array_flip($camposExcluidos));
// Preparamos los nombres de las columnas y los marcadores de posición
$columnas = array_keys($camposInsertar);
$marcadores = array_fill(0, count($columnas), '?');
// Construimos la sentencia SQL
$sql = "INSERT INTO $tabla ([" . implode('], [', $columnas) . "]) VALUES (" . implode(', ', $marcadores) . ")";
// Preparamos los parámetros
$parametros = array_values($camposInsertar);
return ['sql' => $sql, 'parametros' => $parametros];
}
function construirSentenciaUpdate($tabla, $datos) {
// Filtramos campos que no queremos en el UPDATE
$camposExcluidos = ['accion', 'id'];
$camposActualizar = array_diff_key($datos, array_flip($camposExcluidos));
// Construimos la parte SET de la sentencia
$setCampos = [];
$parametros = [];
foreach ($camposActualizar as $campo => $valor) {
// Usamos corchetes en lugar de backticks para SQL Server
$setCampos[] = "[$campo] = ?";
$parametros[] = $valor;
}
// Construimos la sentencia SQL
$sql = "UPDATE $tabla SET " . implode(', ', $setCampos) . " WHERE id = ?";
// Añadimos el id al final de los parámetros
$parametros[] = $datos['id'];
return ['sql' => $sql, 'parametros' => $parametros];
}
function normalizarAlojamiento(array $datos): array {
// Cursos que tienen selector alojamiento_*
$cursos = ['bp', 'b1', 'b2', 'b3'];
foreach ($cursos as $c) {
$kA = "alojamiento_$c";
$kI = "alojamiento_inicio_$c";
$kF = "alojamiento_fin_$c";
// Si no viene alojamiento_* no tocamos nada
if (!array_key_exists($kA, $datos)) continue;
$valA = strtoupper(trim((string)$datos[$kA]));
// Si NO hay alojamiento => forzamos NULL en inicio/fin (aunque no vengan)
if ($valA === 'N' || $valA === '') {
$datos[$kI] = null;
$datos[$kF] = null;
continue;
}
// Si SI hay alojamiento => si no vienen fechas, al menos dejamos null (o podés validar)
if ($valA === 'S') {
if (!array_key_exists($kI, $datos) || trim((string)$datos[$kI]) === '') $datos[$kI] = null;
if (!array_key_exists($kF, $datos) || trim((string)$datos[$kF]) === '') $datos[$kF] = null;
}
}
return $datos;
}