diff --git a/src/server.js b/src/server.js index 264c4e5..676581c 100644 --- a/src/server.js +++ b/src/server.js @@ -1,6 +1,7 @@ const express = require('express'); const cors = require('cors'); const fetch = require('node-fetch'); +const { v4: uuidv4 } = require('uuid'); const ovh = require('ovh'); const mailchimp = require('@mailchimp/mailchimp_transactional'); const Stripe = require('stripe'); @@ -20,52 +21,99 @@ const corsOptions = { app.use(cors(corsOptions)); app.use(express.json()); +const authTokens = []; + +const ECivility = { + MALE: 'MALE', + FEMALE: 'FEMALE', + OTHERS: 'OTHERS' +}; + +const EOfficeStatus = { + ACTIVATED: 'ACTIVATED', + DESACTIVATED: 'DESACTIVATED' +}; + +const EIdnotRole = { + DIRECTEUR: "Directeur général du CSN", + NOTAIRE_TITULAIRE: "Notaire titulaire", + NOTAIRE_ASSOCIE: "Notaire associé", + NOTAIRE_SALARIE: "Notaire salarié", + COLLABORATEUR: "Collaborateur", + SECRETAIRE_GENERAL: "Secrétaire général", + SUPPLEANT: "Suppléant", + ADMINISTRATEUR: "Administrateur", + RESPONSABLE: "Responsable", + CURATEUR: "Curateur", +} + function getOfficeStatus(statusName) { switch (statusName) { - case 'Pourvu': - return 'ACTIVATED'; - case 'Pourvu mais décédé': - return 'ACTIVATED'; - case 'Sans titulaire': - return 'ACTIVATED'; - case 'Vacance': - return 'ACTIVATED'; - case 'En activité': - return 'ACTIVATED'; + case "Pourvu": + return EOfficeStatus.ACTIVATED; + case "Pourvu mais décédé": + return EOfficeStatus.ACTIVATED; + case "Sans titulaire": + return EOfficeStatus.ACTIVATED; + case "Vacance": + return EOfficeStatus.ACTIVATED; + case "En activité": + return EOfficeStatus.ACTIVATED; default: - return 'DESACTIVATED'; + return EOfficeStatus.DESACTIVATED; + } +} + +function getOfficeRole(roleName) { + switch (roleName) { + case EIdnotRole.NOTAIRE_TITULAIRE: + return { name: 'Notaire' }; + case EIdnotRole.NOTAIRE_ASSOCIE: + return { name: 'Notaire' }; + case EIdnotRole.NOTAIRE_SALARIE: + return { name: 'Notaire' }; + case EIdnotRole.COLLABORATEUR: + return { name: 'Collaborateur' }; + case EIdnotRole.SUPPLEANT: + return { name: 'Collaborateur' }; + case EIdnotRole.ADMINISTRATEUR: + return { name: 'Collaborateur' }; + case EIdnotRole.CURATEUR: + return { name: 'Collaborateur' }; + default: + return null; } } function getRole(roleName) { switch (roleName) { - case 'Notaire titulaire': - return { name: 'admin', label: 'Administrateur' }; - case 'Notaire associé': - return { name: 'admin', label: 'Administrateur' }; - case 'Notaire salarié': - return { name: 'notary', label: 'Notaire' }; - case 'Collaborateur': - return { name: 'notary', label: 'Notaire' }; - case 'Suppléant': - return { name: 'notary', label: 'Notaire' }; - case 'Administrateur': - return { name: 'admin', label: 'Administrateur' }; - case 'Curateur': - return { name: 'notary', label: 'Notaire' }; + case EIdnotRole.NOTAIRE_TITULAIRE: + return { name: 'admin' }; + case EIdnotRole.NOTAIRE_ASSOCIE: + return { name: 'admin' }; + case EIdnotRole.NOTAIRE_SALARIE: + return { name: 'notary' }; + case EIdnotRole.COLLABORATEUR: + return { name: 'notary' }; + case EIdnotRole.SUPPLEANT: + return { name: 'notary' }; + case EIdnotRole.ADMINISTRATEUR: + return { name: 'admin' }; + case EIdnotRole.CURATEUR: + return { name: 'notary' }; default: - return { name: 'default', label: 'Défaut' }; + return { name: 'default' }; } } function getCivility(civility) { switch (civility) { case 'Monsieur': - return 'MALE'; + return ECivility.MALE; case 'Madame': - return 'FEMALE'; + return ECivility.FEMALE; default: - return 'OTHERS'; + return ECivility.OTHERS; } } @@ -139,7 +187,7 @@ app.post('/api/v1/idnot/user/:code', async (req, res) => { return null; } - const idnotUser = { + const idNotUser = { idNot: payload.sub, office: { idNot: payload.entity_idn, @@ -161,15 +209,19 @@ app.post('/api/v1/idnot/user/:code', async (req, res) => { phone_number: userData.numeroTelephone, cell_phone_number: userData.numeroMobile ?? userData.numeroTelephone, civility: getCivility(userData.personne.civilite) - } + }, + office_role: getOfficeRole(userData.typeLien.name) }; - if (!idnotUser.contact.email) { - console.error("User pro email empty"); + if (!idNotUser.contact.email) { + console.error('User pro email empty'); return null; } - res.json(idnotUser); + const authToken = uuidv4(); + authTokens.push({ idNot: idNotUser.idNot, authToken }); + + res.json({ idNotUser, authToken }); } catch (error) { res.status(500).json({ error: 'Internal Server Error', @@ -215,7 +267,7 @@ class SmsService { message: message, receivers: [phoneNumber], senderForResponse: false, - sender: "not.IT Fact", + sender: 'not.IT Fact', noStopClause: true }, (error, result) => { if (error) {