Cancelamento de reserva pelo criador (antecedência mínima)
Documentação KOLOS

Cancelamento de reserva pelo criador (antecedência mínima)

Data: 2026-04-09

Comportamento

  • Reservas tipo BOOKING podem ser canceladas (statusCANCELLED) apenas por created_by_user_id, e apenas enquanto faltarem pelo menos N horas até starts_at (predefinição 24 = cerca de 1 dia antes do horário de início).
  • Config: config/kolos_booking.php · env BOOKING_CANCEL_MIN_HOURS_BEFORE_START.
  • UI: botão Cancelar em /booking (jogador) e na agenda da arena para blocos de reserva próprios.
  • Conflitos de agenda e listagens consideram só status = CONFIRMED.
  • PostgreSQL: constraint bookings_no_overlap passa a aplicar-se só a linhas CONFIRMED, para o mesmo intervalo poder ser reutilizado após cancelamento.

Ficheiros

  • config/kolos_booking.php
  • database/migrations/2026_04_09_215500_bookings_overlap_only_confirmed.php
  • src/Modules/Booking/Models/Booking.php, CancelBookingAction.php, BookingCancellationDeniedException.php
  • CreateBookingAction.php, Academy overlap helpers (queries confirmed())
  • app/Livewire/Booking.php, Venue/VenueSchedule.php, Venue/DeclareMaintenance.php
  • resources/views/livewire/booking.blade.php, venue/venue-schedule.blade.php
  • tests/Feature/Booking/CancelBookingActionTest.php

Validação

  • vendor/bin/sail exec laravel.test php artisan test tests/Feature/Booking/

Em PostgreSQL, correr migrações após deploy.