2024-04-29 00:17:15 +02:00
|
|
|
# frozen_string_literal: true
|
|
|
|
|
2023-09-04 12:07:04 +02:00
|
|
|
class GroupeGestionnaire < ApplicationRecord
|
|
|
|
has_many :administrateurs
|
2023-10-24 17:45:20 +02:00
|
|
|
has_many :commentaire_groupe_gestionnaires
|
2023-11-02 12:23:21 +01:00
|
|
|
has_many :follow_commentaire_groupe_gestionnaires
|
2023-09-04 12:07:04 +02:00
|
|
|
has_and_belongs_to_many :gestionnaires
|
|
|
|
|
2023-10-01 12:52:05 +02:00
|
|
|
has_ancestry
|
2023-08-29 19:08:27 +02:00
|
|
|
|
2023-10-06 17:12:00 +02:00
|
|
|
def add_gestionnaire(gestionnaire)
|
2023-08-29 19:08:27 +02:00
|
|
|
return if gestionnaire.nil?
|
|
|
|
return if in?(gestionnaire.groupe_gestionnaires)
|
|
|
|
|
2023-09-04 12:07:04 +02:00
|
|
|
gestionnaires << gestionnaire
|
|
|
|
end
|
|
|
|
|
2023-10-06 17:12:00 +02:00
|
|
|
def add_administrateur(administrateur)
|
|
|
|
return if administrateur.nil?
|
|
|
|
return if id == administrateur.groupe_gestionnaire_id
|
|
|
|
|
|
|
|
administrateurs << administrateur
|
|
|
|
end
|
|
|
|
|
2023-09-30 12:45:54 +02:00
|
|
|
def can_be_deleted?(current_user)
|
|
|
|
(gestionnaires.empty? || (gestionnaires == [current_user])) && administrateurs.empty? && children.empty?
|
|
|
|
end
|
2023-10-09 19:18:38 +02:00
|
|
|
|
|
|
|
def parent_name
|
|
|
|
parent&.name
|
|
|
|
end
|
2023-12-10 18:25:58 +01:00
|
|
|
|
|
|
|
def current_commentaires_groupe_and_children_commentaires_groupe
|
|
|
|
commentaires = CommentaireGroupeGestionnaire.where(groupe_gestionnaire_id: id, sender_type: "Administrateur")
|
|
|
|
unless child_ids.empty?
|
|
|
|
commentaires = commentaires.or(CommentaireGroupeGestionnaire.where(groupe_gestionnaire_id: child_ids, sender_type: "Gestionnaire"))
|
|
|
|
end
|
|
|
|
commentaires
|
|
|
|
end
|
2023-12-10 18:25:58 +01:00
|
|
|
|
|
|
|
def gestionnaire_commentaires(gestionnaire)
|
|
|
|
commentaires = self.current_commentaires_groupe_and_children_commentaires_groupe
|
|
|
|
if self.parent_id && !gestionnaire.groupe_gestionnaires.exists?(id: self.parent_id)
|
|
|
|
commentaires = commentaires.or(CommentaireGroupeGestionnaire.where(groupe_gestionnaire_id: self.id, sender: gestionnaire))
|
|
|
|
end
|
|
|
|
commentaires
|
|
|
|
end
|
2023-09-04 12:07:04 +02:00
|
|
|
end
|