Sha256: cc9635e926c03b26baaf641003b7beca1990a62098f96d5ac601472906442b96

Contents?: true

Size: 1.19 KB

Versions: 4

Compression:

Stored size: 1.19 KB

Contents

# frozen_string_literal: true

module TwilioBase
  module TaskRouter
    class TaskQueue
      class << self
        def find_or_create_by(workspace:, friendly_name:, target_workers: nil)
          attributes = {
            workspace: workspace,
            friendly_name: friendly_name,
            target_workers: target_workers
          }.to_a

          find_by(attributes[0..1].to_h) || create(attributes.to_h)
        end

        def find_by(workspace:, friendly_name:)
          workspace.task_queues.list(friendly_name: friendly_name).first
        end

        def create(workspace:, friendly_name:, target_workers:)
          workspace.task_queues.create(
            assignment_activity_sid: assignment_activity_sid(workspace),
            friendly_name: friendly_name,
            reservation_activity_sid: reservation_activity_sid(workspace),
            target_workers: target_workers
          )
        end

        def assignment_activity_sid(workspace)
          workspace.activities.list(friendly_name: 'Busy').first.sid
        end

        def reservation_activity_sid(workspace)
          workspace.activities.list(friendly_name: 'Reserved').first.sid
        end
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
twilio_base-1.11.1101 app/services/twilio_base/task_router/task_queue.rb
twilio_base-1.11.11 app/services/twilio_base/task_router/task_queue.rb
twilio_base-1.9.0 app/services/twilio_base/task_router/task_queue.rb
twilio_base-1.8.0 app/services/twilio_base/task_router/task_queue.rb