otwarchive-symphonyarchive/app/models/user_invite_request.rb

35 lines
926 B
Ruby
Raw Permalink Normal View History

2026-03-11 22:22:11 +00:00
class UserInviteRequest < ApplicationRecord
MAX_USER_INVITE_REQUEST = ArchiveConfig.MAX_USER_INVITE_REQUEST
belongs_to :user
validates_presence_of :quantity
validates_presence_of :reason
validates :quantity, numericality: {less_than_or_equal_to: MAX_USER_INVITE_REQUEST}
before_update :check_status, :grant_request
scope :not_handled, -> { where(handled: false) }
private
#Mark the request granted and/or handled as appropriate
def check_status
self.handled = true
if self.quantity > 0
self.granted = true
end
end
#Create new invitations for the user who requested them
def grant_request
if self.granted?
self.quantity.times do
self.user.invitations.create
end
I18n.with_locale(self.user.preference.locale_for_mails) do
UserMailer.invite_increase_notification(self.user.id, self.quantity).deliver_after_commit
end
end
end
end