module Booker::V4::BusinessREST

Constants

BrandID
LocationID

Public Instance Methods

create_special(booker_location_id:, start_date:, end_date:, coupon_code:, name:, params: {}) click to toggle source
# File lib/booker/v4/business_rest.rb, line 114
def create_special(booker_location_id:, start_date:, end_date:, coupon_code:, name:, params: {})
  post('/special', build_params({
                                    'LocationID' => booker_location_id,
                                    'ApplicableStartDate' => start_date.in_time_zone,
                                    'ApplicableEndDate' => end_date.in_time_zone,
                                    'CouponCode' => coupon_code,
                                    'Name' => name
                                }, params))
end
find_appointments_partial(booker_location_id:, start_date:, end_date:, fetch_all: true, params: {}) click to toggle source
# File lib/booker/v4/business_rest.rb, line 98
def find_appointments_partial(booker_location_id:, start_date:, end_date:, fetch_all: true, params: {})
  additional_params = {
      LocationID: booker_location_id,
      FromStartDate: start_date.to_date,
      ToStartDate: end_date.to_date
  }

  paginated_request(
      method: :post,
      path: '/appointments/partial',
      params: build_params(additional_params, params, true),
      model: Booker::V4::Models::Appointment,
      fetch_all: fetch_all
  )
end
find_customers(booker_location_id:, fetch_all: true, params: {}) click to toggle source
# File lib/booker/v4/business_rest.rb, line 74
def find_customers(booker_location_id:, fetch_all: true, params: {})
  additional_params = {
      'FilterByExactLocationID' => true,
      'LocationID' => booker_location_id,
      'CustomerRecordType' => 1,
  }

  paginated_request(
      method: :post,
      path: '/customers',
      params: build_params(additional_params, params, true),
      model: Booker::V4::Models::Customer,
      fetch_all: fetch_all
  )
end
find_employees(booker_location_id:, fetch_all: true, params: {}) click to toggle source
# File lib/booker/v4/business_rest.rb, line 34
def find_employees(booker_location_id:, fetch_all: true, params: {})
  paginated_request(
      method: :post,
      path: '/employees',
      params: build_params({LocationID: booker_location_id}, params, true),
      model: Booker::V4::Models::Employee,
      fetch_all: fetch_all
  )
end
find_locations(params: {}) click to toggle source
# File lib/booker/v4/business_rest.rb, line 25
def find_locations(params: {})
  paginated_request(
      method: :post,
      path: '/locations',
      params: build_params({}, params, true),
      model: Booker::V4::Models::Location
  )
end
find_orders(booker_location_id:, fetch_all: true, params: {}) click to toggle source
# File lib/booker/v4/business_rest.rb, line 44
def find_orders(booker_location_id:, fetch_all: true, params: {})
  paginated_request(
      method: :post,
      path: '/orders',
      params: build_params({LocationID: booker_location_id}, params, true),
      model: Booker::V4::Models::Order,
      fetch_all: fetch_all
  )
end
find_orders_partial(booker_location_id:, fetch_all: true, params: {}) click to toggle source
# File lib/booker/v4/business_rest.rb, line 54
def find_orders_partial(booker_location_id:, fetch_all: true, params: {})
  paginated_request(
      method: :post,
      path: '/orders/partial',
      params: build_params({LocationID: booker_location_id}, params, true),
      model: Booker::V4::Models::Order,
      fetch_all: fetch_all
  )
end
find_treatments(booker_location_id:, fetch_all: true, params: {}) click to toggle source
# File lib/booker/v4/business_rest.rb, line 64
def find_treatments(booker_location_id:, fetch_all: true, params: {})
  paginated_request(
      method: :post,
      path: '/treatments',
      params: build_params({LocationID: booker_location_id}, params, true),
      model: Booker::V4::Models::Treatment,
      fetch_all: fetch_all
  )
end
get_customer(id:, params: {}) click to toggle source
# File lib/booker/v4/business_rest.rb, line 90
def get_customer(id:, params: {})
  additional_params = {
      LoadUnpaidAppointments: false,
      includeFieldValues: false
  }
  get("/customer/#{id}", build_params(additional_params, params), Booker::V4::Models::Customer)
end
get_location_day_schedules(booker_location_id:, params: {}) click to toggle source
# File lib/booker/v4/business_rest.rb, line 15
def get_location_day_schedules(booker_location_id:, params: {})
  # Booker requires fromDate and toDate for JSON API, but does not use them when getDefaultDaySchedule is true
  # So datetime used for these fields does not matter
  random_datetime = Booker::V4::Models::Model.time_to_booker_datetime(Time.now)

  additional_params = {getDefaultDaySchedule: true, fromDate: random_datetime, toDate: random_datetime}
  response = get("/location/#{booker_location_id}/schedule", build_params(additional_params, params))
  response['LocationDaySchedules'].map { |sched| Booker::V4::Models::LocationDaySchedule.from_hash(sched) }
end
get_location_feature_settings(booker_location_id:) click to toggle source
# File lib/booker/v4/business_rest.rb, line 137
def get_location_feature_settings(booker_location_id:)
  response = get "/location/#{booker_location_id}/feature_settings", build_params
  Booker::V4::Models::FeatureSettings.from_hash response['FeatureSettings']
end
get_location_notification_settings(booker_location_id:) click to toggle source
# File lib/booker/v4/business_rest.rb, line 124
def get_location_notification_settings(booker_location_id:)
  response = get "/location/#{booker_location_id}/notification_settings", build_params
  Booker::V4::Models::NotificationSettings.from_hash response['NotificationSettings']
end
get_logged_in_user() click to toggle source
# File lib/booker/v4/business_rest.rb, line 7
def get_logged_in_user
  response = get('/user', build_params)
  result = Booker::V4::Models::User.from_hash(response['User'])
  result.LocationID = response['LocationID']
  result.BrandID = response['BrandID']
  result
end
update_location_notification_settings(booker_location_id:, send_appointment_reminders:) click to toggle source
# File lib/booker/v4/business_rest.rb, line 129
def update_location_notification_settings(booker_location_id:, send_appointment_reminders:)
  put "/location/#{booker_location_id}/notification_settings", build_params({
                                                                                NotificationSettings: {
                                                                                    SendAppointmentReminders: send_appointment_reminders
                                                                                }
                                                                            })
end