class Tinypass::PriceOption

Attributes

access_period[RW]
caption[RW]
end_date_in_secs[RW]
price[RW]
split_pays[R]
start_date_in_secs[RW]

Public Class Methods

new(price, access_period = nil, start_date_in_secs = nil, end_date_in_secs = nil) click to toggle source
# File lib/tinypass/price_option.rb, line 6
def initialize(price, access_period = nil, start_date_in_secs = nil, end_date_in_secs = nil)
  @split_pays = {}

  @price, @access_period = price, access_period

  @start_date_in_secs = TokenData.convert_to_epoch_seconds(start_date_in_secs) if start_date_in_secs
  @end_date_in_secs = TokenData.convert_to_epoch_seconds(end_date_in_secs) if end_date_in_secs
end

Public Instance Methods

access_period_in_msecs() click to toggle source
# File lib/tinypass/price_option.rb, line 15
def access_period_in_msecs
  Utils.parse_loose_period_in_msecs(@access_period)
end
access_period_in_secs() click to toggle source
# File lib/tinypass/price_option.rb, line 19
def access_period_in_secs
  access_period_in_msecs / 1000
end
active?(timestamp = nil) click to toggle source
# File lib/tinypass/price_option.rb, line 23
def active?(timestamp = nil)
  timestamp ||= Time.now.to_i
  timestamp = TokenData.convert_to_epoch_seconds(timestamp)

  return false if start_date_in_secs && timestamp < start_date_in_secs
  return false if end_date_in_secs && timestamp > end_date_in_secs
  return true
end
add_split_pay(email, amount) click to toggle source
# File lib/tinypass/price_option.rb, line 37
def add_split_pay(email, amount)
  amount = amount[0..-2].to_f / 100.0 if amount.end_with?('%')
  amount = amount.to_f

  @split_pays[email] = amount
end
caption=(value) click to toggle source
# File lib/tinypass/price_option.rb, line 32
def caption=(value)
  value = value[0...50] if value
  @caption = value
end
to_s() click to toggle source
# File lib/tinypass/price_option.rb, line 44
def to_s
  string = "Price:#{ price }\tPeriod:#{ access_period }\tTrial Period:#{ access_period }"

  if start_date_in_secs
    string << "\tStart:#{ start_date_in_secs }:#{ Time.at(start_date_in_secs).strftime('%a, %d %b %Y %H %M %S') }"
  end

  if end_date_in_secs
    string << "\tEnd:#{ end_date_in_secs }:#{ Time.at(end_date_in_secs).strftime('%a, %d %b %Y %H %M %S') }"
  end

  string << "\tCaption:#{ caption }" if caption

  if @split_pays.any?
    @split_pays.each do |email, amount|
      string << "\tSplit:#{ email }:#{ amount }"
    end
  end

  string
end