demarches-normaliennes/app/models/individual.rb

42 lines
1.4 KiB
Ruby
Raw Normal View History

2018-03-06 13:44:29 +01:00
class Individual < ApplicationRecord
2023-11-22 18:16:41 +01:00
enum notification_method: {
email: 'email',
no_notification: 'no_notification'
}
belongs_to :dossier, optional: false
2016-08-30 11:18:43 +02:00
2018-03-06 13:44:29 +01:00
validates :dossier_id, uniqueness: true
2018-02-08 17:13:15 +01:00
validates :gender, presence: true, allow_nil: false, on: :update
validates :nom, presence: true, allow_blank: false, allow_nil: false, on: :update
validates :prenom, presence: true, allow_blank: false, allow_nil: false, on: :update
2023-11-22 18:16:41 +01:00
validates :notification_method, presence: true,
inclusion: { in: notification_methods.keys },
if: -> { dossier.for_tiers? },
on: :update
validates :email, strict_email: true, presence: true, if: -> { dossier.for_tiers? && self.email? }, on: :update
validate :email_different_from_mandataire, on: :update
2019-08-01 09:34:26 +02:00
after_commit -> { dossier.index_search_terms_later }, if: -> { nom_previously_changed? || prenom_previously_changed? }
GENDER_MALE = "M."
GENDER_FEMALE = 'Mme'
2019-08-01 09:34:26 +02:00
def self.from_france_connect(fc_information)
new(
2019-08-01 09:34:26 +02:00
nom: fc_information.family_name,
prenom: fc_information.given_name,
gender: fc_information.gender == 'female' ? GENDER_FEMALE : GENDER_MALE
)
end
def unverified_email? = !email_verified_at?
def email_different_from_mandataire
if email.present? && email.casecmp?(dossier.user.email)
errors.add(:email, :must_be_different_from_mandataire)
end
end
2016-08-30 11:18:43 +02:00
end