2024-04-29 00:17:15 +02:00
# frozen_string_literal: true
2019-11-12 15:51:51 +01:00
module Mutations
class DossierEnvoyerMessage < Mutations :: BaseMutation
description " Envoyer un message à l'usager du dossier. "
argument :dossier_id , ID , required : true , loads : Types :: DossierType
argument :instructeur_id , ID , required : true , loads : Types :: ProfileType
argument :body , String , required : true
argument :attachment , ID , required : false
2023-07-12 12:56:16 +02:00
argument :correction , Types :: CorrectionType :: CorrectionReason , 'Préciser qu’ il s’ agit d’ une demande de correction. Le dossier repasssera en construction.' , required : false
2019-11-12 15:51:51 +01:00
field :message , Types :: MessageType , null : true
field :errors , [ Types :: ValidationErrorType ] , null : true
2023-07-12 12:56:16 +02:00
def resolve ( dossier : , instructeur : , body : , attachment : nil , correction : nil )
2021-11-30 18:56:12 +01:00
message = CommentaireService . create ( instructeur , dossier , body : body , piece_jointe : attachment )
2019-11-12 15:51:51 +01:00
2021-11-30 18:56:12 +01:00
if message . errors . empty?
2023-07-12 12:56:16 +02:00
if correction
dossier . flag_as_pending_correction! ( message , correction )
end
2022-12-07 13:21:55 +01:00
{ message : }
2019-11-12 15:51:51 +01:00
else
{ errors : message . errors . full_messages }
end
end
2023-02-13 14:25:17 +01:00
def authorized_before_load? ( attachment : nil , ** args )
2020-12-10 16:23:24 +01:00
if attachment . present?
validate_blob ( attachment )
else
true
end
end
def authorized? ( dossier : , instructeur : , ** args )
dossier_authorized_for? ( dossier , instructeur )
2019-11-12 15:51:51 +01:00
end
end
end