class Public::AmendmentsController < Public::BaseController skip_after_action :verify_authorized, :verify_policy_scoped before_action :set_account, :set_project, :set_contract_template, :set_release def new if @release.amendment_signed? render :create, locals: { already_signed: true } end end def create @release.amendment_signer_name = release_params[:amendment_signer_name] @release.amendment_signature_base64 = release_params[:amendment_signature_base64] render :new unless @release.save end private def release_params release_type = @contract_template.release_type param_name = "#{release_type}_release".to_s params.require(param_name).permit(:amendment_signer_name, :amendment_signature_base64) end def set_release release_type = @contract_template.release_type param_name = "#{release_type}_release_id".to_s release_id = params[param_name] @release = @contract_template.releases.find(release_id) end def set_contract_template @contract_template = @project.contract_templates.find(params[:contract_template_id]) end def set_project @project = @account.projects.find(params[:project_id]) end def set_account @account = Account.find_by(slug: params[:account_id]) end end