1
0
Fork 0
mirror of https://github.com/maybe-finance/maybe.git synced 2025-07-19 13:19:39 +02:00
Maybe/app/controllers/accounts_controller.rb
Zach Gollwitzer f904d9d062
Add the ability to "rollup" values in a time series (#554)
* Clean up time series models

* Add value group rollup class for summarizing hierarchical data

* Integrate new classes

* Update UI to use new patterns

* Update D3 charts to expect new data format

* Clean up account model

* More cleanup

* Money improvements

* Use new money fields

* Remove invalid fixture data to avoid orphaned accountables

* Update time series to work better with collections

* Fix tests and UI bugs
2024-03-19 09:10:40 -04:00

58 lines
1.6 KiB
Ruby

class AccountsController < ApplicationController
include Filterable
before_action :authenticate_user!
def new
@account = Account.new(
balance: nil,
accountable: Accountable.from_type(params[:type])&.new
)
end
def show
@account = Current.family.accounts.find(params[:id])
@balance_series = @account.series(@period)
@valuation_series = @account.valuations.to_series
end
def edit
end
def update
@account = Current.family.accounts.find(params[:id])
if @account.update(account_params.except(:accountable_type))
@account.sync_later if account_params[:is_active] == "1"
respond_to do |format|
format.html { redirect_to accounts_path, notice: t(".success") }
format.turbo_stream do
render turbo_stream: [
turbo_stream.append("notification-tray", partial: "shared/notification", locals: { type: "success", content: t(".success") }),
turbo_stream.replace("account_#{@account.id}", partial: "accounts/account", locals: { account: @account })
]
end
end
else
render "edit", status: :unprocessable_entity
end
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, :balance, :currency, :subtype, :is_active)
end
end