false, 'message' => 'Método no permitido. Use POST']); exit(); } try { $input = json_decode(file_get_contents('php://input'), true); if (!$input) $input = $_POST; if (!isset($input['id'])) { http_response_code(400); echo json_encode(['success' => false, 'message' => 'Falta el campo obligatorio: id']); exit(); } $id = (int)$input['id']; // 1) Obtener datos completos de la reserva $stmt = $pdo->prepare(" SELECT r.id, r.codigo, r.fecha, r.hora_inicio, r.hora_fin_prevista, r.duracion_bloques, r.importe, r.estado, r.referencia_bizum, u.nombre AS cliente_nombre, u.apellidos AS cliente_apellidos, u.email AS cliente_email, u.telefono AS cliente_telefono, m.nombre AS mascota_nombre, m.especie AS mascota_especie, c.codigo AS cabina_codigo, c.bloque, c.ubicacion FROM reservas r JOIN usuarios u ON r.usuario_id = u.id JOIN mascotas m ON r.mascota_id = m.id JOIN cabinas c ON r.cabina_id = c.id WHERE r.id = ? "); $stmt->execute([$id]); $reserva = $stmt->fetch(); if (!$reserva) { http_response_code(404); echo json_encode(['success' => false, 'message' => 'Reserva no encontrada']); exit(); } if (empty($reserva['cliente_email'])) { http_response_code(400); echo json_encode(['success' => false, 'message' => 'El cliente no tiene email registrado']); exit(); } // 2) Crear tabla log_recordatorios si no existe $pdo->exec(" CREATE TABLE IF NOT EXISTS log_recordatorios ( id INT AUTO_INCREMENT PRIMARY KEY, reserva_id INT NOT NULL, cliente_email VARCHAR(255) NOT NULL, tipo ENUM('recordatorio','confirmacion','cancelacion') DEFAULT 'recordatorio', enviado TINYINT(1) DEFAULT 0, error TEXT NULL, fecha_envio TIMESTAMP DEFAULT CURRENT_TIMESTAMP, INDEX idx_reserva (reserva_id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci "); // 3) Construir el email $nombreCliente = trim($reserva['cliente_nombre'] . ' ' . $reserva['cliente_apellidos']); $fechaFormateada = date('d/m/Y', strtotime($reserva['fecha'])); $horaInicio = substr($reserva['hora_inicio'], 0, 5); $horaFin = substr($reserva['hora_fin_prevista'], 0, 5); $duracion = ($reserva['duracion_bloques'] * 30) . ' min'; $importe = number_format($reserva['importe'], 2, ',', '.') . ' €'; $estado = str_replace('_', ' ', $reserva['estado']); $asunto = "🐾 PetStop - Recordatorio de tu reserva " . $reserva['codigo']; $cuerpo = "
Recordatorio de reserva
Te recordamos los detalles de tu próxima reserva en PetStop:
Si tienes cualquier duda o necesitas modificar tu reserva, contáctanos respondiendo a este email o llamando al teléfono del centro.
¡Gracias por confiar en PetStop! 🐾