class CommentaireGroupeGestionnaire < ApplicationRecord
  include Discard::Model
  belongs_to :groupe_gestionnaire
  belongs_to :gestionnaire, optional: true
  belongs_to :sender, polymorphic: true

  validates :body, presence: { message: "ne peut ĂȘtre vide" }

  before_create :set_emails

  def soft_deletable?(connected_user)
    sent_by?(connected_user) && sent_by_gestionnaire? && !discarded?
  end

  def soft_delete!
    discard!
  end

  def sent_by_gestionnaire?
    gestionnaire_id.present?
  end

  def sent_by_system?
    false
  end

  def sent_by?(someone)
    if gestionnaire
      someone == gestionnaire
    else
      someone == sender
    end
  end

  private

  def set_emails
    self.sender_email = sender.email
    self.gestionnaire_email = gestionnaire&.email
  end
end