Class: Seatsio::EventsClient

Inherits:
Object
  • Object
show all
Defined in:
lib/seatsio/events.rb

Instance Method Summary collapse

Constructor Details

#initialize(secret_key, base_url) ⇒ EventsClient

Returns a new instance of EventsClient.



14
15
16
# File 'lib/seatsio/events.rb', line 14

def initialize(secret_key, base_url)
  @http_client = ::Seatsio::HttpClient.new(secret_key, base_url)
end

Instance Method Details

#book(event_key_or_keys, object_or_objects, hold_token = nil, order_id = nil) ⇒ Object

Parameters:

  • event_key_or_keys (Object)
  • object_or_objects (Object)
  • hold_token (Object) (defaults to: nil)
  • order_id (Object) (defaults to: nil)


49
50
51
# File 'lib/seatsio/events.rb', line 49

def book(event_key_or_keys, object_or_objects, hold_token = nil, order_id = nil)
  self.change_object_status(event_key_or_keys, object_or_objects, Domain::ObjectStatus::BOOKED, hold_token, order_id)
end

#book_best_available(key:, number:, categories: nil, hold_token: nil, order_id: nil) ⇒ Object



72
73
74
75
# File 'lib/seatsio/events.rb', line 72

def book_best_available(key:, number:, categories: nil, hold_token: nil, order_id: nil)
  change_best_available_object_status(key: key, number: number,status: Domain::ObjectStatus::BOOKED,
                                      categories: categories, hold_token: hold_token, order_id: order_id)
end

#change_best_available_object_status(key:, number:, status:, categories: nil, hold_token: nil, extra_data: nil, order_id: nil) ⇒ Object



66
67
68
69
70
# File 'lib/seatsio/events.rb', line 66

def change_best_available_object_status(key:, number:, status:, categories: nil, hold_token: nil, extra_data: nil, order_id: nil)
  request = create_change_best_available_object_status_request(number, status, categories, extra_data, hold_token, order_id)
  response = @http_client.post("events/#{key}/actions/change-object-status", request)
  Domain::BestAvailableObjects.new(response)
end

#change_object_status(event_key_or_keys, object_or_objects, status, hold_token = nil, order_id = nil) ⇒ Object



53
54
55
56
57
58
59
60
# File 'lib/seatsio/events.rb', line 53

def change_object_status(event_key_or_keys, object_or_objects, status, hold_token = nil, order_id = nil)
  request = create_change_object_status_request(object_or_objects, status, hold_token, order_id, event_key_or_keys)
  request[:params] = {
    'expand' => 'labels'
  }
  response = @http_client.post("seasons/actions/change-object-status", request)
  Domain::ChangeObjectStatusResult.new(response)
end

#create(key: nil, event_key: nil, book_whole_tables: nil, table_booking_modes: nil) ⇒ Object



18
19
20
21
22
# File 'lib/seatsio/events.rb', line 18

def create(key: nil, event_key: nil, book_whole_tables: nil, table_booking_modes: nil)
  payload = build_event_request(chart_key: key, event_key: event_key, book_whole_tables: book_whole_tables, table_booking_modes: table_booking_modes)
  response = @http_client.post("events", payload)
  Domain::Event.new(response)
end

#delete(key:) ⇒ Object



86
87
88
# File 'lib/seatsio/events.rb', line 86

def delete(key:)
  @http_client.delete("/events/#{key}")
end

#hold(event_key_or_keys, object_or_objects, hold_token, order_id = nil) ⇒ Object



62
63
64
# File 'lib/seatsio/events.rb', line 62

def hold(event_key_or_keys, object_or_objects, hold_token, order_id = nil)
  change_object_status(event_key_or_keys, object_or_objects, Domain::ObjectStatus::HELD, hold_token, order_id)
end

#hold_best_available(key:, number:, categories: nil, hold_token: nil, order_id: nil) ⇒ Object



77
78
79
80
# File 'lib/seatsio/events.rb', line 77

def hold_best_available(key:, number:, categories: nil, hold_token: nil, order_id: nil)
  change_best_available_object_status(key: key, number: number, status: Domain::ObjectStatus::HELD,
                                      categories: categories, hold_token: hold_token, order_id: order_id)
end

#listObject



96
97
98
# File 'lib/seatsio/events.rb', line 96

def list
  Pagination::Cursor.new(Domain::Event, 'events', @http_client)
end

#list_status_changes(key, object_id = nil) ⇒ Object



100
101
102
103
104
105
106
# File 'lib/seatsio/events.rb', line 100

def list_status_changes(key, object_id = nil)
  if object_id != nil
    status_changes_for_object key: key, object_id: object_id
  else
    Pagination::Cursor.new(Domain::StatusChange, "/events/#{key}/status-changes", @http_client)
  end
end

#mark_as_for_sale(key:, objects: nil, categories: nil) ⇒ Object



121
122
123
124
# File 'lib/seatsio/events.rb', line 121

def mark_as_for_sale(key:, objects: nil, categories: nil)
  request = build_parameters_for_mark_as_sale objects: objects, categories: categories
  @http_client.post("events/#{key}/actions/mark-as-for-sale", request)
end

#mark_as_not_for_sale(key:, objects: nil, categories: nil) ⇒ Object



112
113
114
115
# File 'lib/seatsio/events.rb', line 112

def mark_as_not_for_sale(key:, objects: nil, categories: nil)
  request = build_parameters_for_mark_as_sale objects: objects, categories: categories
  @http_client.post("events/#{key}/actions/mark-as-not-for-sale", request)
end

#mark_everything_as_for_sale(key: nil) ⇒ Object



117
118
119
# File 'lib/seatsio/events.rb', line 117

def mark_everything_as_for_sale(key: nil)
  @http_client.post("events/#{key}/actions/mark-everything-as-for-sale")
end

#release(event_key_or_keys, object_or_objects, hold_token = nil, order_id = nil) ⇒ Object



82
83
84
# File 'lib/seatsio/events.rb', line 82

def release(event_key_or_keys, object_or_objects, hold_token = nil, order_id = nil)
  change_object_status(event_key_or_keys, object_or_objects, Domain::ObjectStatus::FREE, hold_token, order_id)
end

#retrieve(key:) ⇒ Object



91
92
93
94
# File 'lib/seatsio/events.rb', line 91

def retrieve(key:)
  response = @http_client.get("events/#{key}")
  Domain::Event.new(response)
end

#retrieve_object_status(key:, object_key:) ⇒ Object



39
40
41
42
43
# File 'lib/seatsio/events.rb', line 39

def retrieve_object_status(key:, object_key:)
  url = "events/#{key}/objects/#{CGI::escape(object_key).gsub('+','%20')}"
  response = @http_client.get(url)
  Domain::ObjectStatus.new(response)
end

#status_changes_for_object(key:, object_id:) ⇒ Object



108
109
110
# File 'lib/seatsio/events.rb', line 108

def status_changes_for_object(key:, object_id:)
  Pagination::Cursor.new(Domain::StatusChange, "/events/#{key}/objects/#{object_id}/status-changes", @http_client)
end

#update(key:, chart_key: nil, event_key: nil, book_whole_tables: nil, table_booking_modes: nil) ⇒ Object



24
25
26
27
# File 'lib/seatsio/events.rb', line 24

def update(key:, chart_key: nil, event_key: nil, book_whole_tables: nil, table_booking_modes: nil)
  payload = build_event_request(chart_key: chart_key, event_key: event_key, book_whole_tables: book_whole_tables, table_booking_modes: table_booking_modes)
  @http_client.post("/events/#{key}", payload)
end

#update_extra_data(key:, object:, extra_data: nil) ⇒ Object



29
30
31
32
# File 'lib/seatsio/events.rb', line 29

def update_extra_data(key:, object:, extra_data: nil)
  payload = build_extra_data_request(extra_data)
  @http_client.post("events/#{key}/objects/#{object}/actions/update-extra-data", payload)
end

#update_extra_datas(key:, extra_data:) ⇒ Object



34
35
36
37
# File 'lib/seatsio/events.rb', line 34

def update_extra_datas(key:, extra_data:)
  payload = build_extra_data_request(extra_data)
  @http_client.post("events/#{key}/actions/update-extra-data", payload)
end