From ee1408e49f828a489b12254b34e2fa046d54c45f Mon Sep 17 00:00:00 2001 From: olegphenomenon Date: Thu, 24 Mar 2022 12:45:29 +0200 Subject: [PATCH] added encryptor and service object status invoice request --- app/models/invoice.rb | 5 +++++ .../registrar/invoice_status_presenter.rb | 18 ++++++++++++++++++ app/services/eis_billing/get_invoice_status.rb | 18 ++++++++++++++++++ .../registrar/invoices/partials/_details.haml | 4 ++++ lib/tasks/eis_billing_import_data.rake | 18 ++++++++---------- 5 files changed, 53 insertions(+), 10 deletions(-) create mode 100644 app/presenters/registrar/invoice_status_presenter.rb create mode 100644 app/services/eis_billing/get_invoice_status.rb diff --git a/app/models/invoice.rb b/app/models/invoice.rb index e6cfdb7c6..0a6b7073d 100644 --- a/app/models/invoice.rb +++ b/app/models/invoice.rb @@ -40,6 +40,11 @@ class Invoice < ApplicationRecord attribute :vat_rate, ::Type::VatRate.new + def get_status_from_billing + response = EisBilling::GetInvoiceStatus.send_invoice(invoice_number: number) + JSON.parse(response.body, symbolize_names: true)[:status] + end + def set_invoice_number if Feature.billing_system_integrated? result = EisBilling::GetInvoiceNumber.send_invoice diff --git a/app/presenters/registrar/invoice_status_presenter.rb b/app/presenters/registrar/invoice_status_presenter.rb new file mode 100644 index 000000000..86e8e7c07 --- /dev/null +++ b/app/presenters/registrar/invoice_status_presenter.rb @@ -0,0 +1,18 @@ +class Registrar::InvoiceStatusPresenter + include ActionView::Helpers::TagHelper + + attr_reader :invoice + + def initialize(invoice:) + @invoice = invoice + end + + def display + case invoice.get_status_from_billing + when 'unpaid' + content_tag(:span, 'Unpaid', style: 'color: red;') + when 'paid' + content_tag(:span, 'Unpaid', style: 'color: red;') + end + end +end \ No newline at end of file diff --git a/app/services/eis_billing/get_invoice_status.rb b/app/services/eis_billing/get_invoice_status.rb new file mode 100644 index 000000000..132dfe65a --- /dev/null +++ b/app/services/eis_billing/get_invoice_status.rb @@ -0,0 +1,18 @@ +module EisBilling + class GetInvoiceStatus < EisBilling::Base + def self.send_invoice(invoice_number:) + send_request(invoice_number: invoice_number) + end + + private + + def self.send_request(invoice_number:) + http = EisBilling::Base.base_request(url: invoice_number_generator_url) + http.get(invoice_number_generator_url + "/#{invoice_number}", EisBilling::Base.headers) + end + + def self.invoice_number_generator_url + "#{BASE_URL}/api/v1/invoice_generator/invoice_status" + end + end +end diff --git a/app/views/registrar/invoices/partials/_details.haml b/app/views/registrar/invoices/partials/_details.haml index c5e6193a4..e53a63f5d 100644 --- a/app/views/registrar/invoices/partials/_details.haml +++ b/app/views/registrar/invoices/partials/_details.haml @@ -34,3 +34,7 @@ %dt= Invoice.human_attribute_name :reference_no %dd= @invoice.reference_no + + - invoice_presenter = Registrar::InvoiceStatusPresenter.new(invoice: @invoice) + %dt Billing system + %dd= invoice_presenter.display \ No newline at end of file diff --git a/lib/tasks/eis_billing_import_data.rake b/lib/tasks/eis_billing_import_data.rake index 518b8b23b..6d9d24d43 100644 --- a/lib/tasks/eis_billing_import_data.rake +++ b/lib/tasks/eis_billing_import_data.rake @@ -1,10 +1,5 @@ -TOKEN = ENV['eis_token'] -BASE_URL = "" -if Rails.env.staging? - BASE_URL = ENV['eis_billing_system_base_url_staging'] -else - BASE_URL = ENV['eis_billing_system_base_url_dev'] -end +BASE_URL = ENV['eis_billing_system_base_url'] +INITIATOR = 'registry'.freeze namespace :eis_billing do desc 'One time task to export invoice data to billing system' @@ -56,17 +51,20 @@ def base_request(url:, json_obj:) end def generate_token - JWT.encode(payload, ENV['secret_word']) + JWT.encode(payload, billing_secret) end def payload - { data: ENV['secret_access_word'] } + { initiator: INITIATOR } end -def headers +def headers { 'Authorization' => "Bearer #{generate_token}", 'Content-Type' => 'application/json', } end +def self.billing_secret + Rails.application.credentials.config[:billing_secret] +end