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
101 .then(function(mailMessage) {
102 return res.status(201).send(mailMessage);
104 .catch(function(err) {
105 return res.status(400).send(err);
110 console.log('NO ATTACHMENT');
111 req.body.status = 'SENDING';
115 .then(function(mailMessage) {
116 return res.status(201).send(mailMessage);
118 .catch(function(err) {
119 return res.status(400).send(err);
124 // Updates an existing mailMessage in the DB.
125 exports.update = function(req, res, next) {
128 .findById(req.params.id, {
133 .then(function(mailMessage) {
135 return res.sendStatus(404);
137 var updated = _.merge(mailMessage, req.body);
140 return res.status(200).send(updated);
142 .catch(function(err) {
143 return handleError(res, err, next);
146 .catch(function(err) {
147 return handleError(res, err, next);
151 // Deletes a mailMessage from the DB.
152 exports.destroy = function(req, res, next) {
154 .findById(req.params.id)
155 .then(function(mailMessage) {
157 return res.sendStatus(404);
159 mailMessage.destroy()
161 return res.sendStatus(204);
163 .catch(function(err) {
164 return handleError(res, err, next);
167 .catch(function(err) {
168 return handleError(res, err, next);
172 // Deletes a mailMessage from the DB.
173 exports.bulkDelete = function(req, res, next) {
185 .then(function(mailMessage) {
187 return res.sendStatus(404);
189 mailMessage.destroy()
191 return res.sendStatus(204);
193 .catch(function(err) {
194 return handleError(res, err, next);
197 .catch(function(err) {
198 return handleError(res, err, next);
202 function handleError(res, err, next) {