MembresServ.js 1.74 KB
var MembreModl = require('../models/MembreModl');
var PolyUserServ = require('../services/PolyUserServ');
var async = require('async');

var MembresServ = {};

MembresServ.addData = function (membre, cb) {
    PolyUserServ.get(membre.login, function (err, nom) {
        membre.nom = nom.nom;
        membre.section = nom.section;
        MembresServ.estBureau(membre.login, function (bureau) {
            membre.bureau = bureau;
            cb(err, membre);
        });
    });
};

MembresServ.get = function (id, cb) {
    MembreModl.findById(id).lean().exec(function (err, membre) {
        if (err)
            cb(err);
        else
            MembresServ.addData(membre, cb);
    });
};

MembresServ.list = function (cb) {
    MembreModl.find({}).lean().exec(function (err, membres) {
        async.mapSeries(membres, MembresServ.addData, cb);
    });
};

MembresServ.add = function (data, cb) {
    MembreModl.create({
        login: data.login,
        role: data.role,
        section: data.section,
    }, function (err, membre) {
        MembresServ.get(membre._id, cb);
    });
};

MembresServ.remove = function (id, cb) {
    MembreModl.remove({
        _id: id
    }, cb);
};

MembresServ.estMembre = function (login, cb) {
    MembreModl.findOne({
        login: login
    }, function (err, data) {
        if (!err && data) {
            cb(true);
        } else {
            cb(false);
        }
    });
};

MembresServ.estBureau = function (login, cb) {
    MembreModl.findOne({
        login: login
    }, function (err, data) {
        if (!err && data && ['Président', 'Vice-président', 'Trésorier', 'Secrétaire'].indexOf(data.role) > -1) {
            cb(true);
        } else {
            cb(false);
        }
    });
};

module.exports = MembresServ;