Skip to content

Commit

Permalink
feat(template): change modal for select and typo on supression word
Browse files Browse the repository at this point in the history
  • Loading branch information
Mihoub2 committed Oct 23, 2024
1 parent 4b328ce commit 537b01c
Show file tree
Hide file tree
Showing 9 changed files with 117 additions and 4,950 deletions.
61 changes: 31 additions & 30 deletions client/src/components/items/staff-action.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -36,8 +36,8 @@ const StaffActions = ({

const [isAllRead, setIsAllRead] = useState(() => {
return (
data?.threads.every((thread) =>
thread.responses.every((response) => response.read)
data?.threads?.every((thread) =>
thread.responses?.every((response) => response.read)
) || false
);
});
Expand Down Expand Up @@ -114,25 +114,25 @@ const StaffActions = ({

useEffect(() => {
const allRead =
data?.threads.every((thread) =>
thread.responses.every((response) => response.read)
data?.threads?.every((thread) =>
thread.responses?.every((response) => response.read)
) || false;
setIsAllRead(allRead);
}, [data]);

const cleanResponseMessage = (message: string) => {
return message
.replace(/De:.*$/s, "")
.replace(/Objet :.*$/s, "")
.replace(/Envoyé :.*$/s, "")
.replace(/Le lun.*$/s, "")
.replace(/Le mar.*$/s, "")
.replace(/Le mer.*$/s, "")
.replace(/Le jeu.*$/s, "")
.replace(/Le ven.*$/s, "")
.replace(/Le sam.*$/s, "")
.replace(/Le dim.*$/s, "")
.trim();
?.replace(/De:.*$/s, "")
?.replace(/Objet :.*$/s, "")
?.replace(/Envoyé :.*$/s, "")
?.replace(/Le lun.*$/s, "")
?.replace(/Le mar.*$/s, "")
?.replace(/Le mer.*$/s, "")
?.replace(/Le jeu.*$/s, "")
?.replace(/Le ven.*$/s, "")
?.replace(/Le sam.*$/s, "")
?.replace(/Le dim.*$/s, "")
?.trim();
};

return (
Expand Down Expand Up @@ -160,21 +160,22 @@ const StaffActions = ({
const className = isStaffResponse ? "staffSide" : "user-side";

return (
<div key={`${threadIndex}-${index}`} className={className}>
<Text size="sm">
{cleanResponseMessage(response.responseMessage).replaceAll(
"<br/>",
"\n"
)}
<br />
<small>
Répondu le {responseDate} à {responseTime} par{" "}
{response.team.includes("user")
? data.name || response.team
: response.team}
</small>
</Text>
</div>
response.responseMessage && (
<div key={`${threadIndex}-${index}`} className={className}>
<Text size="sm">
{cleanResponseMessage(
response.responseMessage
)?.replaceAll("<br/>", "\n")}
<br />
<small>
Répondu le {responseDate} à {responseTime} par{" "}
{response.team.includes("user")
? data.name || response.team
: response.team}
</small>
</Text>
</div>
)
);
})
)}
Expand Down
90 changes: 77 additions & 13 deletions client/src/components/mail-form/index.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import { Button, Col, Row, TextArea, ButtonGroup } from "@dataesr/dsfr-plus";
import { useState } from "react";
import TemplateResponseModal from "./template";

function EmailForm({
userResponse,
Expand All @@ -9,24 +8,94 @@ function EmailForm({
sendEmail,
contribution,
}) {
const [isModalOpen, setModalOpen] = useState(false);
const [selectedTemplate, setSelectedTemplate] = useState("");

const openModal = () => setModalOpen(true);
const closeModal = () => setModalOpen(false);
const templates = [
{ label: "Accès API scanR", value: "api" },
{ label: "scanR Ne gère pas cela", value: "desole" },
{ label: "Mauvais interlocuteur", value: "interlocuteur" },
{ label: "Merci !", value: "merci" },
{ label: "Accès thèse", value: "thèse" },
{ label: "Accès documents", value: "documents" },
{ label: "Mise à jour", value: "maj" },
{ label: "Publication liées", value: "publications" },
{ label: "Contenue retiré", value: "suppression" },
];

const handleTemplateChange = (e) => {
const value = e.target.value;
setSelectedTemplate(value);

if (value === "api") {
setUserResponse(`Bonjour,
Nous nous réjouissons que les données de scanR suscitent l'intérêt de l'ISC dont nous suivons les travaux.
L'accès aux API scanR est possible avec le compte [Identifiant] et le mot de passe [Mot de passe].
Les API sont documentées ici https://scanr.enseignementsup-recherche.gouv.fr/docs/overview.
N'hésitez pas à nous solliciter pour des compléments d'informations.
Cordialement,
Département Ingénierie et science des données`);
}
if (value === "desole") {
setUserResponse(
`Bonjour, désolé scanR ne gère pas cela. Cordialement L'équipe scanR`
);
}
if (value === "interlocuteur")
setUserResponse(
`Bonjour, Il faut vous adresser directement au laboratoire de votre choix. Votre message via scanR ne parvient qu'aux gestionnaires de l'application scanR (et pas au laboratoire). Pour joindre les laboratoires, partez plutôt de leur site web propre. Cordialement L'équipe scanR`
);
if (value === "merci")
setUserResponse(
`Bonjour, merci pour ce retour encourageant ! Cordialement L'équipe scanR`
);
if (value === "thèse")
setUserResponse(
`Bonjour, Vous trouverez ici XXXXXXXXXXXXXXXXXXXX les renseignements pour accéder à la thèse Cordialement L'équipe scanR`
);
if (value === "documents")
setUserResponse(
`Bonjour scanR ne dispose pas des documents indexées, mais uniquement des métadonnées les décrivant. Cordialement L'équipe scanR`
);
if (value === "maj")
setUserResponse(
`Bonjour, Merci pour ce signalement. Les modifications seront visibles à la prochaine actualisation du site, d'ici quelques semaines. Cordialement L'équipe scanR`
);
if (value === "publications")
setUserResponse(
`Bonjour, merci pour votre contribution. Les publications seront liées dans les prochains jours. Cordialement L'équipe scanR`
);
if (value === "suppression")
setUserResponse(
`Bonjour, votre thèse et votre profil auteur ont bien été retirés. Cordialement L'équipe scanR`
);
};

return (
<>
{contribution?.email && (
<Row gutters>
<Col offsetMd="2" md="10">
<Button size="sm" variant="secondary" onClick={openModal}>
Utiliser une réponse préparée
</Button>
<label htmlFor="templateSelect">
Choisissez un template de réponse
</label>
<select
id="templateSelect"
value={selectedTemplate}
onChange={handleTemplateChange}
className="fr-select"
>
<option value="">Sélectionnez un template</option>
{templates.map((template) => (
<option key={template.value} value={template.value}>
{template.label}
</option>
))}
</select>
<TextArea
value={userResponse}
onChange={(e) => setUserResponse(e.target.value)}
placeholder="Votre réponse..."
rows={3}
rows={5}
/>
</Col>
<Col offsetMd="10" md="2">
Expand All @@ -49,11 +118,6 @@ function EmailForm({
</Col>
</Row>
)}
<TemplateResponseModal
isOpen={isModalOpen}
onClose={closeModal}
setUserResponse={setUserResponse}
/>
</>
);
}
Expand Down
57 changes: 0 additions & 57 deletions client/src/components/mail-form/template.tsx

This file was deleted.

4 changes: 2 additions & 2 deletions server/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -40,8 +40,8 @@ app
{ name: "Productions", description: "Gestion des productions" },
{ name: "Envoi de mails", description: "Envoi de mails" },
{
name: "Supressions de profil",
description: "Gestion des demandes supression de profil",
name: "Suppressions de profil",
description: "Gestion des demandes suppression de profil",
},
{
name: "Mise à jour de données utilisateurs",
Expand Down
3 changes: 2 additions & 1 deletion server/routes/receive-email/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -200,6 +200,7 @@ async function processEmailContent(messageSource: string) {

return cleanedText;
}

export async function fetchEmails() {
const client = new ImapFlow({
host: mailHost!,
Expand Down Expand Up @@ -272,4 +273,4 @@ function determineCollectionName(collectionPrefix: string) {
setInterval(() => {
console.log("Vérification des emails...");
fetchEmails().catch(console.error);
}, 10 * 1000);
}, 60 * 1000);
4 changes: 2 additions & 2 deletions server/routes/remove-user/get/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -76,10 +76,10 @@ getRemoveUserRoutes.get(
},
detail: {
summary:
"Obtenir toutes les contributions via formulaire de supression de donnée",
"Obtenir toutes les contributions via formulaire de suppression de donnée",
description:
"Cette route retourne une liste de toutes les contributions soumises via le formulaire de contact.",
tags: ["Supression de profil"],
tags: ["Suppression de profil"],
},
}
);
Expand Down
4 changes: 2 additions & 2 deletions server/routes/remove-user/get:id/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -29,10 +29,10 @@ getRemoveUserByIdRoutes.get(
},
detail: {
summary:
"Obtenir une contribution via formulaire de supression de profil par ID",
"Obtenir une contribution via formulaire de suppression de profil par ID",
description:
"Cette route retourne les détails d'une contribution spécifique via l'ID fourni.",
tags: ["Supression de profil"],
tags: ["Suppression de profil"],
},
}
);
Expand Down
2 changes: 1 addition & 1 deletion server/routes/remove-user/post/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -108,7 +108,7 @@ postRemoveUserRoutes.post(
summary: "Créer une nouvelle demande de suppression de profil",
description:
"Cette route permet de créer une nouvelle contribution soumise via le formulaire de contact.",
tags: ["Supression de profil"],
tags: ["Suppression de profil"],
},
}
);
Expand Down
Loading

0 comments on commit 537b01c

Please sign in to comment.