211 lines
8.5 KiB
JavaScript
211 lines
8.5 KiB
JavaScript
/////////////////////////////////////////////////
|
|
// 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; |