select method

bool select(
  1. Seat seat
)

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;
}