internetee-registry/app/interactions/actions/account_activity_create.rb
2021-08-24 22:00:30 +03:00

47 lines
1 KiB
Ruby

module Actions
class AccountActivityCreate
def initialize(account, new_balance, description, type)
@account = account
@new_balance = new_balance
@description = description
@type = type
end
def call
validate_new_balance
return false if @error
calc_sum
create_activity
commit
end
def calc_sum
@sum = @new_balance.to_f - @account.balance
end
def validate_new_balance
if @new_balance.blank?
@error = true
else
begin
!Float(@new_balance).nil?
rescue StandardError
@error = true
end
end
end
def create_activity
@activity = AccountActivity.new(account: @account,
sum: @sum,
currency: @account.currency,
description: @description,
activity_type: @type)
end
def commit
@activity.save!
end
end
end