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 MailAccount = require('../../models').MailAccount;
14 var MailAttachment = require('../../models').MailAttachment;
15 var MailRoom = require('../../models').MailRoom;
16 var MailAccount = require('../../models').MailAccount;
17 var Contact = require('../../models').Contact;
19 var smtp = require('../../config/smtp')();
21 // Get list of mail_messages
22 exports.index = function(req, res, next) {
25 switch (req.user.role) {
29 order: 'createdAt DESC',
54 order: 'createdAt DESC',
69 .then(function(mail_messages) {
70 return res.status(200).send(mail_messages);
72 .catch(function(err) {
73 return handleError(res, err, next);
77 // Get a single mail_message
78 exports.show = function(req, res, next) {
80 .findById(req.params.id, {
97 .then(function(mail_message) {
99 return res.sendStatus(404);
101 return res.send(mail_message);
103 .catch(function(err) {
104 return handleError(res, err, next);
108 // Creates a new mail_message in the DB.
109 exports.create = function(req, res, next) {
110 console.log(req.body);
111 // 1) Messaggio in uscita
112 var form = new formidable.IncomingForm();
113 form.uploadDir = path.join(config.root, 'server', 'files', 'attachments');
114 form.keepExtensions = true;
115 form.multiples = true;
117 if (_.isEmpty(req.body)) {
119 form.parse(req, function(err, form, wrap) {
124 var file = wrap.file;
130 function(wcallback) {
131 return MailAttachment
136 contentType: file.type
140 .then(function(mailAttachment) {
141 wcallback(null, mailAttachment);
143 .catch(function(err) {
147 function(mailAttachment, wcallback) {
148 smtp.send(form, mailAttachment, t, function(err, res) {
152 ], function(err, mailMessage) {
156 return res.status(404).send(err);
158 console.log(mailMessage);
160 return res.status(201).send(mailMessage);
171 function(wcallback) {
172 smtp.send(req.body, null, t, function(err, res) {
176 ], function(err, mailMessage) {
178 console.log('err', err);
180 return res.status(404).send(err);
182 console.log('commmit', mailMessage);
184 return res.status(201).send(mailMessage);
191 // Updates an existing mail_message in the DB.
192 exports.update = function(req, res, next) {
195 .findById(req.params.id, {
200 .then(function(mail_message) {
202 return res.sendStatus(404);
204 var updated = _.merge(mail_message, req.body);
207 return res.status(200).send(updated);
209 .catch(function(err) {
210 return handleError(res, err, next);
213 .catch(function(err) {
214 return handleError(res, err, next);
218 // Deletes a mail_message from the DB.
219 exports.destroy = function(req, res, next) {
221 .findById(req.params.id)
222 .then(function(mail_message) {
224 return res.sendStatus(404);
226 mail_message.destroy()
228 return res.sendStatus(204);
230 .catch(function(err) {
231 return handleError(res, err, next);
234 .catch(function(err) {
235 return handleError(res, err, next);
239 // Deletes a mail_message from the DB.
240 exports.bulkDelete = function(req, res, next) {
252 .then(function(mail_message) {
254 return res.sendStatus(404);
256 mail_message.destroy()
258 return res.sendStatus(204);
260 .catch(function(err) {
261 return handleError(res, err, next);
264 .catch(function(err) {
265 return handleError(res, err, next);
269 function handleError(res, err, next) {