module Booker::BusinessREST

Constants

BrandID
LocationID

Public Instance Methods

add_cash_payment(order_id, amount, params: {}) click to toggle source
# File lib/booker/business_rest.rb, line 140
def add_cash_payment(order_id, amount, params: {})
  post "/order/#{order_id}/add_payment", build_params({
    "PaymentItem" => {
      "Cash" => {},
      "Method" => {
        "ID" => 4
      },
      "CustomPaymentMethodID" => 67922,
      "CustomPaymentMethodIDSpecified" => true,
      "Amount" => amount
    }
  }, params)
end
cancel_appointment(appointment_id) click to toggle source
# File lib/booker/business_rest.rb, line 120
def cancel_appointment(appointment_id)
  put "/appointment/cancel", build_params({
    'ID' => appointment_id
  })
end
create_special(booker_location_id:, start_date:, end_date:, coupon_code:, name:, params: {}) click to toggle source
# File lib/booker/business_rest.rb, line 84
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(booker_location_id:, start_date:, end_date:, fetch_all: true, params: {}) click to toggle source
# File lib/booker/business_rest.rb, line 68
def find_appointments(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',
      params: build_params(additional_params, params, true),
      model: Booker::Models::Appointment,
      fetch_all: fetch_all
  )
end
find_customers(booker_location_id:, fetch_all: true, params: {}) click to toggle source
# File lib/booker/business_rest.rb, line 52
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::Models::Customer,
      fetch_all: fetch_all
  )
end
find_employees(booker_location_id:, fetch_all: true, params: {}) click to toggle source
# File lib/booker/business_rest.rb, line 32
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::Models::Employee,
      fetch_all: fetch_all
  )
end
find_locations(params: {}) click to toggle source
# File lib/booker/business_rest.rb, line 23
def find_locations(params: {})
  paginated_request(
      method: :post,
      path: '/locations',
      params: build_params({}, params, true),
      model: Booker::Models::Location
  )
end
find_treatments(booker_location_id:, fetch_all: true, params: {}) click to toggle source
# File lib/booker/business_rest.rb, line 42
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::Models::Treatment,
      fetch_all: fetch_all
  )
end
get_appointment(appointment_id) click to toggle source
# File lib/booker/business_rest.rb, line 116
def get_appointment(appointment_id)
  get "/appointment/#{appointment_id}", build_params
end
get_location_day_schedules(booker_location_id:, params: {}) click to toggle source
# File lib/booker/business_rest.rb, line 13
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::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::Models::LocationDaySchedule.from_hash(sched) }
end
get_location_feature_settings(booker_location_id:) click to toggle source
# File lib/booker/business_rest.rb, line 107
def get_location_feature_settings(booker_location_id:)
  response = get "/location/#{booker_location_id}/feature_settings", build_params
  Booker::Models::FeatureSettings.from_hash response['FeatureSettings']
end
get_location_notification_settings(booker_location_id:) click to toggle source
# File lib/booker/business_rest.rb, line 94
def get_location_notification_settings(booker_location_id:)
  response = get "/location/#{booker_location_id}/notification_settings", build_params
  Booker::Models::NotificationSettings.from_hash response['NotificationSettings']
end
get_location_payment_settings(booker_location_id) click to toggle source
# File lib/booker/business_rest.rb, line 112
def get_location_payment_settings(booker_location_id)
  get "/location/#{booker_location_id}/payment_settings", build_params
end
get_logged_in_user() click to toggle source
# File lib/booker/business_rest.rb, line 5
def get_logged_in_user
  response = get('/user', build_params)
  result = Booker::Models::User.from_hash(response['User'])
  result.LocationID = response['LocationID']
  result.BrandID = response['BrandID']
  result
end
place_order(order_id, amount) click to toggle source
# File lib/booker/business_rest.rb, line 126
def place_order(order_id, amount)
  post "/order/#{order_id}/place_order", build_params
end
remove_payment(order_id, payment_id, params: {}) click to toggle source
# File lib/booker/business_rest.rb, line 154
def remove_payment(order_id, payment_id, params: {})
  post "/order/#{order_id}/remove_payment", build_params({
    "PaymentItemIDs" => [payment_id],
    "ID" => 4
  }, params)
end
take_deposit(order_id, params: {}) click to toggle source
# File lib/booker/business_rest.rb, line 130
def take_deposit(order_id, params: {})
  post "/order/#{order_id}/deposit", build_params({
    "PaymentItem" => {
      "Method" => {
        "ID" => 4
      }
    }
  }, params)
end
update_location_notification_settings(booker_location_id:, send_appointment_reminders:) click to toggle source
# File lib/booker/business_rest.rb, line 99
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