Fonctionnalités : - Configuration par formation (génération auto/manuel, envoi auto/manuel) - Affichage de la liste des apprenants inscrits - Upload de documents PDF par apprenant (mode manuel) - Boutons de prévisualisation et d'envoi manuel - Gestion complète des attestations Corrections : - Ajout des colonnes modeAttestation et modeEnvoi dans la table formations - Ajout des colonnes documentUrl, documentS3Key, uploadedBy, uploadedAt, emailEnvoye, dateEnvoiEmail dans la table attestations - Correction de l'erreur SQL en retirant la colonne urlPdf inexistante de la requête
70 lines
3.4 KiB
JSON
70 lines
3.4 KiB
JSON
{
|
|
"query": "SELECT \n apprenants.id, apprenants.nom, apprenants.prenom, apprenants.email,\n inscriptions.id as inscriptionId, inscriptions.sequenceId,\n sequences.nom as sequenceNom,\n attestations.id as attestationId, attestations.documentUrl, attestations.emailEnvoye\nFROM inscriptions\nINNER JOIN apprenants ON inscriptions.apprenantId = apprenants.id\nINNER JOIN sequences ON inscriptions.sequenceId = sequences.id\nLEFT JOIN attestations ON attestations.inscriptionId = inscriptions.id\nWHERE sequences.formationId = 1 AND inscriptions.statut = 'confirmee'\nLIMIT 5;",
|
|
"command": "mysql --batch --raw --column-names --default-character-set=utf8mb4 --host gateway02.us-east-1.prod.aws.tidbcloud.com --port 4000 --user 4CrrYuB5tme73Qo.root --database 7PAT67UmWoxv8vwp8Bbcv6 --execute SELECT \n apprenants.id, apprenants.nom, apprenants.prenom, apprenants.email,\n inscriptions.id as inscriptionId, inscriptions.sequenceId,\n sequences.nom as sequenceNom,\n attestations.id as attestationId, attestations.documentUrl, attestations.emailEnvoye\nFROM inscriptions\nINNER JOIN apprenants ON inscriptions.apprenantId = apprenants.id\nINNER JOIN sequences ON inscriptions.sequenceId = sequences.id\nLEFT JOIN attestations ON attestations.inscriptionId = inscriptions.id\nWHERE sequences.formationId = 1 AND inscriptions.statut = 'confirmee'\nLIMIT 5;",
|
|
"rows": [
|
|
{
|
|
"id": "1",
|
|
"nom": "JOHANSSON ",
|
|
"prenom": "Scarlett",
|
|
"email": "opareige@gmail.com",
|
|
"inscriptionId": "240001",
|
|
"sequenceId": "60001",
|
|
"sequenceNom": "Groupe C",
|
|
"attestationId": "NULL",
|
|
"documentUrl": "NULL",
|
|
"emailEnvoye": "NULL"
|
|
},
|
|
{
|
|
"id": "1",
|
|
"nom": "JOHANSSON ",
|
|
"prenom": "Scarlett",
|
|
"email": "opareige@gmail.com",
|
|
"inscriptionId": "60001",
|
|
"sequenceId": "30001",
|
|
"sequenceNom": "Groupe A",
|
|
"attestationId": "NULL",
|
|
"documentUrl": "NULL",
|
|
"emailEnvoye": "NULL"
|
|
},
|
|
{
|
|
"id": "60001",
|
|
"nom": "PITT",
|
|
"prenom": "Brad",
|
|
"email": "test2@gmail.com",
|
|
"inscriptionId": "270001",
|
|
"sequenceId": "60001",
|
|
"sequenceNom": "Groupe C",
|
|
"attestationId": "NULL",
|
|
"documentUrl": "NULL",
|
|
"emailEnvoye": "NULL"
|
|
},
|
|
{
|
|
"id": "90001",
|
|
"nom": "TEST",
|
|
"prenom": "Fred",
|
|
"email": "test.alerte@example.com",
|
|
"inscriptionId": "150001",
|
|
"sequenceId": "30001",
|
|
"sequenceNom": "Groupe A",
|
|
"attestationId": "NULL",
|
|
"documentUrl": "NULL",
|
|
"emailEnvoye": "NULL"
|
|
},
|
|
{
|
|
"id": "90002",
|
|
"nom": "AUBOISDORMANT",
|
|
"prenom": "Abel",
|
|
"email": "alerte2.test@example.com",
|
|
"inscriptionId": "150002",
|
|
"sequenceId": "30001",
|
|
"sequenceNom": "Groupe A",
|
|
"attestationId": "NULL",
|
|
"documentUrl": "NULL",
|
|
"emailEnvoye": "NULL"
|
|
}
|
|
],
|
|
"messages": [],
|
|
"stdout": "id\tnom\tprenom\temail\tinscriptionId\tsequenceId\tsequenceNom\tattestationId\tdocumentUrl\temailEnvoye\n1\tJOHANSSON \tScarlett\topareige@gmail.com\t240001\t60001\tGroupe C\tNULL\tNULL\tNULL\n1\tJOHANSSON \tScarlett\topareige@gmail.com\t60001\t30001\tGroupe A\tNULL\tNULL\tNULL\n60001\tPITT\tBrad\ttest2@gmail.com\t270001\t60001\tGroupe C\tNULL\tNULL\tNULL\n90001\tTEST\tFred\ttest.alerte@example.com\t150001\t30001\tGroupe A\tNULL\tNULL\tNULL\n90002\tAUBOISDORMANT\tAbel\talerte2.test@example.com\t150002\t30001\tGroupe A\tNULL\tNULL\tNULL\n",
|
|
"stderr": "",
|
|
"execution_time_ms": 62
|
|
} |