No se han recibido datos del formulario";
}
// Función para recopilar datos del formulario y sanitizarlos
function recopilarDatosReserva($formulario, $campos )
{
$datos = [];
foreach ($campos as $campo) {
$datos[$campo] = trim($formulario[$campo]) ?? '';
}
return $datos;
}
// Función para procesar la reserva
function procesarReserva($datosReserva)
{
// Variables para el resultado del procesamiento
$exito = true;
$msgExito = [];
$msgError = [];
// Obtener datos de reserva
$entrada = $datosReserva['entrada'];
$salida = $datosReserva['salida'];
$habitacion = $datosReserva['habitacion'];
$regimen = $datosReserva['regimen'];
$spa = $datosReserva['spa'];
$guia = $datosReserva['guia'];
$nombre = $datosReserva['nombre'];
$email = $datosReserva['email'];
$telefono = $datosReserva['telefono'];
$dni = $datosReserva['dni'];
$noches = $datosReserva['noches'];
$total = $datosReserva['total'];
// Generar identificador de reserva
$idReserva = time() . '_' . mt_rand(1000, 9999);
// Fecha de reserva
$fechaReserva = date("d-m-Y H:i:s");
// Estructurar ficha de reserva
$fichaReserva = "Id reserva: $idReserva \r\n";
$fichaReserva .= "Fecha de reserva: $fechaReserva \r\n";
$fichaReserva .= "Fecha de entrada: $entrada \r\n";
$fichaReserva .= "Fecha de salida: $salida \r\n";
$fichaReserva .= "Tipo de habitación: $habitacion \r\n";
$fichaReserva .= "Regimen de alojamiento: $regimen \r\n";
$fichaReserva .= "Días Spa: $spa \r\n";
$fichaReserva .= "Días Guia: $guia \r\n";
$fichaReserva .= "Duración estancia: $noches \r\n";
$fichaReserva .= "Coste Total: $total \r\n";
$fichaReserva .= "Nombre: $nombre \r\n";
$fichaReserva .= "Correo electrónico: $email \r\n";
$fichaReserva .= "Teléfono: $telefono \r\n";
$fichaReserva .= "DNI: $dni \r\n";
// Enviar correo electrónico con los detalles de la reserva
$destinatario = "appasin04@gmail.com";
$asunto = "Informacion de reserva - $idReserva";
$headers = 'Reply-To: appasin04@gmail.com' . "\r\n";
$headers .= 'Bcc: ' . $email . "\r\n";
if (!mail($destinatario, $asunto, $fichaReserva, $headers)) {
$exito = false;
$msgError[] = "Error al enviar el correo electrónico.";
}
// Guardar la ficha de reserva en un archivo
$dir_reservas ="reservas/";
!is_dir($dir_reservas) ? !mkdir($dir_reservas, 0777, true) : null;
$nombre_archivo = $dir_reservas . $idReserva . ".txt";
if (file_put_contents($nombre_archivo, $fichaReserva) === false) {
$exito = false;
$msgError[] = "Error al guardar la ficha de reserva.";
} else {
$msgExito[] = "
Reserva confirmada !
" . "
". nl2br($fichaReserva)."
";
}
// Añadir al listado_reservas.txt una línea de reserva
$registroReserva = implode('/_/', [$idReserva, $nombre, $email, $telefono, $entrada, $salida, $fechaReserva, $noches]) . "\r\n";
$nombre_archivo = "listado_reservas.txt";
if (file_put_contents($nombre_archivo, $registroReserva, FILE_APPEND | LOCK_EX) === false) {
$exito = false;
$msgError[] = "Error al guardar la lista de reservas.";
}
if (isset($_FILES['dnifile']) && $_FILES['dnifile']['error'] === UPLOAD_ERR_OK){
$exitoUpload = true;
$dir_uploads= "dni_clientes/";
!is_dir($dir_uploads) ? !mkdir($dir_uploads, 0777, true) : null;
$nombreArchivo = implode("_", [$dni, $idReserva, $_FILES['dnifile']['name']]);
$extension_archivo = strtolower(pathinfo($_FILES["dnifile"]["name"], PATHINFO_EXTENSION));
$tamano_maximo = 2 * 1024 * 1024;
$extensiones_permitidas = array("jpg", "jpeg", "pdf");
if(!in_array($extension_archivo, $extensiones_permitidas)){
$exitoUpload =false;
$exito = false;
$msgError[] = "El fichero no tiene una extension valida.";
}
if ($_FILES["dnifile"]["size"] > $tamano_maximo){
$exitoUpload =false;
$exito = false;
$msgError[] = "El fichero excede el tamaño maximo (2Mb).";
}
if ($exitoUpload){
if(move_uploaded_file($_FILES["dnifile"]["tmp_name"],$dir_uploads . $nombreArchivo)){
$msgExito [] = "
El fichero adjunto se almaceno correctamente
";
}else{
$exito = false;
$msgError = "Ocurrio un error al almacenar el fichero adjunto";
}
}
}
$resultado = [
'exito' => $exito,
'msgExito'=> $msgExito,
'msgError' => $msgError
];
return $resultado;
}
function mostrarResultado($resultado)
{
foreach ($resultado['msgExito'] as $key => $value) {
echo "
$value
";
}
if (!$resultado['exito']) {
echo "
Se han encontrado los siguientes problemas al procesar su solicitud:
";
echo "
";
foreach ($resultado['msgError'] as $key => $value) {
echo "- $value
";
}
echo "
";
}
}
?>