Blame view

app/services/DosssServ.js 2.54 KB
61d4f326   Geoffrey PREUD'HOMME   Gestion des dossiers
1
2
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
  var DossModl = require('../models/DossModl');
  // var PolyUserServ = require('../services/PolyUserServ');
  var async = require('async');
  
  var DosssServ = {};
  
  (function init() {
      DossModl.find({
          special: 'root'
      }).exec(function (err, data) {
          if (data.length < 1) {
              DossModl.create({
                  special: 'root',
                  titre: 'Racine'
              });
          }
      });
  })();
  
  DosssServ.addData = function (doss, cb) {
      // PolyUserServ.get(Doss.login, function (err, nom) {
      //     if (nom) {
      //         Doss.nom = nom;
      //     } else {
      //         Doss.nom = Doss.login;
      //     }
      //     cb(null, Doss);
      // });
      // TODO Dernier message
      cb(null, doss);
  };
  
  DosssServ.exists = function (id, cb) {
      DossModl.findById(id).exec(function (err, doss) {
          if (err)
              cb(err);
          else
              cb(null, true);
      });
  };
  
  DosssServ.getId = function (special, cb) {
      DossModl.findById(special).exec(function (err, doss) {
          if (!err && doss) {
              cb(doss._id); // Équivalent à cb(special)
          } else {
  
              DossModl.findOne({
                  special: special
              }).exec(function (err2, doss) {
                  if (!err2 && doss) {
                      cb(doss._id);
                  } else {
                      cb(null);
                  }
              });
          }
      });
  };
  
  DosssServ.get = function (special, cb) {
      DosssServ.getId(special, function (id) { // TODO À enlever avec api.get('/dosss/:doss_id')
          DossModl.findById(id).lean().exec(function (err, doss) {
              if (err) {
                  cb(err);
              } else {
                  DosssServ.addData(doss, cb);
              }
          });
      });
  };
  
  DosssServ.list = function (cb) {
      DossModl.find({}).lean().exec(function (err, Dosss) {
          async.mapSeries(Dosss, DosssServ.addData, cb);
      });
  };
  
  DosssServ.children = function (id, cb) {
      DossModl.find({
          parent: id
      }).lean().exec(function (err, Dosss) {
          async.mapSeries(Dosss, DosssServ.addData, cb);
      });
  };
  
  DosssServ.add = function (data, cb) {
      DossModl.create({
          titre: data.titre,
          parent: data.parent
      }, function (err, Doss) {
          if (err) {
              cb(err);
          } else {
              DosssServ.get(Doss._id, cb);
          }
      });
  };
  
  DosssServ.canWriteIn = function (id, login, cb) {
      DosssServ.exists(id, cb);
  };
  
  DosssServ.remove = function (id, cb) {
      // TODO Trash
      DossModl.remove({
          _id: id
      }, cb);
  };
  
  module.exports = DosssServ;