diff --git a/src/components/RegisterForm/index.tsx b/src/components/RegisterForm/index.tsx index d93899f..86e0de4 100644 --- a/src/components/RegisterForm/index.tsx +++ b/src/components/RegisterForm/index.tsx @@ -162,7 +162,12 @@ const RegisterForm = ({ dispatch }: Props): JSX.Element => { if (sending) { setSending(false) } - sendSuccess = Formulaire envoyé ! + sendSuccess = ( + + Formulaire envoyé !
+ Tu as reçu un email de confirmation, peut-être dans tes spams. +
+ ) } else if (postulantError && _.isEmpty(postulant)) { if (sending) { setSending(false) @@ -178,7 +183,7 @@ const RegisterForm = ({ dispatch }: Props): JSX.Element => { Envoi en cours...
- En cas de problème, écrire à contact@parisestludique.fr + En cas de problème, écrire à benevoles@parisestludique.fr
) } @@ -457,6 +462,7 @@ const RegisterForm = ({ dispatch }: Props): JSX.Element => { Ces rencontres ont lieu à 19h dans un bar/resto calme à Châtelet, le{" "} @@ -465,6 +471,7 @@ const RegisterForm = ({ dispatch }: Props): JSX.Element => { , ou à une soirée festive à 2 pas du lieu du festival, aux{" "} diff --git a/src/server/gsheets/miscs.ts b/src/server/gsheets/miscs.ts index 95b89a4..e71c739 100644 --- a/src/server/gsheets/miscs.ts +++ b/src/server/gsheets/miscs.ts @@ -37,6 +37,7 @@ export const miscMeetingDateListGet = expressAccessor.get(async (list) => id: misc.id, meetingId: misc.meetingId, meetingTitle: misc.meetingTitle, + meetingUrl: misc.meetingUrl, } as MiscMeetingDate) ) ) diff --git a/src/server/gsheets/postulants.ts b/src/server/gsheets/postulants.ts index 95e73c7..e7b1322 100644 --- a/src/server/gsheets/postulants.ts +++ b/src/server/gsheets/postulants.ts @@ -1,7 +1,10 @@ import _ from "lodash" +import sgMail from "@sendgrid/mail" import ExpressAccessors from "./expressAccessors" import { Postulant, PostulantWithoutId, translationPostulant } from "../../services/postulants" import { canonicalEmail, canonicalMobile, trim, validMobile } from "../../utils/standardization" +import { getSheet } from "./accessors" +import { Misc, MiscWithoutId, translationMisc } from "../../services/miscs" const expressAccessor = new ExpressAccessors( "Postulants", @@ -36,6 +39,8 @@ export const postulantAdd = expressAccessor.add(async (list, body) => { comment: trim(params.comment), }) + await sendMeetingEmail(newPostulant.email, newPostulant.firstname, newPostulant.firstMeeting) + return { toDatabase: newPostulant, toCaller: {}, @@ -48,3 +53,57 @@ function getByEmail(list: T[], rawEmail: string): T const volunteer = list.find((v) => canonicalEmail(v.email) === email) return volunteer } + +async function sendMeetingEmail( + email: string, + firstname: string, + firstMeeting: string +): Promise { + const miscSheet = await getSheet("Miscs", new Misc(), translationMisc) + const apiKey = process.env.SENDGRID_API_KEY || "" + + if (firstMeeting === "") { + if (__DEV__ || apiKey === "") { + console.error(`Fake sending meeting email to ${email}`) + } else { + sgMail.setApiKey(apiKey) + const msg = { + to: email, + from: "contact@parisestludique.fr", + subject: "Première rencontre Paris est Ludique", + text: `Salut ${firstname},\n\nNous allons te contacter prochainement pour trouver ensemble un moyen de se rencontrer.\n\nÀ bientôt :)\nPierre`, + html: `Salut ${firstname},

Nous allons te contacter prochainement pour trouver ensemble un moyen de se rencontrer.

À bientôt :)
Pierre`, + } + await sgMail.send(msg) + } + return + } + // else + + const miscList = await miscSheet.getList() + if (!miscList) { + throw Error("Unable to load miscList") + } + + const meetingLine = miscList.find((misc) => misc.meetingId === firstMeeting) + if (!meetingLine) { + throw Error(`Unable to find meeting ${firstMeeting}`) + } + const { meetingTitle, meetingUrl } = meetingLine + + if (__DEV__ || apiKey === "") { + console.error( + `Fake sending meeting email to ${email} for ${meetingTitle} and url ${meetingUrl}` + ) + } else { + sgMail.setApiKey(apiKey) + const msg = { + to: email, + from: "contact@parisestludique.fr", + subject: "Première rencontre Paris est Ludique", + text: `Salut ${firstname},\n\nNous t'attendons bien le ${meetingTitle} (${meetingUrl}) avec d'autres nouveaux comme toi et quelques bénévoles expérimentés pour parler du festival, du bénévolat, et surtout faire connaissance !\nSi tu as un empêchement, il nous serait vraiment utile de le savoir pour éviter de faire se déplacer l'un d'eux inutilement. Tu peux nous en prévenir en répondant à cet email.\n\nVivement qu'on se rencontre :)\nÀ bientôt,\nPierre`, + html: `Salut ${firstname},

Nous t'attendons bien le
${meetingTitle} avec d'autres nouveaux comme toi et quelques bénévoles expérimentés pour parler du festival, du bénévolat, et surtout faire connaissance !
Si tu as un empêchement, il nous serait vraiment utile de le savoir pour éviter de faire se déplacer l'un d'eux inutilement. Tu peux nous en prévenir en répondant à cet email.

Vivement qu'on se rencontre :)
À bientôt,
Pierre`, + } + await sgMail.send(msg) + } +} diff --git a/src/services/miscs.ts b/src/services/miscs.ts index d968802..4786b72 100644 --- a/src/services/miscs.ts +++ b/src/services/miscs.ts @@ -6,6 +6,8 @@ export class Misc { meetingTitle = "" + meetingUrl = "" + discordInvitation = "" } @@ -13,6 +15,7 @@ export const translationMisc: { [k in keyof Misc]: string } = { id: "id", meetingId: "rencontreId", meetingTitle: "rencontreTitre", + meetingUrl: "rencontreUrl", discordInvitation: "invitationDiscord", } @@ -24,6 +27,7 @@ export interface MiscMeetingDate { id: Misc["id"] meetingId: Misc["meetingId"] meetingTitle: Misc["meetingTitle"] + meetingUrl: Misc["meetingUrl"] } export interface MiscDiscordInvitation {