39 lines
1.4 KiB
Ruby
39 lines
1.4 KiB
Ruby
|
module Mutations
|
||
|
class GroupeInstructeurAjouterInstructeurs < Mutations::BaseMutation
|
||
|
description "Ajouter des instructeurs à un groupe instructeur."
|
||
|
|
||
|
argument :groupe_instructeur_id, ID, "Groupe instructeur ID.", required: true, loads: Types::GroupeInstructeurType
|
||
|
argument :instructeurs, [Types::ProfileInput], "Instructeurs à ajouter.", required: true
|
||
|
|
||
|
field :groupe_instructeur, Types::GroupeInstructeurType, null: true
|
||
|
field :errors, [Types::ValidationErrorType], null: true
|
||
|
field :warnings, [Types::WarningMessageType], null: true
|
||
|
|
||
|
def resolve(groupe_instructeur:, instructeurs:)
|
||
|
ids, emails = partition_instructeurs_by(instructeurs)
|
||
|
instructeurs, invalid_emails = groupe_instructeur.add_instructeurs(ids:, emails:)
|
||
|
|
||
|
instructeurs.each { groupe_instructeur.add(_1) }
|
||
|
groupe_instructeur.reload
|
||
|
|
||
|
result = { groupe_instructeur: }
|
||
|
|
||
|
if invalid_emails.present?
|
||
|
warning = I18n.t('administrateurs.groupe_instructeurs.add_instructeur.wrong_address',
|
||
|
count: invalid_emails.size,
|
||
|
emails: invalid_emails.join(', '))
|
||
|
|
||
|
result[:warnings] = [warning]
|
||
|
end
|
||
|
|
||
|
if groupe_instructeur.procedure.routing_enabled? && instructeurs.present?
|
||
|
GroupeInstructeurMailer
|
||
|
.add_instructeurs(groupe_instructeur, instructeurs, current_administrateur.email)
|
||
|
.deliver_later
|
||
|
end
|
||
|
|
||
|
result
|
||
|
end
|
||
|
end
|
||
|
end
|