Commit 9f63acdc authored by Audrey Lebret's avatar Audrey Lebret
Browse files

feat(epds): Ajout de la source de l'epds (#603)

feature: Envoi des réponses au questionnaire EPDS par email (#644)

* feat(partage des resultats): ajout de la nouvelle route

* feat(partage des resultats): envoi des résultats par mail

* fix: PR

fix(partage des resultats): amélioration de l'affichage des résultats (#656)

fix: email pro obligatoire (#671)
parent 45b997cb
......@@ -18,10 +18,3 @@ MAIL_USER=
MAIL_PASSWORD=
MAIL_SEND_FROM=
MAIL_SEND_TO=
MAIL_HOST=smtp.example.com
MAIL_PORT=587
MAIL_USER=
MAIL_PASSWORD=
MAIL_SEND_FROM=no-reply@example.org
MAIL_SEND_TO=contact@example.org
......@@ -16,6 +16,14 @@
"policies": []
}
},
{
"method": "POST",
"path": "/reponses-epds/partage",
"handler": "reponses-epds.partage",
"config": {
"policies": []
}
},
{
"method": "GET",
"path": "/reponses-epds/count",
......
......@@ -10,6 +10,14 @@ const contactEpds = async (_1, _2, { context }) => {
}
};
const partageEpds = async (_1, _2, { context }) => {
try {
return ReponsesEpdsService.partage(context.request.body);
} catch (e) {
context.badRequest(e.message);
}
};
module.exports = {
definition: ``,
mutation: `
......@@ -20,6 +28,18 @@ module.exports = {
nombre_enfants: Int
naissance_dernier_enfant: String
): Boolean
epdsPartage (
email: String!
email_pro: String!
telephone: String
prenom: String
nom: String
score: String
detail_questions: [String]
detail_score: [String]
detail_reponses: [String]
): Boolean
`,
resolver: {
Mutation: {
......@@ -28,6 +48,11 @@ module.exports = {
resolver: contactEpds,
resolverOf: "application::reponses-epds.reponses-epds.contact",
},
epdsPartage: {
description: "Envoie des réponses au questionnaire EPDS par email",
resolver: partageEpds,
resolverOf: "application::reponses-epds.reponses-epds.partage",
}
},
},
};
const contact = async () => {
console.log("contact controller");
};
const contact = async () => { };
const partage = async () => { };
module.exports = {
contact,
partage,
};
......@@ -13,7 +13,12 @@
"attributes": {
"genre": {
"type": "enumeration",
"enum": ["Masculin", "Feminin", "Nonbinaire", "Inconnu"]
"enum": [
"Masculin",
"Feminin",
"Nonbinaire",
"Inconnu"
]
},
"compteur": {
"type": "integer"
......@@ -21,6 +26,13 @@
"score": {
"type": "integer"
},
"source": {
"type": "enumeration",
"enum": [
"SiteWebPro",
"ApplicationMobile"
]
},
"reponse_1": {
"type": "integer"
},
......@@ -52,4 +64,4 @@
"type": "integer"
}
}
}
}
\ No newline at end of file
......@@ -7,11 +7,10 @@ const emailTemplate = (info) => ({
Une demande de contact suite à un test EPDS a été effectuée.
Vous pouvez recontacter <%- prenom %> (<%- nombre_enfants %> enfant(s), dernier enfant le <%- naissance_dernier_enfant %>) :
- à l'adresse suivante : <%- email %>${
info.telephone
? ` ;
- à l'adresse suivante : <%- email %>${info.telephone
? ` ;
- au numéro suivant : <%- telephone %>`
: ``
: ``
}.
L'équipe 1000 premiers jours.`,
......@@ -21,12 +20,11 @@ const emailTemplate = (info) => ({
<p>Vous pouvez recontacter <%- prenom %> (<%- nombre_enfants %> enfant(s), dernier enfant né le <%- naissance_dernier_enfant %>) :
<ul>
<li>à l'adresse suivante : <a href="mailto:<%- email %>"><%- email %></a>${
info.telephone
? ` ;</li>
<li>à l'adresse suivante : <a href="mailto:<%- email %>"><%- email %></a>${info.telephone
? ` ;</li>
<li>au numéro suivant : <a href="tel:<%- telephone %>"><%- telephone %></a>`
: ""
}.</li>
: ""
}.</li>
</ul>
</p>
......@@ -70,6 +68,103 @@ const contact = async ({
}
};
/* PARTAGE DES RESULTATS */
const emailPartageTemplate = (info) => ({
subject: "Résultats au questionnaire EPDS de <%- prenom %>",
text: `Bonjour,
La patiente <%- prenom %> <%- nom %> vient de compléter un test EPDS et souhaite partager le résultat avec vous.
Vous pouvez la contacter grâce aux informations suivantes :
Adresse mail : <%- email %>
Téléphone : <%- telephone %>
Score total du questionnaire EPDS : <%- score %> / 30
Détails des réponses :
Question / Réponse / Score
${[...new Array(10)].map((_, i) => buildTextResponse(info, i)).join('\n ')}
`,
html: `
<p>Bonjour,</p>
<p>La patiente <b><%- prenom %> <%- nom %></b> vient de compléter un test EPDS et souhaite partager le résultat avec vous.
Vous pouvez la contacter grâce aux informations suivantes : </p>
<p>Adresse mail : <%- email %><br />
Téléphone : <%- telephone %></p>
<p>Score total du questionnaire EPDS : <%- score %> / 30</p>
<p>Détails des réponses :
<table border="1" cellspacing="0" cellpadding="5">
<tr>
<th>Question</th>
<th>Réponse</th>
<th>Score</th>
</tr>
${[...new Array(10)].map((_, i) => buildHtmlDetailScore(info, i)).join('\n ')}
</table>
</p>
`,
});
const buildTextResponse = (info, index) =>
`${info.detail_questions[index]} / ${info.detail_reponses[index]} / ${info.detail_score[index]}`;
const buildHtmlDetailScore = (info, index) =>
`
<tr>
<td>${info.detail_questions[index]}</td>
<td>${info.detail_reponses[index]}</td>
<td>${info.detail_score[index]}</td>
</tr>
`;
const partage = async ({
email,
email_pro,
telephone,
prenom = "ND",
nom = "ND",
score = "ND",
detail_questions = "ND",
detail_score = "ND",
detail_reponses = "ND"
}) => {
if (!email_pro) throw new Error("Au moins une adresse email est nécessaire");
const info = {
email,
email_pro,
telephone,
prenom,
nom,
score,
detail_questions,
detail_score,
detail_reponses
};
try {
const res = await strapi.plugins.email.services.email.sendTemplatedEmail(
{
from: process.env["MAIL_SEND_FROM"],
to: email_pro,
},
emailPartageTemplate(info),
info
);
return res && !!res.response.match(/Ok/);
} catch (e) {
console.error(e);
throw new Error("Erreur de connexion au serveur mail");
}
};
module.exports = {
contact,
partage
};
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment