select method
Selects the given seat.
Returns true if selected successfully, false otherwise.
Implementation
bool select(Seat seat) {
final currentStatus = getEffectiveStatus(seat);
if (currentStatus == SeatStatus.booked ||
currentStatus == SeatStatus.reserved ||
currentStatus == SeatStatus.disabled) {
return false;
}
if (maxSelectedSeats != null &&
_selectedSeatsMap.length >= maxSelectedSeats! &&
!_selectedSeatsMap.containsKey(seat.id)) {
onMaxSeatsReached?.call();
return false;
}
_selectedSeatsMap[seat.id] = seat.copyWith(status: SeatStatus.selected);
notifyListeners();
onSelectionChanged?.call(selectedSeats);
return true;
}