module Admin::BudgetPhasesActions extend ActiveSupport::Concern included do include Translatable include ImageAttributes before_action :load_budget before_action :load_phase, only: [:edit, :update, :enable, :disable] end def edit end def update if @phase.update(budget_phase_params) redirect_to phases_index, notice: t("flash.actions.save_changes.notice") else render :edit end end def enable @phase.update!(enabled: true) respond_to do |format| format.html { redirect_to phases_index, notice: t("flash.actions.save_changes.notice") } format.js { render template: "admin/budgets_wizard/phases/toggle_enabled" } end end def disable @phase.update!(enabled: false) respond_to do |format| format.html { redirect_to phases_index, notice: t("flash.actions.save_changes.notice") } format.js { render template: "admin/budgets_wizard/phases/toggle_enabled" } end end private def load_budget @budget = Budget.find_by_slug_or_id!(params[:budget_id]) end def load_phase @phase = @budget.phases.find(params[:id]) end def budget_phase_params params.require(:budget_phase).permit(allowed_params) end def allowed_params valid_attributes = [:starts_at, :ends_at, :enabled, image_attributes: image_attributes] [*valid_attributes, translation_params(Budget::Phase)] end end