Class: SchedulerZoomService

Inherits:
Object
  • Object
show all
Defined in:
app/services/scheduler_zoom_service.rb

Overview

Service object: scheduler zoom service.

Constant Summary collapse

ZOOM_API_BASE =

Zoom api base.

'https://api.zoom.us/v2'

Instance Method Summary collapse

Constructor Details

#initialize(employee) ⇒ SchedulerZoomService

Returns a new instance of SchedulerZoomService.



8
9
10
11
# File 'app/services/scheduler_zoom_service.rb', line 8

def initialize(employee)
  @employee = employee
  @oauth = Zoom::OauthService.new(account: employee.) if employee.
end

Instance Method Details

#connected?Boolean

Returns:

  • (Boolean)


13
14
15
# File 'app/services/scheduler_zoom_service.rb', line 13

def connected?
  @oauth&.connected? || false
end

#create_meeting(booking) ⇒ Object



17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# File 'app/services/scheduler_zoom_service.rb', line 17

def create_meeting(booking)
  return unless connected?

  payload = {
    topic: "#{booking.scheduler_booking_page.name} with #{booking.guest_name}",
    type: 2,
    start_time: booking.starts_at.iso8601,
    duration: booking.duration_minutes,
    timezone: booking.employee.scheduler_profile&.timezone || 'America/Chicago',
    settings: {
      join_before_host: true,
      waiting_room: false,
      auto_recording: 'none',
      meeting_authentication: false
    }
  }

  response = api_post('/users/me/meetings', payload)
  return unless response

  booking.update_columns(
    zoom_meeting_id: response['id'].to_s,
    zoom_join_url: response['join_url']
  )
  response
rescue StandardError => e
  Rails.logger.error("SchedulerZoomService#create_meeting failed for #{@employee.email}: #{e.message}")
  nil
end

#delete_meeting(zoom_meeting_id) ⇒ Object



47
48
49
50
51
52
53
# File 'app/services/scheduler_zoom_service.rb', line 47

def delete_meeting(zoom_meeting_id)
  return unless connected? && zoom_meeting_id.present?

  api_delete("/meetings/#{zoom_meeting_id}")
rescue StandardError => e
  Rails.logger.error("SchedulerZoomService#delete_meeting failed for #{@employee.email}: #{e.message}")
end