Sha256: 523976426ea1e182b0c646473980edaa804ea4af7f68f4649d0c4002b17fbc01

Contents?: true

Size: 1.68 KB

Versions: 5

Compression:

Stored size: 1.68 KB

Contents

require 'genesis_ruby/utils/options/base'
require 'genesis_ruby/api/constants/transactions/parameters/wpf/reminder_channels'

module GenesisRuby
  module Utils
    module Options
      # Single reminder data object
      class Reminder < Base

        # Min After minutes
        MIN_AFTER = 1
        # Max After minutes
        MAX_AFTER = 31 * 24 * 60

        def []=(key, value)
          unless available_keys.include? key.to_s
            raise InvalidArgumentError, "Invalid Reminder Key given! Allowed: #{available_keys.join(", ")}"
          end

          __send__ "validate_#{key}", value

          super(key.to_sym, value)
        end

        # Single Reinder structure
        def object_structure
          { reminder: self }
        end

        private

        # Available Reminder Data keys
        def available_keys
          %w(channel after)
        end

        # Validate Channel value
        def validate_channel(value)
          return if Api::Constants::Transactions::Parameters::Wpf::ReminderChannels.all.include? value

          raise InvalidArgumentError,
                "Invalid Reminder Channel given. Allowed values: #{
                  Api::Constants::Transactions::Parameters::Wpf::ReminderChannels.all.join(", ")
                }"
        end

        # Number of minutes after WPF creation when the reminder should be sent.
        # Valid value ranges between 1 minute and 31 days given in minutes
        def validate_after(value)
          value_int = value.to_i

          return if value_int >= MIN_AFTER && value_int <= MAX_AFTER

          raise InvalidArgumentError, 'Invalid After value given. Allowed integer between 1 and 31'
        end

      end
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
genesis_ruby-0.2.0 lib/genesis_ruby/utils/options/reminder.rb
genesis_ruby-0.1.9 lib/genesis_ruby/utils/options/reminder.rb
genesis_ruby-0.1.8 lib/genesis_ruby/utils/options/reminder.rb
genesis_ruby-0.1.7 lib/genesis_ruby/utils/options/reminder.rb
genesis_ruby-0.1.6 lib/genesis_ruby/utils/options/reminder.rb