total_1ère
This commit is contained in:
211
routes/ventevideoRouter.js
Normal file
211
routes/ventevideoRouter.js
Normal 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;
|
||||
Reference in New Issue
Block a user