seatsio 26.2.0 → 29.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a271b58be4efc9c27a4604733e1a7951b0f72b65d206c980c36f2d932be2baea
4
- data.tar.gz: 9b3decce98eb7a0459063592a5428e9395296c3fad72e5e7e625bd97498b0886
3
+ metadata.gz: fcf524f68021a82f0ffd1fe6b3cd3ba9f0ab3db78ae014f0da0e73f1627bccd5
4
+ data.tar.gz: 5b5bce5ae300c40909cea6b116b3d6c7ac65037253ac66f57fc6ad0e017c1513
5
5
  SHA512:
6
- metadata.gz: e09498be7a8d43d228f3d7fbc5c7d77bc06a84510f29b9bc86f1c354132d2400772d3993e76c29ecec87ad2b72006f5274d0f2cfc3f0f75e740b8a2297441f76
7
- data.tar.gz: c8c0cc4143ab7311932a5b5d8990285bbc33c552e05e928d6bb3cee2852764299c16348fae068817988ce07c9f7595ca559e784820a33bebdbbf388e30ee115a
6
+ metadata.gz: 67a2f3b7610fae718e882c2742bd1310d47f61a84971b8990a70ccffd565351a8a9e9f739e965c6478bdbdd0d5b54bfd69176b65094e9372cac7bc8acf979ccc
7
+ data.tar.gz: '009503e48798bfa219cbc03832483b0fffdafa1bd087bfe226afb93f295c6e6326c80da15e243203e42b07fd68fcecd0125f4b3256ef16aab89d0db0fd0fcefc'
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- seatsio (26.2.0)
4
+ seatsio (29.0.0)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
@@ -28,7 +28,7 @@ module Seatsio
28
28
  params = book_whole_tables.nil? ? {} : { bookWholeTables: book_whole_tables }
29
29
  url = "reports/charts/#{chart_key}/#{report_type}"
30
30
  body = @http_client.get(url, params)
31
- Domain::ChartReport.new(body)
31
+ ChartReport.new(body)
32
32
  end
33
33
  end
34
34
  end
@@ -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(Domain::Chart, 'charts/archive', @http_client)
16
+ @archive = Pagination::Cursor.new(Chart, 'charts/archive', @http_client)
17
17
  end
18
18
 
19
- # @return [Seatsio::Domain::Chart]
19
+ # @return [Seatsio::Chart]
20
20
  def retrieve(chart_key)
21
21
  response = @http_client.get("charts/#{chart_key}")
22
- Domain::Chart.new(response)
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
- Domain::Chart.new(response)
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
- Domain::Chart.new(response)
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
- Domain::Chart.new(response)
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
- Domain::Chart.new(response)
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
- Domain::Chart.new(response)
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
- Domain::Chart.new(response)
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(Domain::Chart, 'charts', @http_client)
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::Domain::ChartValidationResult.new(response)
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::Domain::ChartValidationResult.new(response)
131
+ Seatsio::ChartValidationResult.new(response)
132
132
  end
133
133
 
134
134
  private
@@ -1,6 +1,6 @@
1
1
  require 'seatsio/util'
2
2
 
3
- module Seatsio::Domain
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'], r['numberOfDisabledSeatsToTheSides'], r['disableSeatsInFrontAndBehind'],
26
- r['numberOfDisabledAisleSeats'], r['maxGroupSize'],
27
- r['maxOccupancyAbsolute'], r['maxOccupancyPercentage'], r['oneGroupPerTable'], r['fixedGroupLayout'],
28
- r['disabledSeats'], r['enabledSeats'], r['index'])]
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, :book_whole_tables, :supports_best_available,
88
- :table_booking_modes, :for_sale_config, :created_on, :updated_on, :channels,
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
- @table_booking_modes = data['tableBookingModes']
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::Domain.to_object_details(data['objects']);
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::Domain.to_object_details(data['objectDetails'])
260
+ @object_details = Seatsio.to_object_details(data['objectDetails'])
221
261
  end
222
262
  end
223
263
 
@@ -343,15 +383,15 @@ module Seatsio::Domain
343
383
 
344
384
  class UsageDetails
345
385
 
346
- attr_reader :subaccount
386
+ attr_reader :workspace
347
387
 
348
388
  def initialize(data)
349
- @subaccount = data['subaccount'] ? UsageSubaccount.new(data['subaccount']) : nil
389
+ @workspace = data['workspace'] ? UsageWorkspace.new(data['workspace']) : nil
350
390
  @usage_by_chart = data['usageByChart'].map { |usage| UsageByChart.new(usage) }
351
391
  end
352
392
  end
353
393
 
354
- class UsageSubaccount
394
+ class UsageWorkspace
355
395
 
356
396
  attr_reader :id
357
397
 
@@ -475,15 +515,16 @@ 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,
518
+ :disable_diagonal_seats_in_front_and_behind, :number_of_disabled_aisle_seats, :max_group_size, :max_occupancy_absolute,
479
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 = 0, disable_seats_in_front_and_behind = false, number_of_disabled_aisle_seats = 0,
482
- max_group_size = 0, max_occupancy_absolute = 0, max_occupancy_percentage = 0, one_group_per_table = false,
483
- fixed_group_layout = false, disabled_seats = [], enabled_seats = [], index = 0)
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
@@ -495,22 +536,33 @@ module Seatsio::Domain
495
536
  @index = index
496
537
  end
497
538
 
498
- def self.fixed(name, disabled_seats = [], index = 0)
499
- SocialDistancingRuleset.new(name, 0, false, 0, 0, 0, 0, false, true, disabled_seats, [], index)
539
+ def self.fixed(name, disabled_seats: [], index: 0)
540
+ return SocialDistancingRuleset.new(name, index: index, disabled_seats: disabled_seats, fixed_group_layout: true)
500
541
  end
501
542
 
502
- 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,
503
- max_group_size = 0, max_occupancy_absolute = 0, max_occupancy_percentage = 0, one_group_per_table = false,
504
- disabled_seats = [], enabled_seats = [], index = 0)
505
- SocialDistancingRuleset.new(name, number_of_disabled_seats_to_the_sides, disable_seats_in_front_and_behind, number_of_disabled_aisle_seats,
506
- max_group_size, max_occupancy_absolute, max_occupancy_percentage,
507
- one_group_per_table, false, disabled_seats, enabled_seats, index)
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)
508
559
  end
509
560
 
510
561
  def == (other)
511
562
  self.name == other.name &&
512
563
  self.number_of_disabled_seats_to_the_sides == other.number_of_disabled_seats_to_the_sides &&
513
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 &&
514
566
  self.number_of_disabled_aisle_seats == other.number_of_disabled_aisle_seats &&
515
567
  self.max_group_size == other.max_group_size &&
516
568
  self.max_occupancy_absolute == other.max_occupancy_absolute &&
@@ -15,26 +15,50 @@ module Seatsio
15
15
  fetch_summary_report('byStatus', event_key)
16
16
  end
17
17
 
18
+ def deep_summary_by_status(event_key)
19
+ fetch_deep_summary_report('byStatus', event_key)
20
+ end
21
+
18
22
  def summary_by_category_key(event_key)
19
23
  fetch_summary_report('byCategoryKey', event_key)
20
24
  end
21
25
 
26
+ def deep_summary_by_category_key(event_key)
27
+ fetch_deep_summary_report('byCategoryKey', event_key)
28
+ end
29
+
22
30
  def summary_by_category_label(event_key)
23
31
  fetch_summary_report('byCategoryLabel', event_key)
24
32
  end
25
33
 
34
+ def deep_summary_by_category_label(event_key)
35
+ fetch_deep_summary_report('byCategoryLabel', event_key)
36
+ end
37
+
26
38
  def summary_by_section(event_key)
27
39
  fetch_summary_report('bySection', event_key)
28
40
  end
29
41
 
42
+ def deep_summary_by_section(event_key)
43
+ fetch_deep_summary_report('bySection', event_key)
44
+ end
45
+
30
46
  def summary_by_selectability(event_key)
31
47
  fetch_summary_report('bySelectability', event_key)
32
48
  end
33
49
 
50
+ def deep_summary_by_selectability(event_key)
51
+ fetch_deep_summary_report('bySelectability', event_key)
52
+ end
53
+
34
54
  def summary_by_channel(event_key)
35
55
  fetch_summary_report('byChannel', event_key)
36
56
  end
37
57
 
58
+ def deep_summary_by_channel(event_key)
59
+ fetch_deep_summary_report('byChannel', event_key)
60
+ end
61
+
38
62
  def by_label(event_key, label = nil)
39
63
  fetch_report('byLabel', event_key, label)
40
64
  end
@@ -74,15 +98,20 @@ module Seatsio
74
98
  @http_client.get(url)
75
99
  end
76
100
 
101
+ def fetch_deep_summary_report(report_type, event_key)
102
+ url = "reports/events/#{event_key}/#{report_type}/summary/deep"
103
+ @http_client.get(url)
104
+ end
105
+
77
106
  def fetch_report(report_type, event_key, report_filter = nil)
78
107
  if report_filter
79
108
  url = "reports/events/#{event_key}/#{report_type}/#{report_filter}"
80
109
  body = @http_client.get(url)
81
- Domain::EventReport.new(body[report_filter])
110
+ EventReport.new(body[report_filter])
82
111
  else
83
112
  url = "reports/events/#{event_key}/#{report_type}"
84
113
  body = @http_client.get(url)
85
- Domain::EventReport.new(body)
114
+ EventReport.new(body)
86
115
  end
87
116
  end
88
117
  end
@@ -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, book_whole_tables: nil, table_booking_modes: nil, social_distancing_ruleset_key: nil)
19
- payload = build_event_request(chart_key: chart_key, event_key: event_key, book_whole_tables: book_whole_tables,
20
- table_booking_modes: table_booking_modes, social_distancing_ruleset_key: social_distancing_ruleset_key)
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
- Domain::Event.new(response)
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
- Domain::Events.new(response).events
28
+ Events.new(response).events
29
29
  end
30
30
 
31
- def update(key:, chart_key: nil, event_key: nil, book_whole_tables: nil, table_booking_modes: nil, social_distancing_ruleset_key: nil)
32
- payload = build_event_request(chart_key: chart_key, event_key: event_key, book_whole_tables: book_whole_tables,
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
- Domain::ObjectStatus.new(response)
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, Domain::ObjectStatus::BOOKED, hold_token: hold_token, order_id: order_id, keep_extra_data: keep_extra_data, ignore_channels: ignore_channels, channel_keys: channel_keys)
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
- Domain::ChangeObjectStatusResult.new(response)
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 => { :expand => 'objects' }
68
+ :params => {:expand => 'objects'}
70
69
  }
71
70
  response = @http_client.post("events/actions/change-object-status", request)
72
- Domain::ChangeObjectStatusInBatchResult.new(response).results
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, Domain::ObjectStatus::HELD, hold_token: hold_token, order_id: order_id, keep_extra_data: keep_extra_data, ignore_channels: ignore_channels, channel_keys: channel_keys)
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
- Domain::BestAvailableObjects.new(response)
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, Domain::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)
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, Domain::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)
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, Domain::ObjectStatus::FREE, hold_token: hold_token, order_id: order_id, keep_extra_data: keep_extra_data, ignore_channels: ignore_channels, channel_keys: channel_keys)
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
- Domain::Event.new(response)
102
+ Event.new(response)
105
103
  end
106
104
 
107
105
  def list
108
- Pagination::Cursor.new(Domain::Event, 'events', @http_client)
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(Domain::StatusChange, "/events/#{key}/status-changes", @http_client)
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(Domain::StatusChange, "/events/#{key}/objects/#{object_id}/status-changes", @http_client)
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, book_whole_tables: nil, table_booking_modes: nil, social_distancing_ruleset_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["bookWholeTables"] = book_whole_tables if book_whole_tables != nil
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["bookWholeTables"] = param[:book_whole_tables] if param[:book_whole_tables] != nil
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
 
@@ -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
- Domain::HoldToken.new(response)
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
- Domain::HoldToken.new(response)
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
- Domain::HoldToken.new(response)
35
+ HoldToken.new(response)
36
36
  end
37
37
  end
38
38
  end
@@ -17,7 +17,7 @@ module Seatsio
17
17
  body['name'] = name if name
18
18
 
19
19
  response = @http_client.post("subaccounts", body)
20
- Domain::Subaccount.new(response)
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
- Domain::Subaccount.new(response)
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
- Domain::Chart.new(response)
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
- Domain::Chart.new(response)
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(Domain::Subaccount, endpoint, @http_client)
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
- Domain::UsageSummaryForAllMoths.new(body)
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| Domain::UsageDetails.new(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| Domain::UsageForObject.new(item) }
28
+ body.map { |item| UsageForObject.new(item) }
29
29
  end
30
30
  end
31
31
  end
@@ -1,3 +1,3 @@
1
1
  module Seatsio
2
- VERSION = "26.2.0"
2
+ VERSION = "29.0.0"
3
3
  end
@@ -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
- Domain::Workspace.new(response)
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
- Domain::Workspace.new(response)
55
+ Workspace.new(response)
56
56
  end
57
57
 
58
58
  private
59
59
 
60
60
  def cursor()
61
- Pagination::Cursor.new(Domain::Workspace, 'workspaces', @http_client)
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: 26.2.0
4
+ version: 29.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-01 00:00:00.000000000 Z
11
+ date: 2020-12-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler