2024-02-05 22:19:23 +08:00
|
|
|
class SettingsController < ApplicationController
|
|
|
|
before_action :authenticate_user!
|
|
|
|
|
|
|
|
def edit
|
|
|
|
end
|
|
|
|
|
|
|
|
def update
|
2024-02-10 16:18:56 -06:00
|
|
|
user_params_with_family = user_params
|
|
|
|
# Ensure we're only updating the family associated with the current user
|
|
|
|
if Current.family
|
|
|
|
family_attributes = user_params_with_family[:family_attributes].merge({ id: Current.family.id })
|
|
|
|
user_params_with_family[:family_attributes] = family_attributes
|
|
|
|
end
|
|
|
|
|
|
|
|
# If the family attribute for currency is changed, we need to convert all account balances to the new currency with the ConvertCurrencyJob job
|
|
|
|
if user_params_with_family[:family_attributes][:currency] != Current.family.currency
|
|
|
|
ConvertCurrencyJob.perform_later(Current.family)
|
|
|
|
end
|
|
|
|
|
|
|
|
if Current.user.update(user_params_with_family)
|
2024-02-05 22:19:23 +08:00
|
|
|
redirect_to root_path, notice: "Profile updated successfully."
|
|
|
|
else
|
|
|
|
render :edit, status: :unprocessable_entity
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
private
|
|
|
|
|
|
|
|
def user_params
|
|
|
|
params.require(:user).permit(:first_name, :last_name, :email, :password, :password_confirmation,
|
2024-02-10 16:18:56 -06:00
|
|
|
family_attributes: [ :name, :id, :currency ])
|
2024-02-05 22:19:23 +08:00
|
|
|
end
|
|
|
|
end
|