subtract debits from cake balance
This commit is contained in:
@@ -31,7 +31,7 @@ class FiatBalanceDashboard < Administrate::BaseDashboard
|
||||
# FORM_ATTRIBUTES
|
||||
# an array of attributes that will be displayed
|
||||
# on the model's form (`new` and `edit`) pages.
|
||||
FORM_ATTRIBUTES = [:user, :amount_cents].freeze
|
||||
FORM_ATTRIBUTES = [:amount_cents].freeze
|
||||
|
||||
# COLLECTION_FILTERS
|
||||
# a hash that defines filters that can be used while searching via the search
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
# frozen_string_literal: true
|
||||
class ApplicationRecord < ActiveRecord::Base
|
||||
self.abstract_class = true
|
||||
|
||||
default_scope { order(created_at: :desc) }
|
||||
end
|
||||
|
||||
@@ -33,6 +33,9 @@ class StakeOrder < ApplicationRecord
|
||||
super & ["pool_name", "amount"]
|
||||
end
|
||||
|
||||
scope :add, -> { where("amount > 0") }
|
||||
scope :remove, -> { where("amount < 0") }
|
||||
|
||||
private
|
||||
|
||||
def notification_message
|
||||
|
||||
@@ -29,6 +29,7 @@ class User < ApplicationRecord
|
||||
|
||||
has_many :documents, class_name: "UserDocument", dependent: :destroy
|
||||
has_many :stake_orders, dependent: :restrict_with_error
|
||||
has_many :sell_crypto_orders, dependent: :restrict_with_error
|
||||
has_one :fiat_balance, dependent: :restrict_with_error
|
||||
|
||||
validates :first_name, :last_name, :email, presence: true
|
||||
|
||||
@@ -10,12 +10,12 @@ class BscClient
|
||||
}
|
||||
end
|
||||
|
||||
def token_balance(token, token_decimals, wallet_address)
|
||||
def token_balance(contract:, digits:, wallet_address:)
|
||||
result = self.class.get(
|
||||
"https://api-eu1.tatum.io/v3/blockchain/token/balance/BSC/#{token}/#{wallet_address}",
|
||||
"https://api-eu1.tatum.io/v3/blockchain/token/balance/BSC/#{contract}/#{wallet_address}",
|
||||
headers: @headers
|
||||
).parsed_response["balance"]
|
||||
|
||||
result.to_f / (10**token_decimals)
|
||||
(result.to_f / (10**digits)).round(5)
|
||||
end
|
||||
end
|
||||
|
||||
@@ -11,12 +11,24 @@ class Wallet
|
||||
private
|
||||
|
||||
def total_cake
|
||||
return "0" if address.blank?
|
||||
return 0 if address.blank?
|
||||
|
||||
BscClient.new.token_balance(
|
||||
"0x0e09fabb73bd3ade0a17ecc321fd13a19e81ce82",
|
||||
18,
|
||||
address,
|
||||
)
|
||||
contract: "0x0e09fabb73bd3ade0a17ecc321fd13a19e81ce82",
|
||||
digits: 18,
|
||||
wallet_address: address,
|
||||
) - total_cake_debit
|
||||
end
|
||||
|
||||
def total_cake_debit
|
||||
total_cake_stake_debit + total_cake_sell_debit
|
||||
end
|
||||
|
||||
def total_cake_stake_debit
|
||||
user.stake_orders.processing.add.sum(&:amount).to_f
|
||||
end
|
||||
|
||||
def total_cake_sell_debit
|
||||
user.sell_crypto_orders.processing.sum(&:paid_amount).to_f
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user