| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
 100
 101
 102
 103
 104
 105
 106
 107
 108
 109
 110
 111
 112
 113
 114
 115
 116
 117
 118
 119
 120
 121
 122
 123
 124
 125
 126
 127
 128
 129
 130
 131
 132
 133
 134
 135
 136
 137
 138
 139
 140
 141
 142
 143
 
 | const path = require('path');
const Config = require(path.join(__dirname, '/../configs/config'));
const Reponse = require(path.join(__dirname, '/../models/reponse'));
const EntreeManager = require(path.join(__dirname, '/../models/entree_manager'));
 
///////////////////////////////////////////////////////  DONE!
 
 
module.exports = {
 
	// Affiche la liste de toutes les entrées.
	list(REST_RESPONSE) {
		return function(req, res, next) { // done
 
			req.reponse = new Reponse();
 
			EntreeManager.select() // Sélectionne les entrées.
			.exec(function (err, entree_list) {
 
				// On veut renvoyer du JSON
				if(REST_RESPONSE) {
					if(!entree_list) {
						req.reponse.notFound = true;
						req.reponse.moreInfos = "Aucune entrée trouvée sur le serveur.";
					} else {
						req.reponse.success = true;
						req.reponse.data = entree_list;
					}
					return res.json(req.reponse);
				}
 
				if (err) { return next(err); }
				// On affiche la réponse.
				res.render('entree_list', { title: 'Entrées | Liste', entree_list: entree_list });
			});
 
		};
	},
 
	// Affiche les détails d'une entrée.
	details(REST_RESPONSE) {
		return function(req, res, next) {
 
			EntreeManager.select(req.params.id, true) // On récupère les détails sur l'entrée.
			.exec(function (err, entree) {
				// On veut renvoyer une réponse JSON
				if(REST_RESPONSE) {
					if(!entree) {
						req.reponse.notFound = true;
						req.reponse.moreInfos = "Entrée introuvable.";
					} else {
						req.reponse.success = true;
						req.reponse.data = entree;
					}
					return res.json(req.reponse);
				}
				// On veut afficher les détails dans la vue
				if (err) { return next(err); }
				res.render('entree_details', { title: 'Entrées | Détails', entree: entree });
			});
 
		};
	},
 
	// Affiche le formulaire de mise à jour d'une entrée.
	update_get(REST_RESPONSE) {
		return function(req, res, next) {
 
			// On récupère les données dont a besoin la page.			
			EntreeManager.select(req.params.id, true)
			.exec(function(err, entree) {
				if(REST_RESPONSE) { // REST
					if(!entree) {
						req.reponse.notFound = true;
						req.reponse.moreInfos = "Données introuvables.";
					} else {
						req.reponse.success = true;
						req.reponse.data = entree;
					}
					return res.json(req.reponse);
				}
				// Vue
				if (err) { return next(err); }
				// On affiche la page.
				res.render('entree_form', { title: 'Entrées | Mise à jour', entree: entree });
			});
 
		};
	},
 
	// Gère la mise à jour des données de l'entrée.
	update(REST_RESPONSE) {
		return function(req, res, next) {
 
			const entree = req.body;
 
			EntreeManager.update(req.params.id, entree) // On essaie de mettre à jour l'entrée.
			.exec(function (err, _entree) {
				if(REST_RESPONSE) { // REST
					if(!_entree) {
						req.reponse.notFound = true;
						req.reponse.moreInfos = "Entrée introuvable.";
					} else {
						req.reponse.success = true;
						req.reponse.data = entree;
					}
					return res.json(req.reponse);
				}
				if (err) { return next(err); }
				// On rédirige vers la page de détails de l'entrée.
				res.redirect(_entree.url);
			});
 
		};
	},
 
	// Gère la validation de l'entrée.
	validate(REST_RESPONSE) {
		return function(req, res, next) {
 
			EntreeManager.update(req.params.id, {
				statut: Config.ENTREE_VALIDEE
			}) // On essaie de mettre à jour l'entrée.
			.exec(function (err, _entree) {
				if(REST_RESPONSE) { // REST
					if(!_entree) {
						req.reponse.notFound = true;
						req.reponse.moreInfos = "Entrée introuvable.";
					} else {
						req.reponse.success = true;
						req.reponse.data = _entree;
					}
					return res.json(req.reponse);
				}
				if (err) { return next(err); }
				// On rédirige vers la page de détails de l'entrée.
				res.redirect(_entree.url);
			});
 
		};
	}
 
}; | 
Partager