mirror of
https://github.com/we-promise/sure.git
synced 2026-04-18 11:34:13 +00:00
* First pass lunch flow * Fixes - Fix apikey not being saved properly due to provider no reload support - Fix proper messages if we try to link existing accounts. * Fix better error handling * Filter existing transactions and skip duplicates * FIX messaging * Branding :) * Fix XSS and linter * FIX provider concern - also fix code duplication * FIX md5 digest * Updated determine_sync_start_date to be account-aware * Review fixes * Broaden error catch to not crash UI * Fix buttons styling * FIX process account error handling * FIX account cap and url parsing * Lunch Flow brand * Found orphan i18n strings * Remove per conversation with @sokie --------- Co-authored-by: Juan José Mata <juanjo.mata@gmail.com>
45 lines
1.4 KiB
Ruby
45 lines
1.4 KiB
Ruby
class LunchflowAccount < ApplicationRecord
|
|
belongs_to :lunchflow_item
|
|
|
|
# New association through account_providers
|
|
has_one :account_provider, as: :provider, dependent: :destroy
|
|
has_one :account, through: :account_provider, source: :account
|
|
has_one :linked_account, through: :account_provider, source: :account
|
|
|
|
validates :name, :currency, presence: true
|
|
|
|
# Helper to get account using account_providers system
|
|
def current_account
|
|
account
|
|
end
|
|
|
|
def upsert_lunchflow_snapshot!(account_snapshot)
|
|
# Convert to symbol keys or handle both string and symbol keys
|
|
snapshot = account_snapshot.with_indifferent_access
|
|
|
|
# Map Lunchflow field names to our field names
|
|
# Lunchflow API returns: { id, name, institution_name, institution_logo, provider, currency, status }
|
|
update!(
|
|
current_balance: nil, # Balance not provided by accounts endpoint
|
|
currency: snapshot[:currency] || "USD",
|
|
name: snapshot[:name],
|
|
account_id: snapshot[:id].to_s,
|
|
account_status: snapshot[:status],
|
|
provider: snapshot[:provider],
|
|
institution_metadata: {
|
|
name: snapshot[:institution_name],
|
|
logo: snapshot[:institution_logo]
|
|
}.compact,
|
|
raw_payload: account_snapshot
|
|
)
|
|
end
|
|
|
|
def upsert_lunchflow_transactions_snapshot!(transactions_snapshot)
|
|
assign_attributes(
|
|
raw_transactions_payload: transactions_snapshot
|
|
)
|
|
|
|
save!
|
|
end
|
|
end
|