2026-01-18_venue-maintenance-booking
🧭 Contexto
A Onda 3.1 (Booking) prevê que o mundo Venue Owner consiga bloquear horários para manutenção, evitando conflitos com reservas (double booking).
Precisamos garantir:
- Escopo correto: manutenção só pode ser declarada em quadras da própria arena.
- Mesmo mecanismo de conflito de Booking (overlap) deve impedir colisões.
✅ Decisão
- Criar uma Action dedicada
DeclareMaintenanceAction que valida:
- quadra ativa
- quadra pertence à arena (
venue_id)
- intervalo válido (
ends_at > starts_at)
- e delega o lock de conflito para o
CreateBookingAction.
- Criar UI Livewire no mundo Venue Owner em
GET /venues/{venue}/maintenance.
- Controlar acesso via Policy
VenuePolicy::declareMaintenance.
🛠️ Passos (comandos via Sail)
sail artisan test --filter DeclareMaintenanceActionTest
sail artisan route:list | grep maintenance
🧪 Validação
- Venue owner acessa a tela de manutenção.
- Venue owner consegue registrar manutenção em quadra ativa da própria arena.
- Tentar declarar manutenção em quadra de outra arena falha.
- Overlap na mesma quadra gera
BookingConflictException.
- A tela exibe a agenda do dia por quadra (visão da arena).
🔐 Rotas e acesso
GET /venues/{venue}/maintenance (venues.maintenance)
- Middlewares:
auth + role:venue_owner|super_admin
- Policy:
VenuePolicy::declareMaintenance
📦 Impacto
- Novo:
app/Livewire/Venue/DeclareMaintenance.php.
- Novo: view
resources/views/livewire/venue/declare-maintenance.blade.php.
- Novo:
DeclareMaintenanceAction + DeclareMaintenanceData.
- Atualizado: rotas web.
- Atualizado: link de navegação na tela de quadras.
- Novo: teste
DeclareMaintenanceActionTest.