false, 'message' => 'Método no permitido']); exit(); } $input = json_decode(file_get_contents('php://input'), true); $usuario_id = isset($input['usuario_id']) ? (int)$input['usuario_id'] : 0; $mascota_id = isset($input['mascota_id']) ? (int)$input['mascota_id'] : 0; $cabina_id = isset($input['cabina_id']) ? (int)$input['cabina_id'] : 0; $motivo = isset($input['motivo']) ? trim($input['motivo']) : ''; $perrera_destino = isset($input['perrera_destino']) ? trim($input['perrera_destino']) : ''; $observaciones = isset($input['observaciones']) ? trim($input['observaciones']) : ''; if (!$usuario_id || !$mascota_id || !$cabina_id || !$motivo || !$perrera_destino) { http_response_code(400); echo json_encode(['success' => false, 'message' => 'Faltan campos obligatorios']); exit(); } $pdo->beginTransaction(); // 1. Registrar el aviso en la base de datos (si existe la tabla avisos_perrera) // Si no existe la tabla, comenta este bloque try { $stmt = $pdo->prepare("INSERT INTO avisos_perrera (usuario_id, mascota_id, cabina_id, motivo, perrera_destino, observaciones, fecha_aviso) VALUES (:usuario_id, :mascota_id, :cabina_id, :motivo, :perrera_destino, :observaciones, NOW())"); $stmt->execute([ ':usuario_id' => $usuario_id, ':mascota_id' => $mascota_id, ':cabina_id' => $cabina_id, ':motivo' => $motivo, ':perrera_destino' => $perrera_destino, ':observaciones' => $observaciones ]); } catch (PDOException $e) { // Si la tabla no existe, continuamos sin registrar error_log('Tabla avisos_perrera no existe: ' . $e->getMessage()); } // 2. Liberar la jaula $stmt = $pdo->prepare("UPDATE cabinas SET estado = 'disponible' WHERE id = :cabina_id"); $stmt->execute([':cabina_id' => $cabina_id]); // 3. Finalizar cualquier reserva activa en esa jaula $stmt = $pdo->prepare("UPDATE reservas SET estado = 'finalizada', hora_salida_real = NOW() WHERE cabina_id = :cabina_id AND estado = 'activa'"); $stmt->execute([':cabina_id' => $cabina_id]); $pdo->commit(); // 4. Aquí iría el envío de email a la perrera // TODO: Implementar envío de email echo json_encode([ 'success' => true, 'message' => 'Aviso a perrera generado correctamente', 'cabina_liberada' => $cabina_id ]); } catch (PDOException $e) { if ($pdo->inTransaction()) $pdo->rollBack(); http_response_code(500); echo json_encode([ 'success' => false, 'message' => 'Error en el servidor', 'error' => $e->getMessage() ]); } ?>