Skip to content

Commit

Permalink
[FEATURE] Envoyer en un batch les alertes Joi pour le métier (PIX-15124)
Browse files Browse the repository at this point in the history
  • Loading branch information
pix-service-auto-merge authored Nov 12, 2024
2 parents 064ee3b + d17a849 commit 5916374
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 8 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -18,22 +18,22 @@ const qcuElementSchema = Joi.object({
invalid: htmlSchema,
}),
solution: proposalIdSchema.required(),
}).custom((qcuElement, helpers) => {
}).external(async (qcuElement, helpers) => {
const hasGlobalFeedbacks = qcuElement.feedbacks !== undefined;
const hasSpecificFeedbacks = qcuElement.proposals.some((proposal) => proposal.feedback !== undefined);
if (hasGlobalFeedbacks && hasSpecificFeedbacks) {
return helpers.message('Un QCU ne peut pas avoir à la fois des feedbacks spécifiques et globales');
return helpers.error('Un QCU ne peut pas avoir à la fois des feedbacks spécifiques et globales');
}
if (hasSpecificFeedbacks) {
const someProposalsDoNotHaveSpecificFeedback = qcuElement.proposals.some(
(proposal) => proposal.feedback === undefined,
);
if (someProposalsDoNotHaveSpecificFeedback) {
return helpers.message('Dans ce QCU, au moins une proposition ne possède pas de feedback spécifique');
return helpers.error('Dans ce QCU, au moins une proposition ne possède pas de feedback spécifique');
}
}
if (!hasGlobalFeedbacks && !hasSpecificFeedbacks) {
return helpers.message("Dans ce QCU, il n'y a ni feedbacks spécifiques, ni feedbacks globales");
return helpers.error("Dans ce QCU, il n'y a ni feedbacks spécifiques, ni feedbacks globales");
}

return qcuElement;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -84,21 +84,21 @@ const grainSchema = Joi.object({
],
}),
)
.custom((value, helpers) => {
.external(async (value, helpers) => {
const steppersInArray = value.filter(({ type }) => type === 'stepper');
if (steppersInArray.length > 1) {
return helpers.message("Il ne peut y avoir qu'un stepper par grain");
return helpers.error("Il ne peut y avoir qu'un stepper par grain");
}
return value;
})
.custom((value, helpers) => {
.external(async (value, helpers) => {
const steppersInArray = value.filter(({ type }) => type === 'stepper');
const elementsInArray = value.filter(({ type }) => type === 'element');
const containsAnswerableElement = elementsInArray.some(({ element }) =>
['qcu', 'qcm', 'qrocm'].includes(element.type),
);
if (steppersInArray.length === 1 && containsAnswerableElement) {
return helpers.message(
return helpers.error(
"Un grain ne peut pas être composé d'un composant 'stepper' et d'un composant 'element' répondable (QCU, QCM ou QROCM)",
);
}
Expand Down

0 comments on commit 5916374

Please sign in to comment.