48 lines
1.3 KiB
Ruby
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
|