2025-04-14 11:40:34 -04:00
class ValuationsController < ApplicationController
2025-07-03 09:33:07 -04:00
include EntryableResource , StreamExtensions
2025-04-14 11:40:34 -04:00
def create
account = Current . family . accounts . find ( params . dig ( :entry , :account_id ) )
2025-07-03 09:33:07 -04:00
result = account . update_balance (
balance : entry_params [ :amount ] ,
date : entry_params [ :date ] ,
currency : entry_params [ :currency ] ,
notes : entry_params [ :notes ]
)
2025-04-14 11:40:34 -04:00
2025-07-03 09:33:07 -04:00
if result . success?
@success_message = result . updated? ? " Balance updated " : " No changes made. Account is already up to date. "
2025-04-14 11:40:34 -04:00
respond_to do | format |
2025-07-03 09:33:07 -04:00
format . html { redirect_back_or_to account_path ( account ) , notice : @success_message }
format . turbo_stream { stream_redirect_back_or_to ( account_path ( account ) , notice : @success_message ) }
2025-04-14 11:40:34 -04:00
end
else
2025-07-03 09:33:07 -04:00
@error_message = result . error_message
2025-04-14 11:40:34 -04:00
render :new , status : :unprocessable_entity
end
end
def update
2025-07-03 09:33:07 -04:00
result = @entry . account . update_balance (
date : @entry . date ,
balance : entry_params [ :amount ] ,
currency : entry_params [ :currency ] ,
notes : entry_params [ :notes ]
)
if result . success?
@entry . reload
2025-04-14 11:40:34 -04:00
respond_to do | format |
2025-07-03 09:33:07 -04:00
format . html { redirect_back_or_to account_path ( @entry . account ) , notice : result . updated? ? " Balance updated " : " No changes made. Account is already up to date. " }
2025-04-14 11:40:34 -04:00
format . turbo_stream do
render turbo_stream : [
turbo_stream . replace (
dom_id ( @entry , :header ) ,
partial : " valuations/header " ,
locals : { entry : @entry }
) ,
turbo_stream . replace ( @entry )
]
end
end
else
2025-07-03 09:33:07 -04:00
@error_message = result . error_message
2025-04-14 11:40:34 -04:00
render :show , status : :unprocessable_entity
end
end
private
def entry_params
params . require ( :entry )
2025-07-03 09:33:07 -04:00
. permit ( :date , :amount , :currency , :notes )
2025-04-14 11:40:34 -04:00
end
end