Class: Kaui::Catalog

Inherits:
KillBillClient::Model::Catalog
  • Object
show all
Defined in:
app/models/kaui/catalog.rb

Class Method Summary collapse

Class Method Details

.build_ao_mapping(catalog) ⇒ Object



51
52
53
54
55
56
57
58
59
60
61
62
# File 'app/models/kaui/catalog.rb', line 51

def build_ao_mapping(catalog)
  tmp = {}
  catalog.products.each do |p|
    p.available.each do |ap|
      if !tmp.has_key?(ap)
        tmp[ap] = []
      end
      tmp[ap] << p.name
    end
  end unless catalog.nil?
  tmp.map { |e,v| "#{e}:#{v.join(",")}" }.join(";")
end

.get_account_catalog_json(account_id, requested_date = nil, options = {}) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
19
# File 'app/models/kaui/catalog.rb', line 7

def (, requested_date = nil, options = {})
  params = {}
  params[:accountId] = 
  params[:requestedDate] = requested_date if requested_date

  get KillBillClient::Model::Catalog::KILLBILL_API_CATALOG_PREFIX,
      params,
      {
          :head => {'Accept' => "application/json"},
          :content_type => "application/json",

      }.merge(options)
end

.get_catalog_json(latest, requested_date, options) ⇒ Object



34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# File 'app/models/kaui/catalog.rb', line 34

def get_catalog_json(latest, requested_date, options)
  catalogs = get_tenant_catalog_json(requested_date, options)
  return catalogs.length > 0 ? catalogs[catalogs.length - 1] : nil if latest

  # Order by latest
  result = []
  catalogs.sort! { |l, r| r.effective_date <=> l.effective_date }

  catalogs.each_with_index do |current_catalog, idx|
    result << {:version => idx,
               :version_date => current_catalog.effective_date,
               :currencies => current_catalog.currencies,
               :plans => build_existing_simple_plans(current_catalog)}
  end
  result
end

.get_catalog_xml(requested_date, options) ⇒ Object



65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
# File 'app/models/kaui/catalog.rb', line 65

def get_catalog_xml(requested_date, options)

  catalog_xml = KillBillClient::Model::Catalog.get_tenant_catalog_xml(requested_date, options)

  parsed_catalog = parse_catalog_xml(catalog_xml)

  result = []
  parsed_catalog.keys.each_with_index do |version_date, i|
    entry = {}
    entry[:version] = i
    entry[:version_date] = version_date
    entry[:xml] = parsed_catalog[version_date]
    result << entry
  end
  result
end

.get_tenant_catalog_json(requested_date = nil, options = {}) ⇒ Object



21
22
23
24
25
26
27
28
29
30
31
32
# File 'app/models/kaui/catalog.rb', line 21

def get_tenant_catalog_json(requested_date = nil, options = {})
  super
rescue ::KillBillClient::API::InternalServerError => e
  if !e.response.nil? && !e.response.body.nil?
    error_message = JSON.parse(e.response.body) rescue nil
    raise e if error_message.nil? || error_message['message'].nil?

    # Hack for lack of proper Kill Bill messaging (see https://github.com/killbill/killbill-admin-ui/issues/265)
    return [] if error_message['message'].starts_with?('No existing versions')
  end
  raise e
end