Commit d0649a9e2368447e6f3dbbf7d573dceca7c9bc35

Authored by Geoffrey PREUD'HOMME
1 parent d9dcc2ef

Gestion des non étudiants

app/routes/ApiRtes.js
@@ -136,11 +136,9 @@ sessionData = function (session, cb) { @@ -136,11 +136,9 @@ sessionData = function (session, cb) {
136 if (err) { 136 if (err) {
137 cb(err); 137 cb(err);
138 } else { 138 } else {
139 - session.nom = res[0].nom;  
140 - session.section = res[0].section; 139 + for (var attrname in res[0]) { session[attrname] = res[0][attrname]; }
141 session.membre = res[1]; 140 session.membre = res[1];
142 session.bureau = res[2]; 141 session.bureau = res[2];
143 - // TODO session.personnel  
144 cb(null, session); 142 cb(null, session);
145 } 143 }
146 }); 144 });
@@ -258,26 +256,21 @@ api.get('/ninfo', reqAuth, function(req, res) { @@ -258,26 +256,21 @@ api.get('/ninfo', reqAuth, function(req, res) {
258 NinfoServ.list(function (err, participants) { 256 NinfoServ.list(function (err, participants) {
259 async.reduce(NinfoServ.equipes, {}, function(memo, nomEquipe, cb) { 257 async.reduce(NinfoServ.equipes, {}, function(memo, nomEquipe, cb) {
260 async.filter(participants, function concerne(participant, cbf) { 258 async.filter(participants, function concerne(participant, cbf) {
261 - console.log(270);  
262 cbf(participant.equipe == nomEquipe); 259 cbf(participant.equipe == nomEquipe);
263 }, function addInfos(membres) { 260 }, function addInfos(membres) {
264 - console.log(272, membres);  
265 async.map(membres, function (membre, cba) { 261 async.map(membres, function (membre, cba) {
266 - console.log(274, membre);  
267 async.parallel([function(cbp) { 262 async.parallel([function(cbp) {
268 - PolyUserServ.grabInfos(membre.login, cbp); 263 + PolyUserServ.get(membre.login, cbp);
269 }, function(cbp) { 264 }, function(cbp) {
270 NinfoServ.simpleData(membre, cbp); 265 NinfoServ.simpleData(membre, cbp);
271 }], function(err, results) { 266 }], function(err, results) {
272 var membreFinal = results[0]; 267 var membreFinal = results[0];
273 membreFinal.equipe = results[1].equipe; 268 membreFinal.equipe = results[1].equipe;
274 membreFinal.comment = results[1].comment; 269 membreFinal.comment = results[1].comment;
275 - console.log(276, membreFinal);  
276 cba(null, membreFinal); 270 cba(null, membreFinal);
277 }); 271 });
278 }, function (err, membres) { 272 }, function (err, membres) {
279 memo[nomEquipe] = membres; 273 memo[nomEquipe] = membres;
280 - console.log(278, memo);  
281 cb(null, memo); 274 cb(null, memo);
282 }); 275 });
283 }); 276 });
app/services/PolyUserServ.js
@@ -85,9 +85,22 @@ var PolyUserServ = module.exports = { @@ -85,9 +85,22 @@ var PolyUserServ = module.exports = {
85 if (err) { 85 if (err) {
86 cb(err); 86 cb(err);
87 } else { 87 } else {
  88 + var nom = (passwd && passwd.GECOS) ? passwd.GECOS : login.toUpperCase();
  89 + var section = (group && group.name) ? group.name.toUpperCase() : ((passwd && passwd.GID) ? passwd.GID : 'Inconnu');
  90 + var ancien = !!section.match("[0-9]{4}");
  91 + var enseignant = !!section.match("ENS$");
  92 + var personnel = enseignant;
  93 + var etudiant = !personnel;
  94 + var enCours = etudiant && !ancien;
88 cb(null, { 95 cb(null, {
89 - nom: (passwd && passwd.GECOS) ? passwd.GECOS : login.toUpperCase(),  
90 - section: (group && group.name) ? group.name.toUpperCase() : ((passwd && passwd.GID) ? passwd.GID : 'Inconnu') 96 + nom: nom,
  97 + prenom: nom.split(' ')[0],
  98 + section: section,
  99 + ancien: ancien,
  100 + enseignant: enseignant,
  101 + personnel: personnel,
  102 + etudiant: etudiant,
  103 + enCours: enCours
91 }); 104 });
92 } 105 }
93 }); 106 });
public/js/controllers/NinfoCtrl.js
@@ -6,25 +6,31 @@ angular.module('NinfoCtrl', ['SessionsServ', 'ApiServ', 'NotifyServ']) @@ -6,25 +6,31 @@ angular.module('NinfoCtrl', ['SessionsServ', 'ApiServ', 'NotifyServ'])
6 $scope.session = SessionServ.cur; 6 $scope.session = SessionServ.cur;
7 SessionServ.onChange(function () { 7 SessionServ.onChange(function () {
8 $scope.session = SessionServ.cur; 8 $scope.session = SessionServ.cur;
  9 + actualiser();
9 }); 10 });
  11 + actualiser();
10 12
11 - if ($scope.session) {  
12 - ApiServ("récupération des préférence Nuit de l'Info", 'get', 'profile/ninfo', null, function (err, ninfo) {  
13 - if (!err)  
14 - $scope.ninfo = ninfo;  
15 - });  
16 - ApiServ("récupération de la liste des participants à Nuit de l'Info", 'get', 'ninfo', null, function (err, equipes) {  
17 - if (!err)  
18 - $scope.equipes = equipes;  
19 - }); 13 + function actualiser() {
  14 + if ($scope.session) {
  15 + ApiServ("récupération des préférence Nuit de l'Info", 'get', 'profile/ninfo', null, function (err, ninfo) {
  16 + if (!err)
  17 + $scope.ninfo = ninfo;
  18 + });
  19 + ApiServ("récupération de la liste des participants à Nuit de l'Info", 'get', 'ninfo', null, function (err, equipes) {
  20 + if (!err)
  21 + $scope.equipes = equipes;
  22 + });
  23 + }
20 } 24 }
21 25
22 $scope.save = function () { 26 $scope.save = function () {
23 var not = NotifyServ.promise("Sauvegarde..."); 27 var not = NotifyServ.promise("Sauvegarde...");
24 $scope.saving = true; 28 $scope.saving = true;
25 ApiServ("sauvegarde des préférences Nuit de l'Info", 'put', 'profile/ninfo', $scope.ninfo, function (err, membre) { 29 ApiServ("sauvegarde des préférences Nuit de l'Info", 'put', 'profile/ninfo', $scope.ninfo, function (err, membre) {
26 - if (!err) 30 + if (!err) {
  31 + actualiser();
27 not.success("Sauvegardé !"); 32 not.success("Sauvegardé !");
  33 + }
28 $scope.saving = false; 34 $scope.saving = false;
29 }); 35 });
30 }; 36 };
public/views/ninfo.html
@@ -31,7 +31,7 @@ @@ -31,7 +31,7 @@
31 31
32 <div ng-show="session"> 32 <div ng-show="session">
33 <h2>Je souhaite participer à la Nuit de l'Info</h2> 33 <h2>Je souhaite participer à la Nuit de l'Info</h2>
34 - <form ng-hide="ninfo.equipe == 'ima5'"> 34 + <form ng-show="session.enCours && ninfo.equipe != 'ima5'">
35 <p>Ça c'est cool ! On a juste deux petites questions à te poser.</p> 35 <p>Ça c'est cool ! On a juste deux petites questions à te poser.</p>
36 <div class="form-group"> 36 <div class="form-group">
37 <label for="equipe">Dans quelle équipe souhaites-tu participer ?</label><br/> 37 <label for="equipe">Dans quelle équipe souhaites-tu participer ?</label><br/>
@@ -47,9 +47,16 @@ @@ -47,9 +47,16 @@
47 </div> 47 </div>
48 <button type="submit" ladda="saving" class="btn btn-primary" ng-click="save()">Enregistrer les préférences</button> 48 <button type="submit" ladda="saving" class="btn btn-primary" ng-click="save()">Enregistrer les préférences</button>
49 </form> 49 </form>
  50 +
50 <p ng-show="ninfo.equipe == 'ima5'"> 51 <p ng-show="ninfo.equipe == 'ima5'">
51 Tu es déjà inscrit dans l'équipe des IMA5 (référent : <a href="mailto:jwasilew@polytech-lille.net">Jean Wasilewski</a>) ! Enjoy ;) 52 Tu es déjà inscrit dans l'équipe des IMA5 (référent : <a href="mailto:jwasilew@polytech-lille.net">Jean Wasilewski</a>) ! Enjoy ;)
52 </p> 53 </p>
  54 +
  55 + <p ng-hide="session.enCours">
  56 + Seuls les étudiants avec une année en cours peuvent participer. Vous ne pouvez donc pas vous inscrire.<br/>
  57 + Si vous pensez que c'est une erreur, merci d'envoyer <a href="mailto:cinforma@polytech-lille.net">un mail au Club Info</a>.
  58 + </p>
  59 +
53 <h2>Participants à la Nuit de l'Info</h2> 60 <h2>Participants à la Nuit de l'Info</h2>
54 <h3>Équipe Informatiquement Vôtre <span class="badge">{{ equipes.ci.length }}</span></h3> 61 <h3>Équipe Informatiquement Vôtre <span class="badge">{{ equipes.ci.length }}</span></h3>
55 <div class="panel panel-default" ng-repeat="membre in equipes.ci"> 62 <div class="panel panel-default" ng-repeat="membre in equipes.ci">