total_1ère

This commit is contained in:
2026-07-20 16:33:04 +02:00
parent dd49ba357b
commit d49cf88d99
275 changed files with 63607 additions and 5599 deletions

211
routes/ventevideoRouter.js Normal file
View File

@@ -0,0 +1,211 @@
/////////////////////////////////////////////////
// ADHÉSION
// [DOMAIN]/inscription
/////////////////////////////////////////////////
/////////////////////////////////////////////////
// LOGGING
/////////////////////////////////////////////////
const logger = require("../public/js/app/logger_lienventetemp");
/////////////////////////////////////////////////
// APPELS DES MODULES
/////////////////////////////////////////////////
const express = require('express');
const router = express.Router();
// CALCUL DE DATE
const moment = require('moment');
moment.locale('fr');
let now = moment().format("YYYY-MM-DD HH:mm:ss");
/////////////////////////////////////////////////
// APPELS DES FONCTIONS
/////////////////////////////////////////////////
const {
generate_link,
download_file
} = require("../controllers/vente_video/generate_linkController");
const {
post_req_stripe,
ventevideo_accompte_reussi,
ventevideo_accompte_annule
} = require("../controllers/vente_video/vente_videoController");
/////////////////////////////////////////////////
// ROUTES
/////////////////////////////////////////////////
/////////////////////////////////////////////////
// VIDÉO UNESCO
/////////////////////////////////////////////////
// ECRAN 1 : ACCUEIL DE LA VENTE DE LA VIDEO
router.get('/videos', function(req, res) {
logger.info("on est dans la page web /videos (ventevideoRouter.js)", { numsession: req.session.id });
// AFFICHER LES VARIABLES CONTENANT LES ERREURS
if (req.session.affiche_err_1) {
res.locals.affiche_err_1 = req.session.affiche_err_1;
// on supprime le contenu après affichage
req.session.affiche_err_1 = undefined;
}
res.render('ventevideo/page_templates/ventelien_boutonacheter');
});
// ECRAN 2 : PAIEMENT AVEC STRIPE
router.post('/videos', post_req_stripe);
// ECRAN 3 - RETOUR STRIPE
router.get('/videos/paiement_reussi', ventevideo_accompte_reussi);
router.get('/videos/paiement_annule', ventevideo_accompte_annule);
/////////////////////////////////////////////////
// Générer le lien temporaire
/////////////////////////////////////////////////
// ROUTE DE TEST
router.get('/unesco/lien', async function(req, res) {
logger.info("on est dans la route vente video lien (ventevideoRouter.js)", { numsession: req.session.id });
try {
// APPEL DU CONTROLLER QUI GÉNÉRE LE LIEN
const result = await generate_link(req, res);
logger.info("on est dans la route vente video lien try", { numsession: req.session.id });
logger.info("result : " + result, { numsession: req.session.id });
// envoie de la réponse HTTP "200 : ok" avec les données
res.status(200).json({
success: true,
message: "Génération du lien réussi",
data: result
});
} catch (error) {
logger.info("on est dans la route vente video lien catch", { numsession: req.session.id });
// envoie de la réponse HTTP "500 : erreur server" avec les données
res.status(500).json({
success: false,
message: "Génération du lien échec"
});
}
});
// ROUTE POUR LA BOUTIQUE VIDEOS
router.get('/videos/whstripe', async function(req, res) {
logger.info("on est dans la route vente video lien (ventevideoRouter.js)", { numsession: req.session.id });
try {
// APPEL DU CONTROLLER QUI GÉNÉRE LE LIEN
const result = await generate_link(req, res);
logger.info("on est dans la route vente video lien try", { numsession: req.session.id });
logger.info("result : " + result, { numsession: req.session.id });
// envoie de la réponse HTTP "200 : ok" avec les données
res.status(200).json({
success: true,
message: "Génération du lien réussi",
data: result
});
} catch (error) {
logger.info("on est dans la route vente video lien catch", { numsession: req.session.id });
// envoie de la réponse HTTP "500 : erreur server" avec les données
res.status(500).json({
success: false,
message: "Génération du lien échec"
});
}
});
/////////////////////////////////////////////////
// Endpoint pour télécharger le fichier depuis le lien généré
/////////////////////////////////////////////////
// Route pour afficher le template avant téléchargement
router.get('/unesco/download/:id', async function(req, res) {
logger.info("on est dans la route vente video download affichage du lien (ventevideoRouter.js)", { numsession: req.session.id });
logger.info("lien de téléchargement appelé : " + req.originalUrl, { numsession: req.session.id });
try {
// APPEL DU CONTROLLER QUI contrôle le lien et récupère le chemin du fichier
const result = await download_file(req, res);
logger.info("on est dans la route vente video download try", { numsession: req.session.id });
logger.info("result : " + result, { numsession: req.session.id });
// Vérification du résultat avant d'afficher la page
if (result === "Lien expiré") {
return res.status(403).render('ventevideo/page_templates/ventelien_telechargement_encours', {
message: "Le lien de téléchargement a expiré.",
downloadUrl: ``,
message_color: "rouge"
});
} else if (result === "Lien non trouvé") {
return res.status(404).render('ventevideo/page_templates/ventelien_telechargement_encours', {
message: "Le lien de téléchargement est introuvable.",
downloadUrl: ``,
message_color: "rouge"
});
} else {
// Rendu du template avec script pour télécharger automatiquement
return res.render('ventevideo/page_templates/ventelien_telechargement_encours', {
message: "Cliquez sur ce lien pour démarrer le téléchargement du film : ",
downloadUrl: `/boutique/unesco/download_file/${req.params.id}`, // URL pour le téléchargement
message_color: ""
});
}
} catch (error) {
logger.error("Erreur dans la route de téléchargement", { error, numsession: req.session.id });
return res.status(500).render('ventevideo/page_templates/ventelien_telechargement_encours', {
message: "Une erreur est survenue pendant le téléchargement.",
downloadUrl: ``,
message_color: "rouge"
});
}
});
router.get('/unesco/download_file/:id', async function(req, res) {
logger.info("on est dans la route vente video download (ventevideoRouter.js)", { numsession: req.session.id });
logger.info("lien de téléchargement appelé : " + req.originalUrl, { numsession: req.session.id });
logger.info("req.session.originPath = " + req.session.originPath, { numsession: req.session.id });
logger.info("lien de téléchargement appelé : " + req.originalUrl, { numsession: req.session.id });
const expiresAtDate = new Date(req.session.expiresAt);
try {
console.log("expiresAtDate.getTime() = ", expiresAtDate.getTime());
if (Date.now() < expiresAtDate.getTime()) {
return res.download(req.session.originPath, (err) => {
if (err) {
logger.error("Erreur de téléchargement / Fichier non trouvé.", { error: err });
return res.status(404).render('ventevideo/page_templates/ventelien_telechargement_encours', {
message: "Fichier non trouvé.",
downloadUrl: ``,
message_color: "rouge"
});
}
});
} else {
logger.error("Lien expiré");
return res.status(404).render('ventevideo/page_templates/ventelien_telechargement_encours', {
message: "Lien expiré.",
downloadUrl: ``,
message_color: "rouge"
});
}
} catch (error) {
logger.error("Erreur lors de la tentative de téléchargement", { error });
return res.status(500).render('ventevideo/page_templates/ventelien_telechargement_encours', {
message: "Téléchargement en échec.",
downloadUrl: ``,
message_color: "rouge"
});
}
});
/////////////////////////////////////////////////
// EXPORT DE MODULE POUR QU'IL SOIT LU DANS LES AUTRES FICHIERS JS
/////////////////////////////////////////////////
module.exports = router;