1ra Versión
This commit is contained in:
@@ -0,0 +1,73 @@
|
||||
<?php
|
||||
header('Content-Type: application/json');
|
||||
require_once 'conexion.php';
|
||||
|
||||
if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
|
||||
echo json_encode(['success' => 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();
|
||||
?>
|
||||
Reference in New Issue
Block a user