class Seatsio::SeasonsClient

def add_events_to_partial_season(top_level_season_key:, partial_season_key:, event_keys:)

def add_events_to_partial_season(top_level_season_key:, partial_season_key:, event_keys:)
  request = {}
  request['eventKeys'] = event_keys
  response = @http_client.post("/seasons/#{top_level_season_key}/partial-seasons/#{partial_season_key}/actions/add-events", request)
  Season.new(response)
end

def build_create_season_request(chart_key, key, number_of_events, event_keys, table_booking_config, channels)

def build_create_season_request(chart_key, key, number_of_events, event_keys, table_booking_config, channels)
  request = {}
  request['chartKey'] = chart_key if chart_key
  request['key'] = key if key
  request['numberOfEvents'] = number_of_events if number_of_events
  request['eventKeys'] = event_keys if event_keys
  request['tableBookingConfig'] = table_booking_config_to_request(table_booking_config) if table_booking_config != nil
  request['channels'] = ChannelsClient::channels_to_request(channels) if channels != nil
  request
end

def create(chart_key:, key: nil, number_of_events: nil, event_keys: nil,

def create(chart_key:, key: nil, number_of_events: nil, event_keys: nil,
           table_booking_config: nil, channels: nil)
  request = build_create_season_request(chart_key, key, number_of_events, event_keys, table_booking_config, channels)
  response = @http_client.post('seasons', request)
  Season.new(response)
end

def create_events(key:, number_of_events: nil, event_keys: nil)

def create_events(key:, number_of_events: nil, event_keys: nil)
  request = {}
  request['eventKeys'] = event_keys if event_keys
  request['numberOfEvents'] = number_of_events if number_of_events
  response = @http_client.post("/seasons/#{key}/actions/create-events", request)
  Events.new(response).events
end

def create_partial_season(top_level_season_key:, partial_season_key: nil, event_keys: nil)

def create_partial_season(top_level_season_key:, partial_season_key: nil, event_keys: nil)
  request = {}
  request['key'] = partial_season_key if partial_season_key
  request['eventKeys'] = event_keys if event_keys
  response = @http_client.post("/seasons/#{top_level_season_key}/partial-seasons", request)
  Season.new(response)
end

def initialize(http_client, seatsio_client)

def initialize(http_client, seatsio_client)
  @http_client = http_client
  @seatsio_client = seatsio_client
end

def remove_event_from_partial_season(top_level_season_key:, partial_season_key:, event_key:)

def remove_event_from_partial_season(top_level_season_key:, partial_season_key:, event_key:)
  response = @http_client.delete("/seasons/#{top_level_season_key}/partial-seasons/#{partial_season_key}/events/#{event_key}")
  Season.new(response)
end

def retrieve(key:)

def retrieve(key:)
  @seatsio_client.events.retrieve(key: key)
end

def table_booking_config_to_request(table_booking_config)

def table_booking_config_to_request(table_booking_config)
  request = {}
  request['mode'] = table_booking_config.mode
  request['tables'] = table_booking_config.tables if table_booking_config.tables != nil
  request
end