Files
timeoverflow/app/controllers/petitions_controller.rb

48 lines
1.3 KiB
Ruby

class PetitionsController < ApplicationController
before_action :authenticate_user!
def create
petition = Petition.new petition_params
if petition.save
OrganizationNotifier.new_petition(petition).deliver_later
OrganizationNotifier.petition_sent(petition).deliver_later
flash[:notice] = t('petitions.application_status', status: t("petitions.status.sent"))
else
flash[:error] = petition.errors.full_messages.to_sentence
end
redirect_back fallback_location: organization_path(petition.organization)
end
def update
petition = Petition.find params[:id]
authorize petition
status = params[:status]
if petition.update(status: status)
petition.user.add_to_organization(petition.organization) if status == 'accepted'
flash[:notice] = t('petitions.application_status', status: t("petitions.status.#{status}"))
else
flash[:error] = petition.errors.full_messages.to_sentence
end
redirect_to manage_petitions_path
end
def manage
authorize Petition
@status = params[:status] || Petition::DEFAULT_STATUS
@users = User.joins(:petitions).where(petitions: { organization_id: current_organization.id, status: @status }).page(params[:page]).per(20)
end
private
def petition_params
params.permit(%i[organization_id user_id])
end
end