Sha256: 3178af61e6ce2dba5dd18b048b269d2045d136e3172ad63deee6f7a3bc1377af

Contents?: true

Size: 1.03 KB

Versions: 19

Compression:

Stored size: 1.03 KB

Contents

# frozen_string_literal: true

module Decidim
  module Votings
    # A command to send the access code
    class SendAccessCode < Rectify::Command
      def initialize(datum, medium)
        @datum = datum
        @medium = medium
      end

      # Executes the command. Broadcast this events:
      # - :invalid when params are missing
      #
      # Returns nothing.
      def call
        return broadcast(:invalid) unless datum

        send_access_code

        broadcast(:ok)
      end

      private

      attr_reader :datum, :medium

      def send_access_code
        case medium
        when "email"
          AccessCodeMailer.send_access_code(datum).deliver_later
        when "sms"
          sms_gateway.new(datum.mobile_phone_number, access_code).deliver_code
        else
          raise ArgumentError, "Medium parameter is invalid"
        end
      end

      def sms_gateway
        Decidim.sms_gateway_service.to_s.safe_constantize
      end

      def access_code
        @access_code ||= datum.access_code
      end
    end
  end
end

Version data entries

19 entries across 19 versions & 1 rubygems

Version Path
decidim-elections-0.26.10 app/commands/decidim/votings/send_access_code.rb
decidim-elections-0.26.9 app/commands/decidim/votings/send_access_code.rb
decidim-elections-0.26.8 app/commands/decidim/votings/send_access_code.rb
decidim-elections-0.26.7 app/commands/decidim/votings/send_access_code.rb
decidim-elections-0.26.5 app/commands/decidim/votings/send_access_code.rb
decidim-elections-0.26.4 app/commands/decidim/votings/send_access_code.rb
decidim-elections-0.26.3 app/commands/decidim/votings/send_access_code.rb
decidim-elections-0.26.2 app/commands/decidim/votings/send_access_code.rb
decidim-elections-0.26.1 app/commands/decidim/votings/send_access_code.rb
decidim-elections-0.26.0 app/commands/decidim/votings/send_access_code.rb
decidim-elections-0.26.0.rc2 app/commands/decidim/votings/send_access_code.rb
decidim-elections-0.26.0.rc1 app/commands/decidim/votings/send_access_code.rb
decidim-elections-0.25.2 app/commands/decidim/votings/send_access_code.rb
decidim-elections-0.25.1 app/commands/decidim/votings/send_access_code.rb
decidim-elections-0.25.0 app/commands/decidim/votings/send_access_code.rb
decidim-elections-0.25.0.rc4 app/commands/decidim/votings/send_access_code.rb
decidim-elections-0.25.0.rc3 app/commands/decidim/votings/send_access_code.rb
decidim-elections-0.25.0.rc2 app/commands/decidim/votings/send_access_code.rb
decidim-elections-0.25.0.rc1 app/commands/decidim/votings/send_access_code.rb