2024-04-29 00:17:15 +02:00
|
|
|
# frozen_string_literal: true
|
|
|
|
|
2018-03-06 13:44:29 +01:00
|
|
|
class Invite < ApplicationRecord
|
2018-02-26 14:51:25 +01:00
|
|
|
include EmailSanitizableConcern
|
|
|
|
|
2020-07-20 16:56:23 +02:00
|
|
|
belongs_to :dossier, optional: false
|
2020-07-20 16:06:03 +02:00
|
|
|
belongs_to :user, optional: true
|
2023-01-31 16:06:31 +01:00
|
|
|
has_one :targeted_user_link, as: :target_model, dependent: :destroy, inverse_of: :target_model
|
2016-02-08 18:16:18 +01:00
|
|
|
|
2018-02-26 14:51:25 +01:00
|
|
|
before_validation -> { sanitize_email(:email) }
|
|
|
|
|
2020-09-28 17:38:49 +02:00
|
|
|
after_create_commit :send_notification
|
2020-09-25 11:10:12 +02:00
|
|
|
|
2018-03-06 13:44:29 +01:00
|
|
|
validates :email, presence: true
|
|
|
|
validates :email, uniqueness: { scope: :dossier_id }
|
2024-02-13 10:37:03 +01:00
|
|
|
validates :email, strict_email: true, allow_nil: true
|
2018-03-14 18:57:56 +01:00
|
|
|
|
2022-03-09 10:27:43 +01:00
|
|
|
scope :with_dossiers, -> { joins(:dossier).merge(Dossier.visible_by_user) }
|
|
|
|
|
|
|
|
default_scope { with_dossiers }
|
2020-09-25 11:10:12 +02:00
|
|
|
|
|
|
|
def send_notification
|
|
|
|
if self.user.present?
|
|
|
|
InviteMailer.invite_user(self).deliver_later
|
|
|
|
else
|
|
|
|
InviteMailer.invite_guest(self).deliver_later
|
|
|
|
end
|
|
|
|
end
|
2016-02-08 18:16:18 +01:00
|
|
|
end
|