Built motion from commit 5e31ea4.|0.0.32
[motion.git] / server / api / mail_message / mail_message.controller.js
1 'use strict';
2
3 var _ = require('lodash');
4 var async = require('async');
5
6 var htmlToText = require('html-to-text');
7 var formidable = require('formidable');
8 var path = require('path');
9
10 var config = require('../../config/environment');
11 var sequelize = require('../../models').sequelize;
12 var MailMessage = require('../../models').MailMessage;
13 var MailAttachment = require('../../models').MailAttachment;
14 var MailRoom = require('../../models').MailRoom;
15 var MailAccount = require('../../models').MailAccount;
16 var Contact = require('../../models').Contact;
17
18 // Get list of mail_messages
19 exports.index = function (req, res, next) {
20   var params = {
21     order: 'createdAt DESC',
22     include: [{
23       all: true,
24       include: [{
25         all: true
26       }]
27     }]
28   };
29
30   switch (req.user.role) {
31   case 'admin':
32     params.where = req.query;
33     break;
34   case 'agent':
35     break;
36   default:
37
38   }
39
40   MailMessage
41     .findAll(params)
42     .then(function (mail_messages) {
43       return res.status(200).send(mail_messages);
44     })
45     .catch(function (err) {
46       return handleError(res, err, next);
47     });
48 };
49
50 // Get a single mailMessage
51 exports.show = function (req, res, next) {
52   MailMessage
53     .findById(req.params.id, {
54       include: [{
55         all: true,
56         include: [{
57           all: true
58         }]
59       }]
60     })
61     .then(function (mailMessage) {
62       if (!mailMessage) {
63         return res.sendStatus(404);
64       }
65       return res.send(mailMessage);
66     })
67     .catch(function (err) {
68       return handleError(res, err, next);
69     });
70 };
71
72 // Creates a new mailMessage in the DB.
73 exports.create = function (req, res, next) {
74   return sequelize.transaction().then(function (t) {
75     return MailMessage
76       .create(req.body, {
77         include: [{
78           model: MailAttachment
79         }],
80         transaction: t
81       }).then(function (mailMessage) {
82         t.commit();
83         return res.status(201).send(mailMessage);
84       }).catch(function (err) {
85         console.error(err);
86         t.rollback();
87         return handleError(res, err);
88       });
89   });
90 };
91
92 // Updates an existing mailMessage in the DB.
93 exports.update = function (req, res, next) {
94
95   MailMessage
96     .findById(req.params.id, {
97       include: [{
98         all: true
99       }]
100     })
101     .then(function (mailMessage) {
102       if (!mailMessage) {
103         return res.sendStatus(404);
104       }
105       var updated = _.merge(mailMessage, req.body);
106       updated.save()
107         .then(function () {
108           return res.status(200).send(updated);
109         })
110         .catch(function (err) {
111           return handleError(res, err, next);
112         });
113     })
114     .catch(function (err) {
115       return handleError(res, err, next);
116     });
117 };
118
119 // Deletes a mailMessage from the DB.
120 exports.destroy = function (req, res, next) {
121   MailMessage
122     .findById(req.params.id)
123     .then(function (mailMessage) {
124       if (!mailMessage) {
125         return res.sendStatus(404);
126       }
127       mailMessage.destroy()
128         .then(function () {
129           return res.sendStatus(204);
130         })
131         .catch(function (err) {
132           return handleError(res, err, next);
133         });
134     })
135     .catch(function (err) {
136       return handleError(res, err, next);
137     });
138 };
139
140 // Deletes a mailMessage from the DB.
141 exports.bulkDelete = function (req, res, next) {
142   MailMessage
143     .bulkUpdate({
144       where: {
145         id: {
146           $in: req.body.id
147         }
148       },
149       attributes: {
150         directory: 'TRASH'
151       }
152     })
153     .then(function (mailMessage) {
154       if (!mailMessage) {
155         return res.sendStatus(404);
156       }
157       mailMessage.destroy()
158         .then(function () {
159           return res.sendStatus(204);
160         })
161         .catch(function (err) {
162           return handleError(res, err, next);
163         });
164     })
165     .catch(function (err) {
166       return handleError(res, err, next);
167     });
168 };
169
170 function handleError(res, err, next) {
171   return res.status(500).send(err);
172 }