3 var _ = require('lodash');
4 var async = require('async');
6 var htmlToText = require('html-to-text');
7 var formidable = require('formidable');
8 var path = require('path');
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;
18 // Get list of mail_messages
19 exports.index = function (req, res, next) {
21 order: 'createdAt DESC',
30 switch (req.user.role) {
32 params.where = req.query;
42 .then(function (mail_messages) {
43 return res.status(200).send(mail_messages);
45 .catch(function (err) {
46 return handleError(res, err, next);
50 // Get a single mailMessage
51 exports.show = function (req, res, next) {
53 .findById(req.params.id, {
61 .then(function (mailMessage) {
63 return res.sendStatus(404);
65 return res.send(mailMessage);
67 .catch(function (err) {
68 return handleError(res, err, next);
72 // Creates a new mailMessage in the DB.
73 exports.create = function (req, res, next) {
74 // 1) Messaggio in uscita
75 var form = new formidable.IncomingForm();
76 form.uploadDir = path.join(config.root, 'server', 'files', 'attachments');
77 form.keepExtensions = true;
78 form.multiples = true;
80 if (_.isEmpty(req.body)) {
82 form.parse(req, function (err, form, wrap) {
84 return res.status(400).send(err);
88 form.MailAttachments = [{
92 contentType: file.type
95 return sequelize.transaction().then(function (t) {
102 }).then(function (mailMessage) {
104 return res.status(201).send(mailMessage);
105 }).catch(function (err) {
107 return handleError(res, err);
113 console.log('NO ATTACHMENT');
114 req.body.status = 'SENDING';
116 return sequelize.transaction().then(function (t) {
120 }).then(function (mailMessage) {
122 return res.status(201).send(mailMessage);
123 }).catch(function (err) {
125 return handleError(res, err);
131 // Updates an existing mailMessage in the DB.
132 exports.update = function (req, res, next) {
135 .findById(req.params.id, {
140 .then(function (mailMessage) {
142 return res.sendStatus(404);
144 var updated = _.merge(mailMessage, req.body);
147 return res.status(200).send(updated);
149 .catch(function (err) {
150 return handleError(res, err, next);
153 .catch(function (err) {
154 return handleError(res, err, next);
158 // Deletes a mailMessage from the DB.
159 exports.destroy = function (req, res, next) {
161 .findById(req.params.id)
162 .then(function (mailMessage) {
164 return res.sendStatus(404);
166 mailMessage.destroy()
168 return res.sendStatus(204);
170 .catch(function (err) {
171 return handleError(res, err, next);
174 .catch(function (err) {
175 return handleError(res, err, next);
179 // Deletes a mailMessage from the DB.
180 exports.bulkDelete = function (req, res, next) {
192 .then(function (mailMessage) {
194 return res.sendStatus(404);
196 mailMessage.destroy()
198 return res.sendStatus(204);
200 .catch(function (err) {
201 return handleError(res, err, next);
204 .catch(function (err) {
205 return handleError(res, err, next);
209 function handleError(res, err, next) {
210 return res.status(500).send(err);