Module NestJS qui synchronise les événements Salesforce (objet Campaign) vers la table event_linx, et expose une API pour le front jeune et le back-office.
Flux de synchronisation
- Token OAuth2 :
POST {LINX_BASE_URL}oauth2/token(grant_type=password+client_id,client_secret,username,password—LINX_PASSWORD= mot de passe + jeton de sécurité Salesforce concaténés). - Fetch :
GET {LINX_BASE_URL}data/v61.0/query/?q=<SOQL>avec bearer token. SOQL :Campaignfiltré surRecordTypeId = '012IV000002dcVhYAI', champsId,Name,ThematiqueEVT__c,StartDate,Physique_ou_Digital__c,RecordTypeId,Region_campagne__c,Ville__c,Lien_inscription__c,Publie_calendrier_jeunes__c. - Réconciliation :
- création si nouvel
idLinx - mise à jour de tous les champs mappés si changement
- restore si event soft-deleted réapparu
- soft-delete si absent du fetch (uniquement si fetch réussi et non vide)
- Normalisation région : matching tolérant contre la liste canonique (
Region.js), sinon valeur brute conservée. - Visibilité calendrier (
publie_calendrier_jeunes) : par défaut, seuls les événements publiés (true) sont renvoyés. Les jeunes programmes PP et EL voient aussi les événements non publiés (false/null). - Lien d'inscription (
url/Lien_inscription__c) : seuls les événements avec une URL non vide sont listés côté jeune (GET /event-linx) et back-office (GET /event-linx/admin).
Champs mappés (Campaign → event_linx)
| Salesforce | Colonne BDD |
|---|---|
Id |
id_linx |
Name |
name |
StartDate |
start_date |
Region_campagne__c |
region (normalisée) |
Lien_inscription__c |
url |
ThematiqueEVT__c |
thematique |
Physique_ou_Digital__c |
format (Physique | Digital) |
Ville__c |
ville |
Publie_calendrier_jeunes__c |
publie_calendrier_jeunes |
Endpoints
| Méthode | Route | Auth | Description |
|---|---|---|---|
| GET | /event-linx |
JWT | Liste paginée/filtrée (à venir uniquement) — filtres : region, thematique, format (presentiel → Physique, digital → Digital), name, month |
| GET | /event-linx/regions |
JWT | Régions distinctes en base |
| GET | /event-linx/user?email= |
JWT + admin | Events utilisateur (bruts Salesforce, non stockés) |
| POST | /event-linx/sync |
JWT + admin | Synchro manuelle |