diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index 15f075de..16757070 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -90,32 +90,8 @@ module ApplicationHelper def format_currency(number, options = {}) user_currency_preference = Current.family.try(:currency) || "USD" - case user_currency_preference - when "USD" - options.reverse_merge!(unit: "$", precision: 2, delimiter: ",", separator: ".") - when "EUR" - options.reverse_merge!(unit: "€", precision: 2, delimiter: ".", separator: ",") - when "GBP" - options.reverse_merge!(unit: "£", precision: 2, delimiter: ",", separator: ".") - when "CAD" - options.reverse_merge!(unit: "C$", precision: 2, delimiter: ",", separator: ".") - when "MXN" - options.reverse_merge!(unit: "MX$", precision: 2, delimiter: ",", separator: ".") - when "HKD" - options.reverse_merge!(unit: "HK$", precision: 2, delimiter: ",", separator: ".") - when "CHF" - options.reverse_merge!(unit: "CHF", precision: 2, delimiter: ".", separator: ",") - when "SGD" - options.reverse_merge!(unit: "S$", precision: 2, delimiter: ",", separator: ".") - when "NZD" - options.reverse_merge!(unit: "NZ$", precision: 2, delimiter: ",", separator: ".") - when "AUD" - options.reverse_merge!(unit: "A$", precision: 2, delimiter: ",", separator: ".") - when "KRW" - options.reverse_merge!(unit: "₩", precision: 0, delimiter: ",", separator: ".") - else - options.reverse_merge!(unit: "$", precision: 2, delimiter: ",", separator: ".") - end + currency_options = CURRENCY_OPTIONS[user_currency_preference.to_sym] + options.reverse_merge!(currency_options) number_to_currency(number, options) end diff --git a/app/models/exchange_rate.rb b/app/models/exchange_rate.rb index 993cb34f..ba567d9c 100644 --- a/app/models/exchange_rate.rb +++ b/app/models/exchange_rate.rb @@ -1,5 +1,7 @@ class ExchangeRate < ApplicationRecord def self.convert(from, to, amount) + return amount unless EXCHANGE_RATE_ENABLED + rate = ExchangeRate.find_by(base_currency: from, converted_currency: to) amount * rate.rate end diff --git a/app/views/shared/_currency_dropdown.html.erb b/app/views/shared/_currency_dropdown.html.erb index 5338482a..9a3573a4 100644 --- a/app/views/shared/_currency_dropdown.html.erb +++ b/app/views/shared/_currency_dropdown.html.erb @@ -2,7 +2,7 @@ - \ No newline at end of file + diff --git a/config/initializers/constants.rb b/config/initializers/constants.rb new file mode 100644 index 00000000..5f9790c8 --- /dev/null +++ b/config/initializers/constants.rb @@ -0,0 +1,18 @@ +default_currency_options = { unit: "$", precision: 2, delimiter: ",", separator: "." } + +CURRENCY_OPTIONS = Hash.new { |hash, key| hash[key] = default_currency_options.dup }.merge( + "USD": { unit: "$", precision: 2, delimiter: ",", separator: "." }, + "EUR": { unit: "€", precision: 2, delimiter: ".", separator: "," }, + "GBP": { unit: "£", precision: 2, delimiter: ",", separator: "." }, + "CAD": { unit: "C$", precision: 2, delimiter: ",", separator: "." }, + "MXN": { unit: "MX$", precision: 2, delimiter: ",", separator: "." }, + "HKD": { unit: "HK$", precision: 2, delimiter: ",", separator: "." }, + "CHF": { unit: "CHF", precision: 2, delimiter: ".", separator: "," }, + "SGD": { unit: "S$", precision: 2, delimiter: ",", separator: "." }, + "NZD": { unit: "NZ$", precision: 2, delimiter: ",", separator: "." }, + "AUD": { unit: "A$", precision: 2, delimiter: ",", separator: "." }, + "KRW": { unit: "₩", precision: 0, delimiter: ",", separator: "." }, + "INR": { unit: "₹", precision: 0, delimiter: ",", separator: "." } +) + +EXCHANGE_RATE_ENABLED = ENV["OPEN_EXCHANGE_APP_ID"].present?