Class: StarkBank::CorporateRule

Inherits:
StarkCore::Utils::Resource
  • Object
show all
Defined in:
lib/corporate_rule/corporaterule.rb

Overview

# CorporateRule object

The CorporateRule object displays the spending rules of CorporateCards and CorporateHolders created in your Workspace.

## Parameters (required):

  • name [string]: rule name. ex: ‘Travel’ or ‘Food’

  • amount [integer]: maximum amount that can be spent in the informed interval. ex: 200000 (= R$ 2000.00)

## Parameters (optional):

  • interval [string, default ‘lifetime’]: interval after which the rule amount counter will be reset to 0. ex: ‘instant’, ‘day’, ‘week’, ‘month’, ‘year’ or ‘lifetime’

  • schedule [string, default nil]: schedule time for user to spend. ex: “every monday, wednesday from 00:00 to 23:59 in America/Sao_Paulo”

  • purposes [list of string, default []]: list of strings representing the allowed purposes for card purchases, you can use this to restrict ATM withdrawals. ex: [“purchase”, “withdrawal”]

  • currency_code [string, default ‘BRL’]: code of the currency that the rule amount refers to. ex: ‘BRL’ or ‘USD’

  • categories [list of MerchantCategories, default nil]: merchant categories accepted by the rule. ex: [MerchantCategory(code=‘fastFoodRestaurants’)]

  • countries [list of MerchantCountries, default nil]: countries accepted by the rule. ex: [MerchantCountry(code=‘BRA’)]

  • methods [list of CardMethods, default nil]: card purchase methods accepted by the rule. ex: [CardMethod(code=‘magstripe’)]

## Attributes (expanded return-only):

  • id [string]: unique id returned when a CorporateRule is created, used to update a specific CorporateRule. ex: ‘5656565656565656’

  • counter_amount [integer]: current rule spent amount. ex: 1000

  • currency_symbol [string]: currency symbol. ex: ‘R$’

  • currency_name [string]: currency name. ex: ‘Brazilian Real’

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(name:, amount:, id: nil, interval: nil, schedule: nil, purposes: nil, currency_code: nil, categories: nil, countries: nil, methods: nil, counter_amount: nil, currency_symbol: nil, currency_name: nil) ⇒ CorporateRule

Returns a new instance of CorporateRule.



31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# File 'lib/corporate_rule/corporaterule.rb', line 31

def initialize(
  name:, amount:, id: nil, interval: nil, schedule: nil, purposes: nil, currency_code: nil, categories: nil, countries: nil, methods: nil,
  counter_amount: nil, currency_symbol: nil, currency_name: nil
)
  super(id)
  @name = name
  @amount = amount
  @interval = interval
  @schedule = schedule
  @purposes = purposes
  @currency_code = currency_code
  @categories = CorporateRule.parse_categories(categories)
  @countries = CorporateRule.parse_categories(countries)
  @methods = CorporateRule.parse_categories(methods)
  @counter_amount = counter_amount
  @currency_symbol = currency_symbol
  @currency_name = currency_name
end

Instance Attribute Details

#amountObject (readonly)

Returns the value of attribute amount.



29
30
31
# File 'lib/corporate_rule/corporaterule.rb', line 29

def amount
  @amount
end

#categoriesObject (readonly)

Returns the value of attribute categories.



29
30
31
# File 'lib/corporate_rule/corporaterule.rb', line 29

def categories
  @categories
end

#counter_amountObject (readonly)

Returns the value of attribute counter_amount.



29
30
31
# File 'lib/corporate_rule/corporaterule.rb', line 29

def counter_amount
  @counter_amount
end

#countriesObject (readonly)

Returns the value of attribute countries.



29
30
31
# File 'lib/corporate_rule/corporaterule.rb', line 29

def countries
  @countries
end

#currency_codeObject (readonly)

Returns the value of attribute currency_code.



29
30
31
# File 'lib/corporate_rule/corporaterule.rb', line 29

def currency_code
  @currency_code
end

#currency_nameObject (readonly)

Returns the value of attribute currency_name.



29
30
31
# File 'lib/corporate_rule/corporaterule.rb', line 29

def currency_name
  @currency_name
end

#currency_symbolObject (readonly)

Returns the value of attribute currency_symbol.



29
30
31
# File 'lib/corporate_rule/corporaterule.rb', line 29

def currency_symbol
  @currency_symbol
end

#intervalObject (readonly)

Returns the value of attribute interval.



29
30
31
# File 'lib/corporate_rule/corporaterule.rb', line 29

def interval
  @interval
end

#methodsObject (readonly)

Returns the value of attribute methods.



29
30
31
# File 'lib/corporate_rule/corporaterule.rb', line 29

def methods
  @methods
end

#nameObject (readonly)

Returns the value of attribute name.



29
30
31
# File 'lib/corporate_rule/corporaterule.rb', line 29

def name
  @name
end

#purposesObject (readonly)

Returns the value of attribute purposes.



29
30
31
# File 'lib/corporate_rule/corporaterule.rb', line 29

def purposes
  @purposes
end

#scheduleObject (readonly)

Returns the value of attribute schedule.



29
30
31
# File 'lib/corporate_rule/corporaterule.rb', line 29

def schedule
  @schedule
end

Class Method Details

.parse_categories(categories) ⇒ Object



50
51
52
53
54
55
56
57
58
59
60
61
62
# File 'lib/corporate_rule/corporaterule.rb', line 50

def self.parse_categories(categories)
  resource_maker = StarkBank::MerchantCategory.resource[:resource_maker]
  return categories if categories.nil?

  parsed_categories = []
  categories.each do |category|
    unless category.is_a? MerchantCategory
      category = StarkCore::Utils::API.from_api_json(resource_maker, category)
    end
    parsed_categories << category
  end
  parsed_categories
end

.parse_countries(countries) ⇒ Object



64
65
66
67
68
69
70
71
72
73
74
75
76
# File 'lib/corporate_rule/corporaterule.rb', line 64

def self.parse_countries(countries)
  resource_maker = StarkBank::MerchantCountry.resource[:resource_maker]
  return countries if countries.nil?

  parsed_countries = []
  countries.each do |country|
    unless country.is_a? MerchantCountry
      country = StarkCore::Utils::API.from_api_json(resource_maker, country)
    end
    parsed_countries << country
  end
  parsed_countries
end

.parse_methods(methods) ⇒ Object



78
79
80
81
82
83
84
85
86
87
88
89
90
# File 'lib/corporate_rule/corporaterule.rb', line 78

def self.parse_methods(methods)
  resource_maker = StarkBank::CardMethod.resource[:resource_maker]
  return methods if methods.nil?

  parsed_methods = []
  methods.each do |method|
    unless method.is_a? CardMethod
      method = StarkCore::Utils::API.from_api_json(resource_maker, method)
    end
    parsed_methods << method
  end
  parsed_methods
end

.parse_rules(rules) ⇒ Object



92
93
94
95
96
97
98
99
100
101
102
103
104
# File 'lib/corporate_rule/corporaterule.rb', line 92

def self.parse_rules(rules)
  rule_maker = StarkBank::CorporateRule.resource[:resource_maker]
  return rules if rules.nil?

  parsed_rules = []
  rules.each do |rule|
    unless rule.is_a? CorporateRule
      rule = StarkCore::Utils::API.from_api_json(rule_maker, rule)
    end
    parsed_rules << rule
  end
  parsed_rules
end

.resourceObject



106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
# File 'lib/corporate_rule/corporaterule.rb', line 106

def self.resource
  {
    resource_name: 'CorporateRule',
    resource_maker: proc { |json|
      CorporateRule.new(
        name: json['name'],
        amount: json['amount'],
        interval: json['interval'],
        schedule: json['schedule'],
        purposes: json['purposes'],
        currency_code: json['currency_code'],
        categories: json['categories'],
        countries: json['countries'],
        methods: json['methods'],
        counter_amount: json['counter_amount'],
        currency_symbol: json['currency_symbol'],
        currency_name: json['currency_name']
      )
    }
  }
end