seatsio 25.2.0 → 27.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Gemfile.lock +1 -1
- data/lib/seatsio/chart_reports.rb +10 -9
- data/lib/seatsio/charts.rb +12 -12
- data/lib/seatsio/domain.rb +65 -11
- data/lib/seatsio/event_reports.rb +10 -2
- data/lib/seatsio/events.rb +31 -27
- data/lib/seatsio/hold_tokens.rb +3 -3
- data/lib/seatsio/subaccounts.rb +5 -5
- data/lib/seatsio/usage_reports.rb +3 -3
- data/lib/seatsio/version.rb +1 -1
- data/lib/seatsio/workspaces.rb +3 -3
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 387ed52306c0b323ea46c428338e2b710769bf1aad466f846c45c098181fa6c6
|
4
|
+
data.tar.gz: 481627a92f34480ad8eaff3b50df48c49a375e187917e433792a226d96608381
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6a686de47074aa17d326a3f88b92221d15148484293bba3443f0203fb883f3cc29a5b0279a3482a6a4cad69df38350ff38a0de06ffa8d9ff084767ee2e404b3a
|
7
|
+
data.tar.gz: d113f54e14e58123928483ac2b40b34750edeb613fbc1cdff941cccfa4ffafabff84d1e77d7b54bb94418583969c465bde5fa3b625f1805699443037a226f2cc
|
data/Gemfile.lock
CHANGED
@@ -10,24 +10,25 @@ module Seatsio
|
|
10
10
|
@http_client = ::Seatsio::HttpClient.new(secret_key, workspace_key, base_url)
|
11
11
|
end
|
12
12
|
|
13
|
-
def by_label(chart_key)
|
14
|
-
get_chart_report('byLabel', chart_key)
|
13
|
+
def by_label(chart_key, book_whole_tables = nil)
|
14
|
+
get_chart_report('byLabel', chart_key, book_whole_tables)
|
15
15
|
end
|
16
16
|
|
17
|
-
def by_category_key(chart_key)
|
18
|
-
get_chart_report('byCategoryKey', chart_key)
|
17
|
+
def by_category_key(chart_key, book_whole_tables = nil)
|
18
|
+
get_chart_report('byCategoryKey', chart_key, book_whole_tables)
|
19
19
|
end
|
20
20
|
|
21
|
-
def by_category_label(chart_key)
|
22
|
-
get_chart_report('byCategoryLabel', chart_key)
|
21
|
+
def by_category_label(chart_key, book_whole_tables = nil)
|
22
|
+
get_chart_report('byCategoryLabel', chart_key, book_whole_tables)
|
23
23
|
end
|
24
24
|
|
25
25
|
private
|
26
26
|
|
27
|
-
def get_chart_report(report_type, chart_key)
|
27
|
+
def get_chart_report(report_type, chart_key, book_whole_tables)
|
28
|
+
params = book_whole_tables.nil? ? {} : { bookWholeTables: book_whole_tables }
|
28
29
|
url = "reports/charts/#{chart_key}/#{report_type}"
|
29
|
-
body = @http_client.get(url)
|
30
|
-
|
30
|
+
body = @http_client.get(url, params)
|
31
|
+
ChartReport.new(body)
|
31
32
|
end
|
32
33
|
end
|
33
34
|
end
|
data/lib/seatsio/charts.rb
CHANGED
@@ -13,24 +13,24 @@ module Seatsio
|
|
13
13
|
|
14
14
|
def initialize(secret_key, workspace_key, base_url)
|
15
15
|
@http_client = Seatsio::HttpClient.new(secret_key, workspace_key, base_url)
|
16
|
-
@archive = Pagination::Cursor.new(
|
16
|
+
@archive = Pagination::Cursor.new(Chart, 'charts/archive', @http_client)
|
17
17
|
end
|
18
18
|
|
19
|
-
# @return [Seatsio::
|
19
|
+
# @return [Seatsio::Chart]
|
20
20
|
def retrieve(chart_key)
|
21
21
|
response = @http_client.get("charts/#{chart_key}")
|
22
|
-
|
22
|
+
Chart.new(response)
|
23
23
|
end
|
24
24
|
|
25
25
|
def retrieve_with_events(chart_key)
|
26
26
|
response = @http_client.get("charts/#{chart_key}?expand=events")
|
27
|
-
|
27
|
+
Chart.new(response)
|
28
28
|
end
|
29
29
|
|
30
30
|
def create(name: nil, venue_type: nil, categories: nil)
|
31
31
|
payload = build_chart_request name: name, venue_type: venue_type, categories: categories
|
32
32
|
response = @http_client.post('charts', payload)
|
33
|
-
|
33
|
+
Chart.new(response)
|
34
34
|
end
|
35
35
|
|
36
36
|
def update(key:, new_name: nil, categories: nil)
|
@@ -48,24 +48,24 @@ module Seatsio
|
|
48
48
|
|
49
49
|
def copy(key)
|
50
50
|
response = @http_client.post("charts/#{key}/version/published/actions/copy")
|
51
|
-
|
51
|
+
Chart.new(response)
|
52
52
|
end
|
53
53
|
|
54
54
|
def copy_to_subaccount(chart_key, subaccount_id)
|
55
55
|
url = "charts/#{chart_key}/version/published/actions/copy-to/#{subaccount_id}"
|
56
56
|
response = @http_client.post url
|
57
|
-
|
57
|
+
Chart.new(response)
|
58
58
|
end
|
59
59
|
|
60
60
|
def copy_to_workspace(chart_key, to_workspace_key)
|
61
61
|
url = "charts/#{chart_key}/version/published/actions/copy-to-workspace/#{to_workspace_key}"
|
62
62
|
response = @http_client.post url
|
63
|
-
|
63
|
+
Chart.new(response)
|
64
64
|
end
|
65
65
|
|
66
66
|
def copy_draft_version(key)
|
67
67
|
response = @http_client.post("charts/#{key}/version/draft/actions/copy")
|
68
|
-
|
68
|
+
Chart.new(response)
|
69
69
|
end
|
70
70
|
|
71
71
|
def retrieve_published_version(key)
|
@@ -98,7 +98,7 @@ module Seatsio
|
|
98
98
|
end
|
99
99
|
|
100
100
|
def list(chart_filter: nil, tag: nil, expand_events: nil, with_validation: false)
|
101
|
-
cursor = Pagination::Cursor.new(
|
101
|
+
cursor = Pagination::Cursor.new(Chart, 'charts', @http_client)
|
102
102
|
cursor.set_query_param('filter', chart_filter)
|
103
103
|
cursor.set_query_param('tag', tag)
|
104
104
|
|
@@ -123,12 +123,12 @@ module Seatsio
|
|
123
123
|
|
124
124
|
def validate_published_version(chart_key)
|
125
125
|
response = @http_client.post("charts/#{chart_key}/version/published/actions/validate")
|
126
|
-
Seatsio::
|
126
|
+
Seatsio::ChartValidationResult.new(response)
|
127
127
|
end
|
128
128
|
|
129
129
|
def validate_draft_version(chart_key)
|
130
130
|
response = @http_client.post("charts/#{chart_key}/version/draft/actions/validate")
|
131
|
-
Seatsio::
|
131
|
+
Seatsio::ChartValidationResult.new(response)
|
132
132
|
end
|
133
133
|
|
134
134
|
private
|
data/lib/seatsio/domain.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
require 'seatsio/util'
|
2
2
|
|
3
|
-
module Seatsio
|
3
|
+
module Seatsio
|
4
4
|
|
5
5
|
module_function
|
6
6
|
|
@@ -24,6 +24,7 @@ module Seatsio::Domain
|
|
24
24
|
@social_distancing_rulesets = data['socialDistancingRulesets'].map {
|
25
25
|
|key, r| [key, SocialDistancingRuleset.new(r['name'], r['numberOfDisabledSeatsToTheSides'], r['disableSeatsInFrontAndBehind'],
|
26
26
|
r['numberOfDisabledAisleSeats'], r['maxGroupSize'],
|
27
|
+
r['maxOccupancyAbsolute'], r['maxOccupancyPercentage'], r['oneGroupPerTable'], r['fixedGroupLayout'],
|
27
28
|
r['disabledSeats'], r['enabledSeats'], r['index'])]
|
28
29
|
}.to_h
|
29
30
|
end
|
@@ -60,6 +61,38 @@ module Seatsio::Domain
|
|
60
61
|
end
|
61
62
|
end
|
62
63
|
|
64
|
+
class TableBookingConfig
|
65
|
+
|
66
|
+
attr_reader :mode, :tables
|
67
|
+
|
68
|
+
def initialize(mode, tables = nil)
|
69
|
+
@mode = mode
|
70
|
+
@tables = tables
|
71
|
+
end
|
72
|
+
|
73
|
+
def self.inherit
|
74
|
+
TableBookingConfig.new('INHERIT')
|
75
|
+
end
|
76
|
+
|
77
|
+
def self.all_by_seat
|
78
|
+
TableBookingConfig.new('ALL_BY_SEAT')
|
79
|
+
end
|
80
|
+
|
81
|
+
def self.all_by_table
|
82
|
+
TableBookingConfig.new('ALL_BY_TABLE')
|
83
|
+
end
|
84
|
+
|
85
|
+
def self.custom(tables)
|
86
|
+
TableBookingConfig.new('CUSTOM', tables)
|
87
|
+
end
|
88
|
+
|
89
|
+
def self.from_json(data)
|
90
|
+
if data
|
91
|
+
TableBookingConfig.new(data['mode'], data['tables'])
|
92
|
+
end
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
63
96
|
class Channel
|
64
97
|
attr_reader :key, :name, :color, :index, :objects
|
65
98
|
|
@@ -83,17 +116,16 @@ module Seatsio::Domain
|
|
83
116
|
|
84
117
|
class Event
|
85
118
|
|
86
|
-
attr_accessor :id, :key, :chart_key, :
|
87
|
-
:
|
119
|
+
attr_accessor :id, :key, :chart_key, :supports_best_available,
|
120
|
+
:table_booking_config, :for_sale_config, :created_on, :updated_on, :channels,
|
88
121
|
:social_distancing_ruleset_key
|
89
122
|
|
90
123
|
def initialize(data)
|
91
124
|
@id = data['id']
|
92
125
|
@key = data['key']
|
93
126
|
@chart_key = data['chartKey']
|
94
|
-
@book_whole_tables = data['bookWholeTables']
|
95
127
|
@supports_best_available = data['supportsBestAvailable']
|
96
|
-
@
|
128
|
+
@table_booking_config = TableBookingConfig::from_json(data['tableBookingConfig'])
|
97
129
|
@for_sale_config = ForSaleConfig.new(data['forSaleConfig']) if data['forSaleConfig']
|
98
130
|
@created_on = parse_date(data['createdOn'])
|
99
131
|
@updated_on = parse_date(data['updatedOn'])
|
@@ -184,7 +216,7 @@ module Seatsio::Domain
|
|
184
216
|
attr_reader :objects
|
185
217
|
|
186
218
|
def initialize(data)
|
187
|
-
@objects = Seatsio
|
219
|
+
@objects = Seatsio.to_object_details(data['objects']);
|
188
220
|
end
|
189
221
|
end
|
190
222
|
|
@@ -216,7 +248,7 @@ module Seatsio::Domain
|
|
216
248
|
def initialize(data)
|
217
249
|
@next_to_each_other = data['nextToEachOther']
|
218
250
|
@objects = data['objects']
|
219
|
-
@object_details = Seatsio
|
251
|
+
@object_details = Seatsio.to_object_details(data['objectDetails'])
|
220
252
|
end
|
221
253
|
end
|
222
254
|
|
@@ -286,7 +318,7 @@ module Seatsio::Domain
|
|
286
318
|
:category_key, :entrance, :object_type, :hold_token, :category_label,
|
287
319
|
:ticket_type, :num_booked, :num_free, :num_held, :for_sale, :section,
|
288
320
|
:is_accessible, :is_companion_seat, :has_restricted_view, :displayed_object_type,
|
289
|
-
:left_neighbour, :right_neighbour, :is_selectable, :is_disabled_by_social_distancing
|
321
|
+
:left_neighbour, :right_neighbour, :is_selectable, :is_disabled_by_social_distancing, :channel
|
290
322
|
|
291
323
|
def initialize(data)
|
292
324
|
@status = data['status']
|
@@ -314,6 +346,7 @@ module Seatsio::Domain
|
|
314
346
|
@right_neighbour = data['rightNeighbour']
|
315
347
|
@is_selectable = data['isSelectable']
|
316
348
|
@is_disabled_by_social_distancing = data['isDisabledBySocialDistancing']
|
349
|
+
@channel = data['channel']
|
317
350
|
end
|
318
351
|
end
|
319
352
|
|
@@ -473,31 +506,52 @@ module Seatsio::Domain
|
|
473
506
|
|
474
507
|
class SocialDistancingRuleset
|
475
508
|
attr_reader :name, :number_of_disabled_seats_to_the_sides, :disable_seats_in_front_and_behind,
|
476
|
-
:number_of_disabled_aisle_seats, :max_group_size, :
|
509
|
+
:number_of_disabled_aisle_seats, :max_group_size, :max_occupancy_absolute,
|
510
|
+
:max_occupancy_percentage, :one_group_per_table, :fixed_group_layout, :disabled_seats, :enabled_seats, :index
|
477
511
|
|
478
512
|
def initialize(name, number_of_disabled_seats_to_the_sides = 0, disable_seats_in_front_and_behind = false, number_of_disabled_aisle_seats = 0,
|
479
|
-
max_group_size = 0,
|
513
|
+
max_group_size = 0, max_occupancy_absolute = 0, max_occupancy_percentage = 0, one_group_per_table = false,
|
514
|
+
fixed_group_layout = false, disabled_seats = [], enabled_seats = [], index = 0)
|
480
515
|
@name = name
|
481
516
|
@number_of_disabled_seats_to_the_sides = number_of_disabled_seats_to_the_sides
|
482
517
|
@disable_seats_in_front_and_behind = disable_seats_in_front_and_behind
|
483
518
|
@number_of_disabled_aisle_seats = number_of_disabled_aisle_seats
|
484
519
|
@max_group_size = max_group_size
|
520
|
+
@max_occupancy_absolute = max_occupancy_absolute
|
521
|
+
@max_occupancy_percentage = max_occupancy_percentage
|
522
|
+
@one_group_per_table = one_group_per_table
|
523
|
+
@fixed_group_layout = fixed_group_layout
|
485
524
|
@disabled_seats = disabled_seats
|
486
525
|
@enabled_seats = enabled_seats
|
487
526
|
@index = index
|
488
527
|
end
|
489
528
|
|
529
|
+
def self.fixed(name, disabled_seats = [], index = 0)
|
530
|
+
SocialDistancingRuleset.new(name, 0, false, 0, 0, 0, 0, false, true, disabled_seats, [], index)
|
531
|
+
end
|
532
|
+
|
533
|
+
def self.rule_based(name, number_of_disabled_seats_to_the_sides = 0, disable_seats_in_front_and_behind = false, number_of_disabled_aisle_seats = 0,
|
534
|
+
max_group_size = 0, max_occupancy_absolute = 0, max_occupancy_percentage = 0, one_group_per_table = false,
|
535
|
+
disabled_seats = [], enabled_seats = [], index = 0)
|
536
|
+
SocialDistancingRuleset.new(name, number_of_disabled_seats_to_the_sides, disable_seats_in_front_and_behind, number_of_disabled_aisle_seats,
|
537
|
+
max_group_size, max_occupancy_absolute, max_occupancy_percentage,
|
538
|
+
one_group_per_table, false, disabled_seats, enabled_seats, index)
|
539
|
+
end
|
540
|
+
|
490
541
|
def == (other)
|
491
542
|
self.name == other.name &&
|
492
543
|
self.number_of_disabled_seats_to_the_sides == other.number_of_disabled_seats_to_the_sides &&
|
493
544
|
self.disable_seats_in_front_and_behind == other.disable_seats_in_front_and_behind &&
|
494
545
|
self.number_of_disabled_aisle_seats == other.number_of_disabled_aisle_seats &&
|
495
546
|
self.max_group_size == other.max_group_size &&
|
547
|
+
self.max_occupancy_absolute == other.max_occupancy_absolute &&
|
548
|
+
self.max_occupancy_percentage == other.max_occupancy_percentage &&
|
549
|
+
self.one_group_per_table == other.one_group_per_table &&
|
550
|
+
self.fixed_group_layout == other.fixed_group_layout &&
|
496
551
|
self.disabled_seats == other.disabled_seats &&
|
497
552
|
self.enabled_seats == other.enabled_seats &&
|
498
553
|
self.index == other.index
|
499
554
|
end
|
500
|
-
|
501
555
|
end
|
502
556
|
|
503
557
|
end
|
@@ -31,6 +31,10 @@ module Seatsio
|
|
31
31
|
fetch_summary_report('bySelectability', event_key)
|
32
32
|
end
|
33
33
|
|
34
|
+
def summary_by_channel(event_key)
|
35
|
+
fetch_summary_report('byChannel', event_key)
|
36
|
+
end
|
37
|
+
|
34
38
|
def by_label(event_key, label = nil)
|
35
39
|
fetch_report('byLabel', event_key, label)
|
36
40
|
end
|
@@ -59,6 +63,10 @@ module Seatsio
|
|
59
63
|
fetch_report('bySelectability', event_key, selectability)
|
60
64
|
end
|
61
65
|
|
66
|
+
def by_channel(event_key, channelKey = nil)
|
67
|
+
fetch_report('byChannel', event_key, channelKey)
|
68
|
+
end
|
69
|
+
|
62
70
|
private
|
63
71
|
|
64
72
|
def fetch_summary_report(report_type, event_key)
|
@@ -70,11 +78,11 @@ module Seatsio
|
|
70
78
|
if report_filter
|
71
79
|
url = "reports/events/#{event_key}/#{report_type}/#{report_filter}"
|
72
80
|
body = @http_client.get(url)
|
73
|
-
|
81
|
+
EventReport.new(body[report_filter])
|
74
82
|
else
|
75
83
|
url = "reports/events/#{event_key}/#{report_type}"
|
76
84
|
body = @http_client.get(url)
|
77
|
-
|
85
|
+
EventReport.new(body)
|
78
86
|
end
|
79
87
|
end
|
80
88
|
end
|
data/lib/seatsio/events.rb
CHANGED
@@ -15,22 +15,21 @@ module Seatsio
|
|
15
15
|
@http_client = ::Seatsio::HttpClient.new(secret_key, workspace_key, base_url)
|
16
16
|
end
|
17
17
|
|
18
|
-
def create(chart_key: nil, event_key: nil,
|
19
|
-
payload = build_event_request(chart_key: chart_key, event_key: event_key,
|
20
|
-
|
18
|
+
def create(chart_key: nil, event_key: nil, table_booking_config: nil, social_distancing_ruleset_key: nil)
|
19
|
+
payload = build_event_request(chart_key: chart_key, event_key: event_key,
|
20
|
+
table_booking_config: table_booking_config, social_distancing_ruleset_key: social_distancing_ruleset_key)
|
21
21
|
response = @http_client.post("events", payload)
|
22
|
-
|
22
|
+
Event.new(response)
|
23
23
|
end
|
24
24
|
|
25
25
|
def create_multiple(key: nil, event_creation_params: nil)
|
26
26
|
payload = build_events_request(chart_key: key, event_creation_params: event_creation_params)
|
27
27
|
response = @http_client.post("events/actions/create-multiple", payload)
|
28
|
-
|
28
|
+
Events.new(response).events
|
29
29
|
end
|
30
30
|
|
31
|
-
def update(key:, chart_key: nil, event_key: nil,
|
32
|
-
payload = build_event_request(chart_key: chart_key, event_key: event_key,
|
33
|
-
table_booking_modes: table_booking_modes, social_distancing_ruleset_key: social_distancing_ruleset_key)
|
31
|
+
def update(key:, chart_key: nil, event_key: nil, table_booking_config: nil, social_distancing_ruleset_key: nil)
|
32
|
+
payload = build_event_request(chart_key: chart_key, event_key: event_key, table_booking_config: table_booking_config, social_distancing_ruleset_key: social_distancing_ruleset_key)
|
34
33
|
@http_client.post("/events/#{key}", payload)
|
35
34
|
end
|
36
35
|
|
@@ -47,11 +46,11 @@ module Seatsio
|
|
47
46
|
def retrieve_object_status(key:, object_key:)
|
48
47
|
url = "events/#{key}/objects/#{CGI::escape(object_key).gsub('+', '%20')}"
|
49
48
|
response = @http_client.get(url)
|
50
|
-
|
49
|
+
ObjectStatus.new(response)
|
51
50
|
end
|
52
51
|
|
53
52
|
def book(event_key_or_keys, object_or_objects, hold_token: nil, order_id: nil, keep_extra_data: nil, ignore_channels: nil, channel_keys: nil)
|
54
|
-
self.change_object_status(event_key_or_keys, object_or_objects,
|
53
|
+
self.change_object_status(event_key_or_keys, object_or_objects, ObjectStatus::BOOKED, hold_token: hold_token, order_id: order_id, keep_extra_data: keep_extra_data, ignore_channels: ignore_channels, channel_keys: channel_keys)
|
55
54
|
end
|
56
55
|
|
57
56
|
def change_object_status(event_key_or_keys, object_or_objects, status, hold_token: nil, order_id: nil, keep_extra_data: nil, ignore_channels: nil, channel_keys: nil)
|
@@ -60,38 +59,38 @@ module Seatsio
|
|
60
59
|
:expand => 'objects'
|
61
60
|
}
|
62
61
|
response = @http_client.post("seasons/actions/change-object-status", request)
|
63
|
-
|
62
|
+
ChangeObjectStatusResult.new(response)
|
64
63
|
end
|
65
64
|
|
66
65
|
def change_object_status_in_batch(status_change_requests)
|
67
66
|
request = {
|
68
67
|
:statusChanges => status_change_requests,
|
69
|
-
:params => {
|
68
|
+
:params => {:expand => 'objects'}
|
70
69
|
}
|
71
70
|
response = @http_client.post("events/actions/change-object-status", request)
|
72
|
-
|
71
|
+
ChangeObjectStatusInBatchResult.new(response).results
|
73
72
|
end
|
74
73
|
|
75
74
|
def hold(event_key_or_keys, object_or_objects, hold_token, order_id: nil, keep_extra_data: nil, ignore_channels: nil, channel_keys: nil)
|
76
|
-
change_object_status(event_key_or_keys, object_or_objects,
|
75
|
+
change_object_status(event_key_or_keys, object_or_objects, ObjectStatus::HELD, hold_token: hold_token, order_id: order_id, keep_extra_data: keep_extra_data, ignore_channels: ignore_channels, channel_keys: channel_keys)
|
77
76
|
end
|
78
77
|
|
79
78
|
def change_best_available_object_status(key, number, status, categories: nil, hold_token: nil, extra_data: nil, ticket_types: nil, order_id: nil, keep_extra_data: nil, ignore_channels: nil, channel_keys: nil)
|
80
79
|
request = create_change_best_available_object_status_request(number, status, categories, extra_data, ticket_types, hold_token, order_id, keep_extra_data, ignore_channels, channel_keys)
|
81
80
|
response = @http_client.post("events/#{key}/actions/change-object-status", request)
|
82
|
-
|
81
|
+
BestAvailableObjects.new(response)
|
83
82
|
end
|
84
83
|
|
85
84
|
def book_best_available(key, number, categories: nil, hold_token: nil, order_id: nil, keep_extra_data: nil, extra_data: nil, ticket_types: nil, ignore_channels: nil, channel_keys: nil)
|
86
|
-
change_best_available_object_status(key, number,
|
85
|
+
change_best_available_object_status(key, number, ObjectStatus::BOOKED, categories: categories, hold_token: hold_token, order_id: order_id, keep_extra_data: keep_extra_data, extra_data: extra_data, ticket_types: ticket_types, ignore_channels: ignore_channels, channel_keys: channel_keys)
|
87
86
|
end
|
88
87
|
|
89
88
|
def hold_best_available(key, number, hold_token, categories: nil, order_id: nil, keep_extra_data: nil, extra_data: nil, ticket_types: nil, ignore_channels: nil, channel_keys: nil)
|
90
|
-
change_best_available_object_status(key, number,
|
89
|
+
change_best_available_object_status(key, number, ObjectStatus::HELD, categories: categories, hold_token: hold_token, order_id: order_id, keep_extra_data: keep_extra_data, extra_data: extra_data, ticket_types: ticket_types, ignore_channels: ignore_channels, channel_keys: channel_keys)
|
91
90
|
end
|
92
91
|
|
93
92
|
def release(event_key_or_keys, object_or_objects, hold_token: nil, order_id: nil, keep_extra_data: nil, ignore_channels: nil, channel_keys: nil)
|
94
|
-
change_object_status(event_key_or_keys, object_or_objects,
|
93
|
+
change_object_status(event_key_or_keys, object_or_objects, ObjectStatus::FREE, hold_token: hold_token, order_id: order_id, keep_extra_data: keep_extra_data, ignore_channels: ignore_channels, channel_keys: channel_keys)
|
95
94
|
end
|
96
95
|
|
97
96
|
def delete(key:)
|
@@ -101,23 +100,23 @@ module Seatsio
|
|
101
100
|
|
102
101
|
def retrieve(key:)
|
103
102
|
response = @http_client.get("events/#{key}")
|
104
|
-
|
103
|
+
Event.new(response)
|
105
104
|
end
|
106
105
|
|
107
106
|
def list
|
108
|
-
Pagination::Cursor.new(
|
107
|
+
Pagination::Cursor.new(Event, 'events', @http_client)
|
109
108
|
end
|
110
109
|
|
111
110
|
def list_status_changes(key, object_id = nil)
|
112
111
|
if object_id != nil
|
113
112
|
status_changes_for_object key: key, object_id: object_id
|
114
113
|
else
|
115
|
-
Pagination::Cursor.new(
|
114
|
+
Pagination::Cursor.new(StatusChange, "/events/#{key}/status-changes", @http_client)
|
116
115
|
end
|
117
116
|
end
|
118
117
|
|
119
118
|
def status_changes_for_object(key:, object_id:)
|
120
|
-
Pagination::Cursor.new(
|
119
|
+
Pagination::Cursor.new(StatusChange, "/events/#{key}/objects/#{object_id}/status-changes", @http_client)
|
121
120
|
end
|
122
121
|
|
123
122
|
def mark_as_not_for_sale(key:, objects: nil, categories: nil)
|
@@ -157,12 +156,11 @@ module Seatsio
|
|
157
156
|
payload
|
158
157
|
end
|
159
158
|
|
160
|
-
def build_event_request(chart_key: nil, event_key: nil,
|
159
|
+
def build_event_request(chart_key: nil, event_key: nil, table_booking_config: nil, social_distancing_ruleset_key: nil)
|
161
160
|
result = {}
|
162
161
|
result["chartKey"] = chart_key if chart_key
|
163
162
|
result["eventKey"] = event_key if event_key
|
164
|
-
result["
|
165
|
-
result["tableBookingModes"] = table_booking_modes if table_booking_modes != nil
|
163
|
+
result["tableBookingConfig"] = table_booking_config_to_request(table_booking_config) if table_booking_config != nil
|
166
164
|
result["socialDistancingRulesetKey"] = social_distancing_ruleset_key if social_distancing_ruleset_key != nil
|
167
165
|
result
|
168
166
|
end
|
@@ -179,12 +177,18 @@ module Seatsio
|
|
179
177
|
params.each do |param|
|
180
178
|
r = {}
|
181
179
|
r["eventKey"] = param[:event_key] if param[:event_key] != nil
|
182
|
-
r["
|
183
|
-
r["tableBookingModes"] = param[:table_booking_modes] if param[:table_booking_modes] != nil
|
180
|
+
r["tableBookingConfig"] = table_booking_config_to_request(param[:table_booking_config]) if param[:table_booking_config] != nil
|
184
181
|
result.push(r)
|
185
182
|
end
|
186
183
|
result
|
187
184
|
end
|
188
185
|
|
186
|
+
def table_booking_config_to_request(table_booking_config)
|
187
|
+
result = {}
|
188
|
+
result["mode"] = table_booking_config.mode
|
189
|
+
result["tables"] = table_booking_config.tables if table_booking_config.tables != nil
|
190
|
+
result
|
191
|
+
end
|
192
|
+
|
189
193
|
end
|
190
194
|
end
|
data/lib/seatsio/hold_tokens.rb
CHANGED
@@ -21,18 +21,18 @@ module Seatsio
|
|
21
21
|
body[:expiresInMinutes] = expires_in_minutes
|
22
22
|
end
|
23
23
|
response = @http_client.post('hold-tokens', body)
|
24
|
-
|
24
|
+
HoldToken.new(response)
|
25
25
|
end
|
26
26
|
|
27
27
|
def retrieve(hold_token)
|
28
28
|
response = @http_client.get("/hold-tokens/#{hold_token}")
|
29
|
-
|
29
|
+
HoldToken.new(response)
|
30
30
|
end
|
31
31
|
|
32
32
|
def expire_in_minutes(hold_token, expires_in_minutes = nil)
|
33
33
|
body = {"expiresInMinutes": expires_in_minutes}
|
34
34
|
response = @http_client.post("/hold-tokens/#{hold_token}", body)
|
35
|
-
|
35
|
+
HoldToken.new(response)
|
36
36
|
end
|
37
37
|
end
|
38
38
|
end
|
data/lib/seatsio/subaccounts.rb
CHANGED
@@ -17,7 +17,7 @@ module Seatsio
|
|
17
17
|
body['name'] = name if name
|
18
18
|
|
19
19
|
response = @http_client.post("subaccounts", body)
|
20
|
-
|
20
|
+
Subaccount.new(response)
|
21
21
|
end
|
22
22
|
|
23
23
|
def update(id:, name: nil)
|
@@ -50,17 +50,17 @@ module Seatsio
|
|
50
50
|
|
51
51
|
def retrieve(id:)
|
52
52
|
response = @http_client.get("/subaccounts/#{id}")
|
53
|
-
|
53
|
+
Subaccount.new(response)
|
54
54
|
end
|
55
55
|
|
56
56
|
def copy_chart_to_parent(id: nil, chart_key: nil)
|
57
57
|
response = @http_client.post("/subaccounts/#{id}/charts/#{chart_key}/actions/copy-to/parent")
|
58
|
-
|
58
|
+
Chart.new(response)
|
59
59
|
end
|
60
60
|
|
61
61
|
def copy_chart_to_subaccount(from_id: nil, to_id: nil, chart_key: nil)
|
62
62
|
response = @http_client.post("/subaccounts/#{from_id}/charts/#{chart_key}/actions/copy-to/#{to_id}")
|
63
|
-
|
63
|
+
Chart.new(response)
|
64
64
|
end
|
65
65
|
|
66
66
|
def regenerate_secret_key(id:)
|
@@ -75,7 +75,7 @@ module Seatsio
|
|
75
75
|
|
76
76
|
def cursor(status: nil)
|
77
77
|
endpoint = status ? "subaccounts/#{status}" : 'subaccounts'
|
78
|
-
Pagination::Cursor.new(
|
78
|
+
Pagination::Cursor.new(Subaccount, endpoint, @http_client)
|
79
79
|
end
|
80
80
|
end
|
81
81
|
end
|
@@ -13,19 +13,19 @@ module Seatsio
|
|
13
13
|
def summary_for_all_months
|
14
14
|
url = "reports/usage"
|
15
15
|
body = @http_client.get(url)
|
16
|
-
|
16
|
+
UsageSummaryForAllMoths.new(body)
|
17
17
|
end
|
18
18
|
|
19
19
|
def details_for_month(month)
|
20
20
|
url = "reports/usage/month/" + month.serialize
|
21
21
|
body = @http_client.get(url)
|
22
|
-
body.map { |item|
|
22
|
+
body.map { |item| UsageDetails.new(item) }
|
23
23
|
end
|
24
24
|
|
25
25
|
def details_for_event_in_month(eventId, month)
|
26
26
|
url = "reports/usage/month/" + month.serialize + "/event/" + eventId.to_s
|
27
27
|
body = @http_client.get(url)
|
28
|
-
body.map { |item|
|
28
|
+
body.map { |item| UsageForObject.new(item) }
|
29
29
|
end
|
30
30
|
end
|
31
31
|
end
|
data/lib/seatsio/version.rb
CHANGED
data/lib/seatsio/workspaces.rb
CHANGED
@@ -18,7 +18,7 @@ module Seatsio
|
|
18
18
|
body['isTest'] = is_test if is_test
|
19
19
|
|
20
20
|
response = @http_client.post("workspaces", body)
|
21
|
-
|
21
|
+
Workspace.new(response)
|
22
22
|
end
|
23
23
|
|
24
24
|
def update(key:, name:)
|
@@ -52,13 +52,13 @@ module Seatsio
|
|
52
52
|
|
53
53
|
def retrieve(key:)
|
54
54
|
response = @http_client.get("/workspaces/#{key}")
|
55
|
-
|
55
|
+
Workspace.new(response)
|
56
56
|
end
|
57
57
|
|
58
58
|
private
|
59
59
|
|
60
60
|
def cursor()
|
61
|
-
Pagination::Cursor.new(
|
61
|
+
Pagination::Cursor.new(Workspace, 'workspaces', @http_client)
|
62
62
|
end
|
63
63
|
end
|
64
64
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: seatsio
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 27.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Seats.io
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-11-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|