seatsio 26.0.0 → 28.1.0
Sign up to get free protection for your applications and to get access to all the features.
- 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 +78 -24
- data/lib/seatsio/event_reports.rb +2 -2
- data/lib/seatsio/events.rb +35 -32
- data/lib/seatsio/events/change_object_status_request.rb +2 -1
- 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: f16665209691ecc5c5be881c2c37580dc4525c3d1e2c067780830241aae5c77b
|
4
|
+
data.tar.gz: 84ecfa02bb8129ee5bc78f71319201c9ca1650b74cb570666628aa2a57dd9287
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8882b8209078d93b30db4f410c27f063a79eea273840e02a060b36b01c28eb6953007e46244abfc3f0f863e3ede87de1d15bd804bdbf121024bdad618b9ec341
|
7
|
+
data.tar.gz: 13663be3aaf3e6189037d5678c86dc6575785dcb3150a09d197f4a6ab16bd82d20c4edf3822f4d3bcfb7d9cbe414b49a749eae08315b609abe022521d4a442b0
|
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
|
|
@@ -22,10 +22,19 @@ module Seatsio::Domain
|
|
22
22
|
@archived = data['archived']
|
23
23
|
@validation = data['validation']
|
24
24
|
@social_distancing_rulesets = data['socialDistancingRulesets'].map {
|
25
|
-
|key, r| [key, SocialDistancingRuleset.new(r['name'],
|
26
|
-
|
27
|
-
|
28
|
-
|
25
|
+
|key, r| [key, SocialDistancingRuleset.new(r['name'],
|
26
|
+
number_of_disabled_seats_to_the_sides: r['numberOfDisabledSeatsToTheSides'],
|
27
|
+
disable_seats_in_front_and_behind: r['disableSeatsInFrontAndBehind'],
|
28
|
+
disable_diagonal_seats_in_front_and_behind: r['disableDiagonalSeatsInFrontAndBehind'],
|
29
|
+
number_of_disabled_aisle_seats: r['numberOfDisabledAisleSeats'],
|
30
|
+
max_group_size: r['maxGroupSize'],
|
31
|
+
max_occupancy_absolute: r['maxOccupancyAbsolute'],
|
32
|
+
max_occupancy_percentage: r['maxOccupancyPercentage'],
|
33
|
+
one_group_per_table: r['oneGroupPerTable'],
|
34
|
+
fixed_group_layout: r['fixedGroupLayout'],
|
35
|
+
disabled_seats: r['disabledSeats'],
|
36
|
+
enabled_seats: r['enabledSeats'],
|
37
|
+
index: r['index'])]
|
29
38
|
}.to_h
|
30
39
|
end
|
31
40
|
end
|
@@ -61,6 +70,38 @@ module Seatsio::Domain
|
|
61
70
|
end
|
62
71
|
end
|
63
72
|
|
73
|
+
class TableBookingConfig
|
74
|
+
|
75
|
+
attr_reader :mode, :tables
|
76
|
+
|
77
|
+
def initialize(mode, tables = nil)
|
78
|
+
@mode = mode
|
79
|
+
@tables = tables
|
80
|
+
end
|
81
|
+
|
82
|
+
def self.inherit
|
83
|
+
TableBookingConfig.new('INHERIT')
|
84
|
+
end
|
85
|
+
|
86
|
+
def self.all_by_seat
|
87
|
+
TableBookingConfig.new('ALL_BY_SEAT')
|
88
|
+
end
|
89
|
+
|
90
|
+
def self.all_by_table
|
91
|
+
TableBookingConfig.new('ALL_BY_TABLE')
|
92
|
+
end
|
93
|
+
|
94
|
+
def self.custom(tables)
|
95
|
+
TableBookingConfig.new('CUSTOM', tables)
|
96
|
+
end
|
97
|
+
|
98
|
+
def self.from_json(data)
|
99
|
+
if data
|
100
|
+
TableBookingConfig.new(data['mode'], data['tables'])
|
101
|
+
end
|
102
|
+
end
|
103
|
+
end
|
104
|
+
|
64
105
|
class Channel
|
65
106
|
attr_reader :key, :name, :color, :index, :objects
|
66
107
|
|
@@ -84,17 +125,16 @@ module Seatsio::Domain
|
|
84
125
|
|
85
126
|
class Event
|
86
127
|
|
87
|
-
attr_accessor :id, :key, :chart_key, :
|
88
|
-
:
|
128
|
+
attr_accessor :id, :key, :chart_key, :supports_best_available,
|
129
|
+
:table_booking_config, :for_sale_config, :created_on, :updated_on, :channels,
|
89
130
|
:social_distancing_ruleset_key
|
90
131
|
|
91
132
|
def initialize(data)
|
92
133
|
@id = data['id']
|
93
134
|
@key = data['key']
|
94
135
|
@chart_key = data['chartKey']
|
95
|
-
@book_whole_tables = data['bookWholeTables']
|
96
136
|
@supports_best_available = data['supportsBestAvailable']
|
97
|
-
@
|
137
|
+
@table_booking_config = TableBookingConfig::from_json(data['tableBookingConfig'])
|
98
138
|
@for_sale_config = ForSaleConfig.new(data['forSaleConfig']) if data['forSaleConfig']
|
99
139
|
@created_on = parse_date(data['createdOn'])
|
100
140
|
@updated_on = parse_date(data['updatedOn'])
|
@@ -185,7 +225,7 @@ module Seatsio::Domain
|
|
185
225
|
attr_reader :objects
|
186
226
|
|
187
227
|
def initialize(data)
|
188
|
-
@objects = Seatsio
|
228
|
+
@objects = Seatsio.to_object_details(data['objects']);
|
189
229
|
end
|
190
230
|
end
|
191
231
|
|
@@ -217,7 +257,7 @@ module Seatsio::Domain
|
|
217
257
|
def initialize(data)
|
218
258
|
@next_to_each_other = data['nextToEachOther']
|
219
259
|
@objects = data['objects']
|
220
|
-
@object_details = Seatsio
|
260
|
+
@object_details = Seatsio.to_object_details(data['objectDetails'])
|
221
261
|
end
|
222
262
|
end
|
223
263
|
|
@@ -475,45 +515,59 @@ module Seatsio::Domain
|
|
475
515
|
|
476
516
|
class SocialDistancingRuleset
|
477
517
|
attr_reader :name, :number_of_disabled_seats_to_the_sides, :disable_seats_in_front_and_behind,
|
478
|
-
:number_of_disabled_aisle_seats, :max_group_size, :max_occupancy_absolute,
|
479
|
-
:max_occupancy_percentage, :fixed_group_layout, :disabled_seats, :enabled_seats, :index
|
518
|
+
:disable_diagonal_seats_in_front_and_behind, :number_of_disabled_aisle_seats, :max_group_size, :max_occupancy_absolute,
|
519
|
+
:max_occupancy_percentage, :one_group_per_table, :fixed_group_layout, :disabled_seats, :enabled_seats, :index
|
480
520
|
|
481
|
-
def initialize(name, number_of_disabled_seats_to_the_sides
|
482
|
-
max_group_size
|
483
|
-
disabled_seats
|
521
|
+
def initialize(name, number_of_disabled_seats_to_the_sides: 0, disable_seats_in_front_and_behind: false, disable_diagonal_seats_in_front_and_behind: false,
|
522
|
+
number_of_disabled_aisle_seats: 0, max_group_size: 0, max_occupancy_absolute: 0, max_occupancy_percentage: 0, one_group_per_table: false,
|
523
|
+
fixed_group_layout: false, disabled_seats: [], enabled_seats: [], index: 0)
|
484
524
|
@name = name
|
485
525
|
@number_of_disabled_seats_to_the_sides = number_of_disabled_seats_to_the_sides
|
486
526
|
@disable_seats_in_front_and_behind = disable_seats_in_front_and_behind
|
527
|
+
@disable_diagonal_seats_in_front_and_behind = disable_diagonal_seats_in_front_and_behind
|
487
528
|
@number_of_disabled_aisle_seats = number_of_disabled_aisle_seats
|
488
529
|
@max_group_size = max_group_size
|
489
530
|
@max_occupancy_absolute = max_occupancy_absolute
|
490
531
|
@max_occupancy_percentage = max_occupancy_percentage
|
532
|
+
@one_group_per_table = one_group_per_table
|
491
533
|
@fixed_group_layout = fixed_group_layout
|
492
534
|
@disabled_seats = disabled_seats
|
493
535
|
@enabled_seats = enabled_seats
|
494
536
|
@index = index
|
495
537
|
end
|
496
538
|
|
497
|
-
def self.fixed(name, disabled_seats
|
498
|
-
SocialDistancingRuleset.new(name,
|
539
|
+
def self.fixed(name, disabled_seats: [], index: 0)
|
540
|
+
return SocialDistancingRuleset.new(name, index: index, disabled_seats: disabled_seats, fixed_group_layout: true)
|
499
541
|
end
|
500
542
|
|
501
|
-
def self.rule_based(name, number_of_disabled_seats_to_the_sides
|
502
|
-
max_group_size
|
503
|
-
disabled_seats
|
504
|
-
SocialDistancingRuleset.new(name,
|
505
|
-
|
506
|
-
|
543
|
+
def self.rule_based(name, number_of_disabled_seats_to_the_sides: 0, disable_seats_in_front_and_behind: false, disable_diagonal_seats_in_front_and_behind: false,
|
544
|
+
number_of_disabled_aisle_seats: 0, max_group_size: 0, max_occupancy_absolute: 0, max_occupancy_percentage: 0, one_group_per_table: false,
|
545
|
+
disabled_seats: [], enabled_seats: [], index: 0)
|
546
|
+
return SocialDistancingRuleset.new(name,
|
547
|
+
number_of_disabled_seats_to_the_sides: number_of_disabled_seats_to_the_sides,
|
548
|
+
disable_seats_in_front_and_behind: disable_seats_in_front_and_behind,
|
549
|
+
disable_diagonal_seats_in_front_and_behind: disable_diagonal_seats_in_front_and_behind,
|
550
|
+
number_of_disabled_aisle_seats: number_of_disabled_aisle_seats,
|
551
|
+
max_group_size: max_group_size,
|
552
|
+
max_occupancy_absolute: max_occupancy_absolute,
|
553
|
+
max_occupancy_percentage: max_occupancy_percentage,
|
554
|
+
one_group_per_table: one_group_per_table,
|
555
|
+
fixed_group_layout: false,
|
556
|
+
disabled_seats: disabled_seats,
|
557
|
+
enabled_seats: enabled_seats,
|
558
|
+
index: index)
|
507
559
|
end
|
508
560
|
|
509
561
|
def == (other)
|
510
562
|
self.name == other.name &&
|
511
563
|
self.number_of_disabled_seats_to_the_sides == other.number_of_disabled_seats_to_the_sides &&
|
512
564
|
self.disable_seats_in_front_and_behind == other.disable_seats_in_front_and_behind &&
|
565
|
+
self.disable_diagonal_seats_in_front_and_behind == other.disable_diagonal_seats_in_front_and_behind &&
|
513
566
|
self.number_of_disabled_aisle_seats == other.number_of_disabled_aisle_seats &&
|
514
567
|
self.max_group_size == other.max_group_size &&
|
515
568
|
self.max_occupancy_absolute == other.max_occupancy_absolute &&
|
516
569
|
self.max_occupancy_percentage == other.max_occupancy_percentage &&
|
570
|
+
self.one_group_per_table == other.one_group_per_table &&
|
517
571
|
self.fixed_group_layout == other.fixed_group_layout &&
|
518
572
|
self.disabled_seats == other.disabled_seats &&
|
519
573
|
self.enabled_seats == other.enabled_seats &&
|
@@ -78,11 +78,11 @@ module Seatsio
|
|
78
78
|
if report_filter
|
79
79
|
url = "reports/events/#{event_key}/#{report_type}/#{report_filter}"
|
80
80
|
body = @http_client.get(url)
|
81
|
-
|
81
|
+
EventReport.new(body[report_filter])
|
82
82
|
else
|
83
83
|
url = "reports/events/#{event_key}/#{report_type}"
|
84
84
|
body = @http_client.get(url)
|
85
|
-
|
85
|
+
EventReport.new(body)
|
86
86
|
end
|
87
87
|
end
|
88
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,77 +46,76 @@ 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
|
-
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,
|
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, ignore_social_distancing: nil)
|
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, ignore_social_distancing: ignore_social_distancing)
|
55
54
|
end
|
56
55
|
|
57
|
-
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)
|
58
|
-
request = create_change_object_status_request(object_or_objects, status, hold_token, order_id, event_key_or_keys, keep_extra_data, ignore_channels, channel_keys)
|
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, ignore_social_distancing: nil)
|
57
|
+
request = create_change_object_status_request(object_or_objects, status, hold_token, order_id, event_key_or_keys, keep_extra_data, ignore_channels, channel_keys, ignore_social_distancing)
|
59
58
|
request[:params] = {
|
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
|
-
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,
|
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, ignore_social_distancing: nil)
|
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, ignore_social_distancing: ignore_social_distancing)
|
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:)
|
98
97
|
@http_client.delete("/events/#{key}")
|
99
98
|
end
|
100
99
|
|
101
|
-
|
102
100
|
def retrieve(key:)
|
103
101
|
response = @http_client.get("events/#{key}")
|
104
|
-
|
102
|
+
Event.new(response)
|
105
103
|
end
|
106
104
|
|
107
105
|
def list
|
108
|
-
Pagination::Cursor.new(
|
106
|
+
Pagination::Cursor.new(Event, 'events', @http_client)
|
109
107
|
end
|
110
108
|
|
111
109
|
def list_status_changes(key, object_id = nil)
|
112
110
|
if object_id != nil
|
113
111
|
status_changes_for_object key: key, object_id: object_id
|
114
112
|
else
|
115
|
-
Pagination::Cursor.new(
|
113
|
+
Pagination::Cursor.new(StatusChange, "/events/#{key}/status-changes", @http_client)
|
116
114
|
end
|
117
115
|
end
|
118
116
|
|
119
117
|
def status_changes_for_object(key:, object_id:)
|
120
|
-
Pagination::Cursor.new(
|
118
|
+
Pagination::Cursor.new(StatusChange, "/events/#{key}/objects/#{object_id}/status-changes", @http_client)
|
121
119
|
end
|
122
120
|
|
123
121
|
def mark_as_not_for_sale(key:, objects: nil, categories: nil)
|
@@ -157,12 +155,11 @@ module Seatsio
|
|
157
155
|
payload
|
158
156
|
end
|
159
157
|
|
160
|
-
def build_event_request(chart_key: nil, event_key: nil,
|
158
|
+
def build_event_request(chart_key: nil, event_key: nil, table_booking_config: nil, social_distancing_ruleset_key: nil)
|
161
159
|
result = {}
|
162
160
|
result["chartKey"] = chart_key if chart_key
|
163
161
|
result["eventKey"] = event_key if event_key
|
164
|
-
result["
|
165
|
-
result["tableBookingModes"] = table_booking_modes if table_booking_modes != nil
|
162
|
+
result["tableBookingConfig"] = table_booking_config_to_request(table_booking_config) if table_booking_config != nil
|
166
163
|
result["socialDistancingRulesetKey"] = social_distancing_ruleset_key if social_distancing_ruleset_key != nil
|
167
164
|
result
|
168
165
|
end
|
@@ -179,12 +176,18 @@ module Seatsio
|
|
179
176
|
params.each do |param|
|
180
177
|
r = {}
|
181
178
|
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
|
179
|
+
r["tableBookingConfig"] = table_booking_config_to_request(param[:table_booking_config]) if param[:table_booking_config] != nil
|
184
180
|
result.push(r)
|
185
181
|
end
|
186
182
|
result
|
187
183
|
end
|
188
184
|
|
185
|
+
def table_booking_config_to_request(table_booking_config)
|
186
|
+
result = {}
|
187
|
+
result["mode"] = table_booking_config.mode
|
188
|
+
result["tables"] = table_booking_config.tables if table_booking_config.tables != nil
|
189
|
+
result
|
190
|
+
end
|
191
|
+
|
189
192
|
end
|
190
193
|
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
def create_change_object_status_request(object_or_objects, status, hold_token, order_id, event_key_or_keys, keep_extra_data, ignore_channels, channel_keys)
|
1
|
+
def create_change_object_status_request(object_or_objects, status, hold_token, order_id, event_key_or_keys, keep_extra_data, ignore_channels, channel_keys, ignore_social_distancing)
|
2
2
|
result = {}
|
3
3
|
result[:objects] = normalize(object_or_objects)
|
4
4
|
result[:status] = status
|
@@ -12,6 +12,7 @@ def create_change_object_status_request(object_or_objects, status, hold_token, o
|
|
12
12
|
result[:keepExtraData] = keep_extra_data if keep_extra_data != nil
|
13
13
|
result[:ignoreChannels] = ignore_channels if ignore_channels != nil
|
14
14
|
result[:channelKeys] = channel_keys if channel_keys != nil
|
15
|
+
result[:ignoreSocialDistancing] = ignore_social_distancing if ignore_social_distancing != nil
|
15
16
|
result
|
16
17
|
end
|
17
18
|
|
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: 28.1.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-12-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|