1
0
Fork 0
mirror of https://github.com/maybe-finance/maybe.git synced 2025-07-21 14:19:39 +02:00
Maybe/app/controllers/accounts_controller.rb
Zach Gollwitzer 7e324f1b53
Scaffold out Account Syncing (#474)
* Add trends, time series, seed data

* Remove test data

* Replace old view values with helpers

* Fix tooltip bugs in D3 chart

* Fix tests

* Fix smoke test

* Add CRUD actions for valuations

* Scaffold out inline editing with Turbo

* Refactor series logic

* Scaffold out basic sync process for accounts

* Fix tests
2024-02-22 11:35:06 -05:00

46 lines
1.3 KiB
Ruby

class AccountsController < ApplicationController
before_action :authenticate_user!
def new
@account = Account.new(
original_balance: nil,
accountable: Accountable.from_type(params[:type])&.new
)
end
def show
@account = Current.family.accounts.find(params[:id])
@period = Period.find_by_name(params[:period])
if @period.nil?
start_date = params[:start_date].presence&.to_date
end_date = params[:end_date].presence&.to_date
if start_date.is_a?(Date) && end_date.is_a?(Date) && start_date <= end_date
@period = Period.new(name: "custom", date_range: start_date..end_date)
else
params[:period] = "last_30_days"
@period = Period.find_by_name(params[:period])
end
end
@balance_series = @account.balance_series(@period)
@valuation_series = @account.valuation_series
end
def create
@account = Current.family.accounts.build(account_params.except(:accountable_type))
@account.accountable = Accountable.from_type(account_params[:accountable_type])&.new
if @account.save
redirect_to accounts_path, notice: t(".success")
else
render "new", status: :unprocessable_entity
end
end
private
def account_params
params.require(:account).permit(:name, :accountable_type, :original_balance, :original_currency, :subtype)
end
end