booker_ruby 1.14.0 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
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