2024-04-29 00:17:15 +02:00
|
|
|
|
# frozen_string_literal: true
|
|
|
|
|
|
2020-02-21 11:57:36 +01:00
|
|
|
|
module Mutations
|
|
|
|
|
class DossierChangerGroupeInstructeur < Mutations::BaseMutation
|
|
|
|
|
include DossierHelper
|
|
|
|
|
|
|
|
|
|
description "Changer le grope instructeur du dossier."
|
|
|
|
|
|
|
|
|
|
argument :dossier_id, ID, "Dossier ID", required: true, loads: Types::DossierType
|
|
|
|
|
argument :groupe_instructeur_id, ID, "Group instructeur a affecter", required: true, loads: Types::GroupeInstructeurType
|
|
|
|
|
|
|
|
|
|
field :dossier, Types::DossierType, null: true
|
|
|
|
|
field :errors, [Types::ValidationErrorType], null: true
|
|
|
|
|
|
|
|
|
|
def resolve(dossier:, groupe_instructeur:)
|
2023-07-18 10:37:45 +02:00
|
|
|
|
dossier.assign_to_groupe_instructeur(groupe_instructeur, DossierAssignment.modes.fetch(:manual), current_administrateur)
|
2023-07-05 17:03:46 +02:00
|
|
|
|
|
2022-12-07 13:21:55 +01:00
|
|
|
|
{ dossier: }
|
2020-02-21 11:57:36 +01:00
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def authorized?(dossier:, groupe_instructeur:)
|
2020-12-10 16:23:24 +01:00
|
|
|
|
if dossier.groupe_instructeur == groupe_instructeur
|
|
|
|
|
return false, { errors: ["Le dossier est déjà avec le grope instructeur: '#{groupe_instructeur.label}'"] }
|
2021-03-09 11:21:25 +01:00
|
|
|
|
elsif dossier.procedure != groupe_instructeur.procedure
|
2020-12-10 16:23:24 +01:00
|
|
|
|
return false, { errors: ["Le groupe instructeur '#{groupe_instructeur.label}' n’appartient pas à la même démarche que le dossier"] }
|
|
|
|
|
else
|
|
|
|
|
true
|
|
|
|
|
end
|
2020-02-21 11:57:36 +01:00
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end
|