false, 'error' => 'Método no permitido.']); exit; } $idReserva = isset($_POST['id_reserva']) ? intval($_POST['id_reserva']) : 0; if ($idReserva === 0 || !isset($_FILES['comprobante'])) { echo json_encode(['success' => false, 'error' => 'Faltan datos obligatorios.']); exit; } $file = $_FILES['comprobante']; $ext = strtolower(pathinfo($file['name'], PATHINFO_EXTENSION)); $allowed = ['jpg', 'jpeg', 'png']; // Validar extensión if (!in_array($ext, $allowed)) { echo json_encode(['success' => false, 'error' => 'Formato no permitido. Solo JPG, JPEG o PNG.']); exit; } // Definir rutas $nombreArchivo = "reserva_" . $idReserva . "_" . time() . "." . $ext; $carpetaDestino = "C:\\xampp\\htdocs\\TP-Taller\\ProyectoTaller\\uploads\\comprobantes\\"; $rutaCompleta = $carpetaDestino . $nombreArchivo; // Mover el archivo al servidor if (move_uploaded_file($file['tmp_name'], $rutaCompleta)) { // Actualizar la base de datos con el nombre del archivo $stmt = $conexion->prepare("UPDATE reservas SET Comprobante = ? WHERE ID_Reserva = ?"); $stmt->bind_param('si', $nombreArchivo, $idReserva); $stmt->execute(); if ($stmt->affected_rows > 0) { // --- NOTIFICACIÓN AL ADMINISTRADOR DE CANCHAS --- // 1. Buscamos el teléfono del usuario con rol 'cancha' $resUser = $conexion->query("SELECT Telefono FROM usuarios WHERE Rol = 'cancha' LIMIT 1"); if ($resUser && $resUser->num_rows > 0) { $admin = $resUser->fetch_assoc(); $telefonoAdmin = $admin['Telefono']; // Ej: "549343..." // 2. Limpiamos el formato del teléfono del administrador $telefonoLimpio = preg_replace('/[^0-9]/', '', $telefonoAdmin); // 3. Armamos el mensaje con un link directo para que el admin vea la foto desde su celular // Nota: Cuando pases el sistema a producción, reemplaza 'localhost' por tu IP pública o dominio $urlFoto = "http://localhost/TP-Taller/ProyectoTaller/uploads/comprobantes/" . $nombreArchivo; $mensaje = "Alerta: Se ha subido un comprobante para la Reserva #$idReserva. Ver foto aquí: $urlFoto"; // 4. Llamamos al bot de Python de forma asíncrona para no trabar la pantalla del cliente $scriptPython = "C:\\xampp\\htdocs\\TP-Taller\\ProyectoTaller\\python\\Enviar_WSP.py"; $comando = "start /B python \"$scriptPython\" $telefonoLimpio \"$mensaje\""; pclose(popen($comando, "r")); } echo json_encode(['success' => true, 'message' => 'Comprobante subido y administrador notificado.']); } else { echo json_encode(['success' => false, 'error' => 'No se encontró la reserva para actualizar.']); } $stmt->close(); } else { echo json_encode(['success' => false, 'error' => 'No se pudo guardar el archivo en el servidor.']); } $conexion->close(); ?>