2024-04-29 00:17:15 +02:00
|
|
|
|
# frozen_string_literal: true
|
|
|
|
|
|
2023-01-10 17:20:22 +01:00
|
|
|
|
module Mutations
|
|
|
|
|
class GroupeInstructeurSupprimerInstructeurs < Mutations::BaseMutation
|
|
|
|
|
description "Supprimer des instructeurs d’un groupe instructeur."
|
|
|
|
|
|
|
|
|
|
argument :groupe_instructeur_id, ID, "Groupe instructeur ID.", required: true, loads: Types::GroupeInstructeurType
|
|
|
|
|
argument :instructeurs, [Types::ProfileInput], "Instructeurs à supprimer.", required: true
|
|
|
|
|
|
|
|
|
|
field :groupe_instructeur, Types::GroupeInstructeurType, null: true
|
|
|
|
|
field :errors, [Types::ValidationErrorType], null: true
|
|
|
|
|
|
|
|
|
|
def resolve(groupe_instructeur:, instructeurs:)
|
|
|
|
|
ids, emails = partition_instructeurs_by(instructeurs)
|
|
|
|
|
instructeurs = groupe_instructeur.instructeurs.find_all_by_identifier(ids:, emails:)
|
|
|
|
|
|
2023-02-20 17:00:10 +01:00
|
|
|
|
if instructeurs.present?
|
2023-02-21 09:51:14 +01:00
|
|
|
|
instructeurs.each { groupe_instructeur.remove(_1) }
|
|
|
|
|
|
2023-03-02 10:17:31 +01:00
|
|
|
|
groupe_instructeur.reload
|
2023-02-20 17:48:56 +01:00
|
|
|
|
|
|
|
|
|
instructeurs.each do |instructeur|
|
|
|
|
|
GroupeInstructeurMailer
|
|
|
|
|
.notify_removed_instructeur(groupe_instructeur, instructeur, current_administrateur.email)
|
|
|
|
|
.deliver_later
|
|
|
|
|
end
|
2023-02-20 17:00:10 +01:00
|
|
|
|
end
|
|
|
|
|
|
2023-01-10 17:20:22 +01:00
|
|
|
|
{ groupe_instructeur: }
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end
|