otwarchive-symphonyarchive/app/controllers/admin/admin_invitations_controller.rb

62 lines
1.9 KiB
Ruby
Raw Normal View History

2026-03-11 22:22:11 +00:00
class Admin::AdminInvitationsController < Admin::BaseController
def index
end
def create
@invitation = current_admin.invitations.new(invitation_params)
if @invitation.invitee_email.blank?
flash[:error] = t('no_email', default: "Please enter an email address.")
render action: 'index'
elsif @invitation.save
flash[:notice] = t('sent', default: "An invitation was sent to %{email_address}", email_address: @invitation.invitee_email)
redirect_to admin_invitations_path
else
render action: 'index'
end
end
def invite_from_queue
count = invitation_params[:invite_from_queue].to_i
InviteFromQueueJob.perform_later(count: count, creator: current_admin)
flash[:notice] = t(".success", count: count)
redirect_to admin_invitations_path
end
def grant_invites_to_users
if invitation_params[:user_group] == "All"
Invitation.grant_all(invitation_params[:number_of_invites].to_i)
else
Invitation.grant_empty(invitation_params[:number_of_invites].to_i)
end
flash[:notice] = t('invites_created', default: 'Invitations successfully created.')
redirect_to admin_invitations_path
end
def find
unless invitation_params[:user_name].blank?
@user = User.find_by(login: invitation_params[:user_name])
@hide_dashboard = true
@invitations = @user.invitations if @user
end
if !invitation_params[:token].blank?
@invitations = Invitation.where(token: invitation_params[:token])
elsif invitation_params[:invitee_email].present?
@invitations = Invitation.where("invitee_email LIKE ?", "%#{invitation_params[:invitee_email]}%")
end
return if @user || @invitations.present?
flash.now[:error] = t(".user_not_found")
end
private
def invitation_params
params.require(:invitation).permit(:invitee_email, :invite_from_queue,
:user_group, :number_of_invites, :user_name, :token)
end
end