demarches-normaliennes/app/graphql/mutations/dossier_modifier_annotation_ajouter_ligne.rb

37 lines
1.2 KiB
Ruby
Raw Normal View History

module Mutations
class DossierModifierAnnotationAjouterLigne < Mutations::BaseMutation
argument :dossier_id, ID, "Dossier ID", required: true, loads: Types::DossierType
argument :instructeur_id, ID, "Instructeur qui demande la modification.", required: true, loads: Types::ProfileType
argument :annotation_id, ID, "Annotation ID", required: true
field :annotation, Types::Champs::RepetitionChampType, null: true
field :errors, [Types::ValidationErrorType], null: true
def resolve(dossier:, annotation_id:, instructeur:)
annotation = find_annotation(dossier, annotation_id)
if annotation.nil?
return { errors: ["Lannotation \"#{annotation_id}\" nexiste pas"] }
end
annotation.add_row(dossier.revision)
{ annotation:, errors: nil }
end
def authorized?(dossier:, instructeur:, **args)
dossier_authorized_for?(dossier, instructeur)
end
private
def find_annotation(dossier, annotation_id)
stable_id, row_id = Champ.decode_typed_id(annotation_id)
Champ.joins(:type_de_champ).find_by(type_de_champ: {
type_champ: TypeDeChamp.type_champs.fetch(:repetition), stable_id:, private: true
}, private: true, row_id:, dossier:)
end
end
end