Blame view

app/services/DosssServ.js 3.55 KB
61d4f326   Geoffrey PREUD'HOMME   Gestion des dossiers
1
  var DossModl = require('../models/DossModl');
61d4f326   Geoffrey PREUD'HOMME   Gestion des dossiers
2
3
  var async = require('async');
  
61d4f326   Geoffrey PREUD'HOMME   Gestion des dossiers
4
5
6
7
8
9
10
11
12
13
14
  (function init() {
      DossModl.find({
          special: 'root'
      }).exec(function (err, data) {
          if (data.length < 1) {
              DossModl.create({
                  special: 'root',
                  titre: 'Racine'
              });
          }
      });
278868c0   Geoffrey PREUD'HOMME   Refactorisation d...
15
16
17
18
19
20
21
22
23
24
      DossModl.find({
          special: 'trash'
      }).exec(function (err, data) {
          if (data.length < 1) {
              DossModl.create({
                  special: 'trash',
                  titre: 'Corbeille'
              });
          }
      });
61d4f326   Geoffrey PREUD'HOMME   Gestion des dossiers
25
26
  })();
  
63f92223   Geoffrey PREUD'HOMME   Fixé création de ...
27
  var DosssServ = module.exports = {
61d4f326   Geoffrey PREUD'HOMME   Gestion des dossiers
28
  
63f92223   Geoffrey PREUD'HOMME   Fixé création de ...
29
      simple: ['_id', 'titre', 'parent', 'special', 'hidden'],
278868c0   Geoffrey PREUD'HOMME   Refactorisation d...
30
  
63f92223   Geoffrey PREUD'HOMME   Fixé création de ...
31
32
33
34
      simpleData: function (dossD, cb) {
          var doss = {};
          for (var prop of DosssServ.simple) {
              doss[prop] = dossD[prop];
278868c0   Geoffrey PREUD'HOMME   Refactorisation d...
35
          }
63f92223   Geoffrey PREUD'HOMME   Fixé création de ...
36
37
38
39
          // TODO Dernier message
          cb(null, doss);
      },
  
61d4f326   Geoffrey PREUD'HOMME   Gestion des dossiers
40
  
63f92223   Geoffrey PREUD'HOMME   Fixé création de ...
41
42
43
44
45
46
      detailedData: function (dossD, cb) {
          async.parallel([
              function (cba) {
                  var doss = {};
                  for (var prop of DosssServ.simple) {
                      doss[prop] = dossD[prop];
61d4f326   Geoffrey PREUD'HOMME   Gestion des dossiers
47
                  }
63f92223   Geoffrey PREUD'HOMME   Fixé création de ...
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
                  cba(null, doss);
              },
              function (cba) {
                  DosssServ.children(dossD._id, function (err, children) {
                      if (err) {
                          cba(err);
                      } else {
                          async.map(children, DosssServ.simpleData, cba);
                      }
                  });
              },
              function (cba) {
                  ConvsServ = require('../services/ConvsServ');
                  ConvsServ.children(dossD._id, function (err, children) {
                      if (err) {
                          cba(err);
                      } else {
                          async.map(children, ConvsServ.simpleData, cba);
                      }
                  });
              }
          ], function (err, res) {
              if (err) {
                  cb(err);
              } else {
                  doss = res[0];
                  doss.dosss = res[1];
                  doss.convs = res[2];
                  cb(null, doss);
              }
          });
      },
61d4f326   Geoffrey PREUD'HOMME   Gestion des dossiers
80
  
63f92223   Geoffrey PREUD'HOMME   Fixé création de ...
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
      get: function (special, cb) {
          DossModl.findById(special).exec(function (err, doss) {
              if (!err && doss) {
                  cb(null, doss);
              } else {
                  DossModl.findOne({
                      special: special
                  }).exec(function (err2, doss) {
                      if (err2) {
                          cb(err);
                      } else {
                          cb(null, doss ? doss : null);
                      }
                  });
              }
          });
      },
278868c0   Geoffrey PREUD'HOMME   Refactorisation d...
98
  
63f92223   Geoffrey PREUD'HOMME   Fixé création de ...
99
100
101
102
103
104
105
106
107
108
      children: function (id, cb) {
          DossModl.find({
              parent: id,
              $or: [{
                  hidden: false
              }, {
                  hidden: undefined
              }]
          }, cb);
      },
61d4f326   Geoffrey PREUD'HOMME   Gestion des dossiers
109
  
63f92223   Geoffrey PREUD'HOMME   Fixé création de ...
110
111
112
      assert: function (data, cb) {
          cb(null, data.titre && data.parent);
      },
61d4f326   Geoffrey PREUD'HOMME   Gestion des dossiers
113
  
63f92223   Geoffrey PREUD'HOMME   Fixé création de ...
114
115
116
117
118
119
      add: function (data, cb) {
          DossModl.create({
              titre: data.titre,
              parent: data.parent
          }, cb);
      },
61d4f326   Geoffrey PREUD'HOMME   Gestion des dossiers
120
  
63f92223   Geoffrey PREUD'HOMME   Fixé création de ...
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
      remove: function (id, cb) {
          async.waterfall([function (cba) {
              DosssServ.get(id, cba);
          }, function (doss, cba) {
              cba(doss ? null : 'notfound', doss);
          }, function (doss, cba) {
              DosssServ.get('trash', function (err, trash) {
                  cba(err, doss, trash);
              });
          }, function (doss, trash, cba) {
              doss.parent = trash._id;
              doss.save(cba);
          }], cb);
      }
  };