booker_ruby 1.14.0 → 2.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.
Files changed (120) hide show
  1. checksums.yaml +4 -4
  2. data/lib/booker/client.rb +154 -49
  3. data/lib/booker/errors.rb +6 -2
  4. data/lib/booker/model.rb +84 -0
  5. data/lib/booker/v4.1/availability.rb +21 -0
  6. data/lib/booker/v4.1/booking.rb +87 -0
  7. data/lib/booker/v4.1/merchant.rb +55 -0
  8. data/lib/booker/v4/business_client.rb +9 -0
  9. data/lib/booker/v4/business_rest.rb +88 -0
  10. data/lib/booker/v4/common_rest.rb +21 -0
  11. data/lib/booker/v4/customer_client.rb +15 -0
  12. data/lib/booker/v4/customer_rest.rb +15 -0
  13. data/lib/booker/v4/models/address.rb +14 -0
  14. data/lib/booker/v4/models/appointment.rb +79 -0
  15. data/lib/booker/v4/models/appointment_treatment.rb +53 -0
  16. data/lib/booker/v4/models/available_time.rb +15 -0
  17. data/lib/booker/v4/models/business_type.rb +7 -0
  18. data/lib/booker/v4/models/category.rb +7 -0
  19. data/lib/booker/v4/models/class_instance.rb +27 -0
  20. data/lib/booker/v4/models/country.rb +21 -0
  21. data/lib/booker/v4/models/current_price.rb +7 -0
  22. data/lib/booker/v4/models/customer.rb +54 -0
  23. data/lib/booker/v4/models/customer_2.rb +7 -0
  24. data/lib/booker/v4/models/customer_record_type.rb +7 -0
  25. data/lib/booker/v4/models/discount.rb +7 -0
  26. data/lib/booker/v4/models/dynamic_price.rb +13 -0
  27. data/lib/booker/v4/models/employee.rb +12 -0
  28. data/lib/booker/v4/models/feature_settings.rb +9 -0
  29. data/lib/booker/v4/models/final_total.rb +7 -0
  30. data/lib/booker/v4/models/gender.rb +7 -0
  31. data/lib/booker/v4/models/itinerary_time_slot.rb +9 -0
  32. data/lib/booker/v4/models/itinerary_time_slots_list.rb +9 -0
  33. data/lib/booker/v4/models/location.rb +40 -0
  34. data/lib/booker/v4/models/location_day_schedule.rb +20 -0
  35. data/lib/booker/v4/models/model.rb +78 -0
  36. data/lib/booker/v4/models/multi_service_availability_result.rb +9 -0
  37. data/lib/booker/v4/models/notification_settings.rb +14 -0
  38. data/lib/booker/v4/models/online_booking_settings.rb +25 -0
  39. data/lib/booker/v4/models/original_price.rb +7 -0
  40. data/lib/booker/v4/models/payment_method.rb +7 -0
  41. data/lib/booker/v4/models/preferred_staff_gender.rb +7 -0
  42. data/lib/booker/v4/models/price.rb +10 -0
  43. data/lib/booker/v4/models/receipt_display_price.rb +7 -0
  44. data/lib/booker/v4/models/room.rb +14 -0
  45. data/lib/booker/v4/models/shipping_address.rb +7 -0
  46. data/lib/booker/v4/models/source.rb +7 -0
  47. data/lib/booker/v4/models/spa.rb +7 -0
  48. data/lib/booker/v4/models/spa_employee_availability_search_item.rb +13 -0
  49. data/lib/booker/v4/models/status.rb +7 -0
  50. data/lib/booker/v4/models/sub_category.rb +7 -0
  51. data/lib/booker/v4/models/tag_price.rb +7 -0
  52. data/lib/booker/v4/models/teacher.rb +7 -0
  53. data/lib/booker/v4/models/teacher_2.rb +7 -0
  54. data/lib/booker/v4/models/time_zone.rb +10 -0
  55. data/lib/booker/v4/models/treatment.rb +21 -0
  56. data/lib/booker/v4/models/treatment_time_slot.rb +7 -0
  57. data/lib/booker/v4/models/type.rb +10 -0
  58. data/lib/booker/v4/models/user.rb +75 -0
  59. data/lib/booker/v4/request_helper.rb +33 -0
  60. data/lib/booker/v5/availability.rb +45 -0
  61. data/lib/booker/v5/models/availability.rb +18 -0
  62. data/lib/booker/v5/models/availability_result.rb +12 -0
  63. data/lib/booker/v5/models/location_hour.rb +16 -0
  64. data/lib/booker/v5/models/model.rb +9 -0
  65. data/lib/booker/v5/models/service.rb +13 -0
  66. data/lib/booker/v5/models/service_category.rb +11 -0
  67. data/lib/booker/version.rb +1 -1
  68. data/lib/booker_ruby.rb +70 -52
  69. metadata +80 -54
  70. data/lib/booker/business_client.rb +0 -22
  71. data/lib/booker/business_rest.rb +0 -112
  72. data/lib/booker/common_rest.rb +0 -43
  73. data/lib/booker/customer_client.rb +0 -17
  74. data/lib/booker/customer_rest.rb +0 -53
  75. data/lib/booker/models/address.rb +0 -12
  76. data/lib/booker/models/appointment.rb +0 -77
  77. data/lib/booker/models/appointment_treatment.rb +0 -51
  78. data/lib/booker/models/available_time.rb +0 -13
  79. data/lib/booker/models/business_type.rb +0 -5
  80. data/lib/booker/models/category.rb +0 -5
  81. data/lib/booker/models/class_instance.rb +0 -25
  82. data/lib/booker/models/country.rb +0 -19
  83. data/lib/booker/models/current_price.rb +0 -5
  84. data/lib/booker/models/customer.rb +0 -52
  85. data/lib/booker/models/customer_2.rb +0 -5
  86. data/lib/booker/models/customer_record_type.rb +0 -5
  87. data/lib/booker/models/discount.rb +0 -5
  88. data/lib/booker/models/dynamic_price.rb +0 -11
  89. data/lib/booker/models/employee.rb +0 -10
  90. data/lib/booker/models/feature_settings.rb +0 -7
  91. data/lib/booker/models/final_total.rb +0 -5
  92. data/lib/booker/models/gender.rb +0 -5
  93. data/lib/booker/models/itinerary_time_slot.rb +0 -7
  94. data/lib/booker/models/itinerary_time_slots_list.rb +0 -7
  95. data/lib/booker/models/location.rb +0 -38
  96. data/lib/booker/models/location_day_schedule.rb +0 -18
  97. data/lib/booker/models/model.rb +0 -150
  98. data/lib/booker/models/multi_service_availability_result.rb +0 -7
  99. data/lib/booker/models/notification_settings.rb +0 -12
  100. data/lib/booker/models/online_booking_settings.rb +0 -23
  101. data/lib/booker/models/original_price.rb +0 -5
  102. data/lib/booker/models/payment_method.rb +0 -5
  103. data/lib/booker/models/preferred_staff_gender.rb +0 -5
  104. data/lib/booker/models/price.rb +0 -8
  105. data/lib/booker/models/receipt_display_price.rb +0 -5
  106. data/lib/booker/models/room.rb +0 -12
  107. data/lib/booker/models/shipping_address.rb +0 -5
  108. data/lib/booker/models/source.rb +0 -5
  109. data/lib/booker/models/spa.rb +0 -5
  110. data/lib/booker/models/spa_employee_availability_search_item.rb +0 -11
  111. data/lib/booker/models/status.rb +0 -5
  112. data/lib/booker/models/sub_category.rb +0 -5
  113. data/lib/booker/models/tag_price.rb +0 -5
  114. data/lib/booker/models/teacher.rb +0 -5
  115. data/lib/booker/models/teacher_2.rb +0 -5
  116. data/lib/booker/models/time_zone.rb +0 -8
  117. data/lib/booker/models/treatment.rb +0 -19
  118. data/lib/booker/models/treatment_time_slot.rb +0 -5
  119. data/lib/booker/models/type.rb +0 -8
  120. data/lib/booker/models/user.rb +0 -73
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: booker_ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.14.0
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Frederick
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-11-05 00:00:00.000000000 Z
11
+ date: 2017-01-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: httparty
@@ -52,6 +52,20 @@ dependencies:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: '2.10'
55
+ - !ruby/object:Gem::Dependency
56
+ name: jwt
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '1.5'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '1.5'
55
69
  - !ruby/object:Gem::Dependency
56
70
  name: bundler
57
71
  requirement: !ruby/object:Gem::Requirement
@@ -130,63 +144,75 @@ extensions: []
130
144
  extra_rdoc_files: []
131
145
  files:
132
146
  - lib/booker/booker.rb
133
- - lib/booker/business_client.rb
134
- - lib/booker/business_rest.rb
135
147
  - lib/booker/client.rb
136
- - lib/booker/common_rest.rb
137
148
  - lib/booker/config/booker_country_ids_to_iso_codes.yml
138
- - lib/booker/customer_client.rb
139
- - lib/booker/customer_rest.rb
140
149
  - lib/booker/errors.rb
141
150
  - lib/booker/generic_token_store.rb
142
151
  - lib/booker/helpers/active_support_helper.rb
143
152
  - lib/booker/helpers/logging_helper.rb
144
- - lib/booker/models/address.rb
145
- - lib/booker/models/appointment.rb
146
- - lib/booker/models/appointment_treatment.rb
147
- - lib/booker/models/available_time.rb
148
- - lib/booker/models/business_type.rb
149
- - lib/booker/models/category.rb
150
- - lib/booker/models/class_instance.rb
151
- - lib/booker/models/country.rb
152
- - lib/booker/models/current_price.rb
153
- - lib/booker/models/customer.rb
154
- - lib/booker/models/customer_2.rb
155
- - lib/booker/models/customer_record_type.rb
156
- - lib/booker/models/discount.rb
157
- - lib/booker/models/dynamic_price.rb
158
- - lib/booker/models/employee.rb
159
- - lib/booker/models/feature_settings.rb
160
- - lib/booker/models/final_total.rb
161
- - lib/booker/models/gender.rb
162
- - lib/booker/models/itinerary_time_slot.rb
163
- - lib/booker/models/itinerary_time_slots_list.rb
164
- - lib/booker/models/location.rb
165
- - lib/booker/models/location_day_schedule.rb
166
- - lib/booker/models/model.rb
167
- - lib/booker/models/multi_service_availability_result.rb
168
- - lib/booker/models/notification_settings.rb
169
- - lib/booker/models/online_booking_settings.rb
170
- - lib/booker/models/original_price.rb
171
- - lib/booker/models/payment_method.rb
172
- - lib/booker/models/preferred_staff_gender.rb
173
- - lib/booker/models/price.rb
174
- - lib/booker/models/receipt_display_price.rb
175
- - lib/booker/models/room.rb
176
- - lib/booker/models/shipping_address.rb
177
- - lib/booker/models/source.rb
178
- - lib/booker/models/spa.rb
179
- - lib/booker/models/spa_employee_availability_search_item.rb
180
- - lib/booker/models/status.rb
181
- - lib/booker/models/sub_category.rb
182
- - lib/booker/models/tag_price.rb
183
- - lib/booker/models/teacher.rb
184
- - lib/booker/models/teacher_2.rb
185
- - lib/booker/models/time_zone.rb
186
- - lib/booker/models/treatment.rb
187
- - lib/booker/models/treatment_time_slot.rb
188
- - lib/booker/models/type.rb
189
- - lib/booker/models/user.rb
153
+ - lib/booker/model.rb
154
+ - lib/booker/v4.1/availability.rb
155
+ - lib/booker/v4.1/booking.rb
156
+ - lib/booker/v4.1/merchant.rb
157
+ - lib/booker/v4/business_client.rb
158
+ - lib/booker/v4/business_rest.rb
159
+ - lib/booker/v4/common_rest.rb
160
+ - lib/booker/v4/customer_client.rb
161
+ - lib/booker/v4/customer_rest.rb
162
+ - lib/booker/v4/models/address.rb
163
+ - lib/booker/v4/models/appointment.rb
164
+ - lib/booker/v4/models/appointment_treatment.rb
165
+ - lib/booker/v4/models/available_time.rb
166
+ - lib/booker/v4/models/business_type.rb
167
+ - lib/booker/v4/models/category.rb
168
+ - lib/booker/v4/models/class_instance.rb
169
+ - lib/booker/v4/models/country.rb
170
+ - lib/booker/v4/models/current_price.rb
171
+ - lib/booker/v4/models/customer.rb
172
+ - lib/booker/v4/models/customer_2.rb
173
+ - lib/booker/v4/models/customer_record_type.rb
174
+ - lib/booker/v4/models/discount.rb
175
+ - lib/booker/v4/models/dynamic_price.rb
176
+ - lib/booker/v4/models/employee.rb
177
+ - lib/booker/v4/models/feature_settings.rb
178
+ - lib/booker/v4/models/final_total.rb
179
+ - lib/booker/v4/models/gender.rb
180
+ - lib/booker/v4/models/itinerary_time_slot.rb
181
+ - lib/booker/v4/models/itinerary_time_slots_list.rb
182
+ - lib/booker/v4/models/location.rb
183
+ - lib/booker/v4/models/location_day_schedule.rb
184
+ - lib/booker/v4/models/model.rb
185
+ - lib/booker/v4/models/multi_service_availability_result.rb
186
+ - lib/booker/v4/models/notification_settings.rb
187
+ - lib/booker/v4/models/online_booking_settings.rb
188
+ - lib/booker/v4/models/original_price.rb
189
+ - lib/booker/v4/models/payment_method.rb
190
+ - lib/booker/v4/models/preferred_staff_gender.rb
191
+ - lib/booker/v4/models/price.rb
192
+ - lib/booker/v4/models/receipt_display_price.rb
193
+ - lib/booker/v4/models/room.rb
194
+ - lib/booker/v4/models/shipping_address.rb
195
+ - lib/booker/v4/models/source.rb
196
+ - lib/booker/v4/models/spa.rb
197
+ - lib/booker/v4/models/spa_employee_availability_search_item.rb
198
+ - lib/booker/v4/models/status.rb
199
+ - lib/booker/v4/models/sub_category.rb
200
+ - lib/booker/v4/models/tag_price.rb
201
+ - lib/booker/v4/models/teacher.rb
202
+ - lib/booker/v4/models/teacher_2.rb
203
+ - lib/booker/v4/models/time_zone.rb
204
+ - lib/booker/v4/models/treatment.rb
205
+ - lib/booker/v4/models/treatment_time_slot.rb
206
+ - lib/booker/v4/models/type.rb
207
+ - lib/booker/v4/models/user.rb
208
+ - lib/booker/v4/request_helper.rb
209
+ - lib/booker/v5/availability.rb
210
+ - lib/booker/v5/models/availability.rb
211
+ - lib/booker/v5/models/availability_result.rb
212
+ - lib/booker/v5/models/location_hour.rb
213
+ - lib/booker/v5/models/model.rb
214
+ - lib/booker/v5/models/service.rb
215
+ - lib/booker/v5/models/service_category.rb
190
216
  - lib/booker/version.rb
191
217
  - lib/booker_ruby.rb
192
218
  homepage: https://github.com/hirefrederick/booker_ruby
@@ -212,5 +238,5 @@ rubyforge_project:
212
238
  rubygems_version: 2.5.1
213
239
  signing_key:
214
240
  specification_version: 4
215
- summary: Ruby client for the Booker v4 API - http://apidoc.booker.com
241
+ summary: Ruby client for the Booker API - https://developers.booker.com
216
242
  test_files: []
@@ -1,22 +0,0 @@
1
- module Booker
2
- class BusinessClient < Client
3
- include Booker::BusinessREST
4
-
5
- ACCESS_TOKEN_HTTP_METHOD = :post
6
- ACCESS_TOKEN_ENDPOINT = '/accountlogin'.freeze
7
-
8
- attr_accessor :booker_account_name, :booker_username, :booker_password
9
-
10
- def env_base_url_key; 'BOOKER_BUSINESS_SERVICE_URL'; end
11
-
12
- def default_base_url; 'https://apicurrent-app.booker.ninja/webservice4/json/BusinessService.svc'; end
13
-
14
- def access_token_options
15
- super.merge!(
16
- 'AccountName' => self.booker_account_name,
17
- 'UserName' => self.booker_username,
18
- 'Password' => self.booker_password
19
- )
20
- end
21
- end
22
- end
@@ -1,112 +0,0 @@
1
- module Booker
2
- module BusinessREST
3
- include CommonREST
4
-
5
- def get_logged_in_user
6
- response = get('/user', build_params)
7
- result = Booker::Models::User.from_hash(response['User'])
8
- result.LocationID = response['LocationID']
9
- result.BrandID = response['BrandID']
10
- result
11
- end
12
-
13
- def get_location_day_schedules(booker_location_id:, params: {})
14
- # Booker requires fromDate and toDate for JSON API, but does not use them when getDefaultDaySchedule is true
15
- # So datetime used for these fields does not matter
16
- random_datetime = Booker::Models::Model.time_to_booker_datetime(Time.now)
17
-
18
- additional_params = {'getDefaultDaySchedule' => true, 'fromDate' => random_datetime, 'toDate' => random_datetime}
19
- response = get("/location/#{booker_location_id}/schedule", build_params(additional_params, params))
20
- response['LocationDaySchedules'].map { |sched| Booker::Models::LocationDaySchedule.from_hash(sched) }
21
- end
22
-
23
- def find_locations(params: {})
24
- paginated_request(
25
- method: :post,
26
- path: '/locations',
27
- params: build_params({}, params, true),
28
- model: Booker::Models::Location
29
- )
30
- end
31
-
32
- def find_employees(booker_location_id:, fetch_all: true, params: {})
33
- paginated_request(
34
- method: :post,
35
- path: '/employees',
36
- params: build_params({'LocationID' => booker_location_id}, params, true),
37
- model: Booker::Models::Employee,
38
- fetch_all: fetch_all
39
- )
40
- end
41
-
42
- def find_treatments(booker_location_id:, fetch_all: true, params: {})
43
- paginated_request(
44
- method: :post,
45
- path: '/treatments',
46
- params: build_params({'LocationID' => booker_location_id}, params, true),
47
- model: Booker::Models::Treatment,
48
- fetch_all: fetch_all
49
- )
50
- end
51
-
52
- def find_customers(booker_location_id:, fetch_all: true, params: {})
53
- additional_params = {
54
- 'FilterByExactLocationID' => true,
55
- 'LocationID' => booker_location_id,
56
- 'CustomerRecordType' => 1,
57
- }
58
-
59
- paginated_request(
60
- method: :post,
61
- path: '/customers',
62
- params: build_params(additional_params, params, true),
63
- model: Booker::Models::Customer,
64
- fetch_all: fetch_all
65
- )
66
- end
67
-
68
- def find_appointments(booker_location_id:, start_date:, end_date:, fetch_all: true, params: {})
69
- additional_params = {
70
- 'LocationID' => booker_location_id,
71
- 'FromStartDate' => start_date.to_date,
72
- 'ToStartDate' => end_date.to_date
73
- }
74
-
75
- paginated_request(
76
- method: :post,
77
- path: '/appointments',
78
- params: build_params(additional_params, params, true),
79
- model: Booker::Models::Appointment,
80
- fetch_all: fetch_all
81
- )
82
- end
83
-
84
- def create_special(booker_location_id:, start_date:, end_date:, coupon_code:, name:, params: {})
85
- post('/special', build_params({
86
- 'LocationID' => booker_location_id,
87
- 'ApplicableStartDate' => start_date.in_time_zone,
88
- 'ApplicableEndDate' => end_date.in_time_zone,
89
- 'CouponCode' => coupon_code,
90
- 'Name' => name
91
- }, params))
92
- end
93
-
94
- def get_location_notification_settings(booker_location_id:)
95
- response = get "/location/#{booker_location_id}/notification_settings", build_params
96
- Booker::Models::NotificationSettings.from_hash response['NotificationSettings']
97
- end
98
-
99
- def update_location_notification_settings(booker_location_id:, send_appointment_reminders:)
100
- put "/location/#{booker_location_id}/notification_settings", build_params({
101
- NotificationSettings: {
102
- SendAppointmentReminders: send_appointment_reminders
103
- }
104
- })
105
- end
106
-
107
- def get_location_feature_settings(booker_location_id:)
108
- response = get "/location/#{booker_location_id}/feature_settings", build_params
109
- Booker::Models::FeatureSettings.from_hash response['FeatureSettings']
110
- end
111
- end
112
- end
@@ -1,43 +0,0 @@
1
- module Booker
2
- module CommonREST
3
- DEFAULT_PAGINATION_PARAMS = {
4
- 'UsePaging' => true,
5
- 'PageSize' => Integer(ENV['BOOKER_DEFAULT_PAGE_SIZE'] || 10),
6
- 'PageNumber' => 1
7
- }
8
-
9
- def get_online_booking_settings(booker_location_id:)
10
- response = get("/location/#{booker_location_id}/online_booking_settings", build_params)
11
- Booker::Models::OnlineBookingSettings.from_hash(response['OnlineBookingSettings'])
12
- end
13
-
14
- def confirm_appointment(appointment_id:)
15
- put '/appointment/confirm', build_params('ID' => appointment_id), Booker::Models::Appointment
16
- end
17
-
18
- def get_location(booker_location_id:)
19
- response = get("/location/#{booker_location_id}", build_params)
20
- Booker::Models::Location.from_hash(response)
21
- end
22
-
23
- private
24
-
25
- def build_params(default_params={}, overrides={}, paginated=false)
26
- merged = {"access_token" => access_token}.merge(default_params.merge(overrides))
27
-
28
- merged.each do |k, v|
29
- if v.is_a?(Time) || v.is_a?(DateTime)
30
- merged[k] = Booker::Models::Model.time_to_booker_datetime(v)
31
- elsif v.is_a?(Date)
32
- merged[k] = Booker::Models::Model.time_to_booker_datetime(v.in_time_zone)
33
- end
34
- end
35
-
36
- if paginated
37
- DEFAULT_PAGINATION_PARAMS.merge(merged)
38
- else
39
- merged
40
- end
41
- end
42
- end
43
- end
@@ -1,17 +0,0 @@
1
- module Booker
2
- class CustomerClient < Client
3
- include Booker::CustomerREST
4
-
5
- def initialize(options={})
6
- super
7
- self.token_store ||= GenericTokenStore
8
- self.token_store_callback_method ||= :update_booker_access_token!
9
- end
10
-
11
- def env_base_url_key; 'BOOKER_CUSTOMER_SERVICE_URL'; end
12
-
13
- def default_base_url; 'https://apicurrent-app.booker.ninja/webservice4/json/CustomerService.svc'; end
14
-
15
- def access_token_options; super.merge!(grant_type: 'client_credentials'); end
16
- end
17
- end
@@ -1,53 +0,0 @@
1
- module Booker
2
- module CustomerREST
3
- include CommonREST
4
-
5
- def create_appointment(booker_location_id:, available_time:, customer:, options: {})
6
- post '/appointment/create', build_params({
7
- 'LocationID' => booker_location_id,
8
- 'ItineraryTimeSlotList' => [
9
- 'TreatmentTimeSlots' => [available_time]
10
- ],
11
- 'Customer' => customer
12
- }, options), Booker::Models::Appointment
13
- end
14
-
15
- def create_class_appointment(booker_location_id:, class_instance_id:, customer:, options: {})
16
- post '/class_appointment/create', build_params({
17
- 'LocationID' => booker_location_id,
18
- 'ClassInstanceID' => class_instance_id,
19
- 'Customer' => customer
20
- }, options), Booker::Models::Appointment
21
- end
22
-
23
- def run_multi_spa_multi_sub_category_availability(booker_location_ids:, treatment_sub_category_ids:, start_date_time:, end_date_time:, options: {})
24
- post '/availability/multispamultisubcategory', build_params({
25
- 'LocationIDs' => booker_location_ids,
26
- 'TreatmentSubCategoryIDs' => treatment_sub_category_ids,
27
- 'StartDateTime' => start_date_time,
28
- 'EndDateTime' => end_date_time,
29
- 'MaxTimesPerTreatment' => 1000
30
- }, options), Booker::Models::SpaEmployeeAvailabilitySearchItem
31
- end
32
-
33
- def run_multi_service_availability(booker_location_id:, treatment_ids:, employee_id:nil, start_date_time:, end_date_time:, options: {})
34
- post '/availability/multiservice', build_params({
35
- 'LocationID' => booker_location_id,
36
- 'StartDateTime' => start_date_time,
37
- 'EndDateTime' => end_date_time,
38
- 'MaxTimesPerDay' => 100,
39
- 'Itineraries' => treatment_ids.map { |id| {'Treatments' => [{'TreatmentID' => id, 'EmployeeID' => employee_id}]} }
40
- }, options), Booker::Models::MultiServiceAvailabilityResult
41
- end
42
-
43
- def run_class_availability(booker_location_id:, from_start_date_time:, to_start_date_time:, options: {})
44
- post '/availability/class', build_params({
45
- 'FromStartDateTime' => from_start_date_time,
46
- 'LocationID' => booker_location_id,
47
- 'OnlyIfAvailable' => true,
48
- 'ToStartDateTime' => to_start_date_time,
49
- 'ExcludeClosedDates' => true
50
- }, options), Booker::Models::ClassInstance
51
- end
52
- end
53
- end
@@ -1,12 +0,0 @@
1
- module Booker
2
- module Models
3
- class Address < Model
4
- attr_accessor 'Street1',
5
- 'Street2',
6
- 'City',
7
- 'State',
8
- 'Zip',
9
- 'Country'
10
- end
11
- end
12
- end
@@ -1,77 +0,0 @@
1
- module Booker
2
- module Models
3
- class Appointment < Model
4
- attr_accessor 'BookingNumber',
5
- 'Confirmable',
6
- 'EndDateTime',
7
- 'FinalTotal',
8
- 'ID',
9
- 'IsCancelled',
10
- 'IsNoShow',
11
- 'LocationID',
12
- 'StartDateTime',
13
- 'Status',
14
- 'CanTakePayment',
15
- 'DateCreated',
16
- 'BelongsToEnrollment',
17
- 'Address',
18
- 'AddressID',
19
- 'AllowAutoPay',
20
- 'AppointmentTreatments',
21
- 'BelongsToGroup',
22
- 'BelongsToGroupAndGroupOrder',
23
- 'BelongsToOrder',
24
- 'CanCancel',
25
- 'CanCheckin',
26
- 'CanHaveCustomer2',
27
- 'CanRevertNoShow',
28
- 'CanUndoCheckin',
29
- 'CancellationID',
30
- 'Customer',
31
- 'Customer2',
32
- 'Customer2ID',
33
- 'CustomerID',
34
- 'CustomerLastName',
35
- 'CustomerMobilePhone',
36
- 'CustomerWorkPhone',
37
- 'DateBooked',
38
- 'DateNoShow',
39
- 'Employee',
40
- 'EmployeeFirstName',
41
- 'EmployeeLastName',
42
- 'GroupID',
43
- 'GroupName',
44
- 'GroupNumber',
45
- 'GroupTypeID',
46
- 'IsCancelledOrNoShow',
47
- 'IsCheckedInInService',
48
- 'IsPartOfClassPackageBooking',
49
- 'IsPreBookedAtPastCheckout',
50
- 'IsRecurring',
51
- 'IsWebBooking',
52
- 'Notes',
53
- 'OrderID',
54
- 'OrderStatusID',
55
- 'PackageID',
56
- 'PaymentID',
57
- 'PaymentItemID',
58
- 'PrimaryAppointmentTreatmentID',
59
- 'RecurrenceID',
60
- 'Room',
61
- 'Source',
62
- 'Treatment',
63
- 'TreatmentName',
64
- 'Type',
65
- 'IsHeld',
66
- 'HoldForMinutes',
67
- 'HeldSince',
68
- 'IsServiceComplete',
69
- 'IsCheckout',
70
- 'DateCheckIn',
71
- 'IsFromWaitList',
72
- 'IsFromClassWaitList',
73
- 'CustomerRecordTypeID',
74
- 'CustomerParentID'
75
- end
76
- end
77
- end