Built motion from commit a5685af.|0.0.128
[motion.git] / server / api / fax_message / fax_message.controller.js
index e354d5f..78fb34d 100644 (file)
@@ -1,422 +1 @@
-'use strict';
-
-var _ = require('lodash');
-var fs = require('fs');
-var path = require('path');
-var uploadFile = require('upload-file');
-var uuidLib = require('node-uuid');
-var pdf = require('html-pdf');
-var spindrift = require('spindrift');
-var formidable = require('formidable');
-var exec = require('child_process').exec;
-var config = require('../../config/environment');
-
-var FaxMessage = require('../../models').FaxMessage;
-var FaxRoom = require('../../models').FaxRoom;
-var FaxAccount = require('../../models').FaxAccount;
-var Contact = require('../../models').Contact;
-
-// Get list of fax_messages
-exports.index = function(req, res) {
-  FaxMessage
-    .findAll({
-      where: req.query,
-      order: 'createdAt DESC',
-      include: [{
-        model: Contact,
-        as: 'From'
-      }, {
-        model: Contact,
-        as: 'To'
-      }, {
-        model: FaxRoom,
-        include: [{
-          model: FaxAccount
-        }]
-      }]
-    })
-    .then(function(fax_messages) {
-      return res.status(200).send(fax_messages);
-    })
-    .catch(function(err) {
-      return handleError(res, err);
-    });
-};
-
-// Get a single fax_message
-exports.show = function(req, res) {
-  FaxMessage
-    .findOne({
-      where: {
-        id: req.params.id
-      },
-      include: [{
-        model: Contact,
-        as: 'From'
-      }, {
-        model: Contact,
-        as: 'To'
-      }]
-    })
-    .then(function(fax_message) {
-      if (!fax_message) {
-        return res.sendStatus(404);
-      }
-      return res.send(fax_message);
-    })
-    .catch(function(err) {
-      return handleError(res, err);
-    });
-};
-
-// Creates a new fax_message in the DB.
-exports.create = function(req, res, next) {
-  // FaxMessage
-  //   .create(req.body)
-  //   .then(function(fax_message) {
-  //     return res.status(201).send(fax_message);
-  //   })
-  //   .catch(function(err) {
-  //     return handleError(res, err);
-  //   });
-
-  var form = new formidable.IncomingForm();
-  // form.encoding = 'utf-8';
-  form.uploadDir = path.join(config.root, 'server/files/fax/outbound/original');
-  form.keepExtensions = true;
-  form.multiples = false;
-
-  if (req.body.onlyText) {
-    //There is not file, only text
-    // console.log(req.body);
-    if (req.body.html) {
-      //There is the html message -> convert
-      var uuid = uuidLib.v4()
-      var dest = path.join(config.root, 'server/files/fax/outbound/original', uuid + '.pdf');
-      pdf.create(req.body.html, {
-        "timeout": 30000
-      }).toFile(dest, function(err, result) {
-        console.log('Fax: HTML Converted');
-        convertPdfAndSendFax(req, res, uuid, req.body);
-      });
-    }
-  } else {
-    form.parse(req, function(err, fields, files) {
-      if (err) {
-        return handleError(res, err);
-      }
-
-      if (fields.html) {
-        //There is HTML with PDF
-        var uuid = uuidLib.v4();
-        var dest = path.join(config.root, 'server/files/fax/outbound/original', uuid + '.pdf');
-        pdf.create(fields.html, {
-          "timeout": 30000
-        }).toFile(dest, function(err, result) {
-          console.log('Fax: HTML Converted');
-          var pdfHTML = spindrift(result.filename);
-          var pdfUploaded = spindrift(files.file.path);
-          var uuid = uuidLib.v4();
-          spindrift.join(pdfHTML, pdfUploaded).pdfStream().pipe(fs.createWriteStream(path.join(config.root, 'server/files/fax/outbound/original', uuid + '.pdf')));
-          console.log('Fax: HTML joined with PDF uploaded');
-          convertPdfAndSendFax(req, res, uuid, fields);
-        });
-      } else {
-        //There is only PDF
-        var uuid = uuidLib.v4();
-        var dest = path.join(config.root, 'server/files/fax/outbound/original', uuid + '.pdf');
-        fs.rename(files.file.path, dest, function(err) {
-          if (err) {
-            console.error(err);
-            return handleError(res, req);
-            // return next(err);
-          }
-          console.log('Fax: PDF Rename');
-          convertPdfAndSendFax(req, res, uuid, fields);
-        });
-      }
-
-    });
-  }
-};
-
-function convertPdfAndSendFax(req, res, filenameInput, fields) {
-  var inputPath = path.join(config.root, 'server', 'files', 'fax', 'outbound', 'original', filenameInput + '.pdf');
-  var resultPath = path.join(config.root, 'server', 'files', 'fax', 'outbound', 'converted', filenameInput + '.tif');
-  var command = 'gs' + ' -q -dNOPAUSE -dBATCH -sDEVICE=tiffg4 ' + '-sPAPERSIZE=letter -sOutputFile=' + resultPath + ' ' + inputPath;
-  // console.log(inputPath, resultPath, command);
-
-  var uuidFax = uuidLib.v4();
-  FaxAccount
-    .findById(fields.accountId)
-    .then(function(faxAccount) {
-      // console.log('FaxAccount', faxAccount);
-
-      if (faxAccount) {
-        var faxBody = {
-          technology: 'SIP',
-          to: fields.toNum,
-          from: faxAccount.phone,
-          fax_file: resultPath,
-          fax_header: faxAccount.faxheader,
-          fax_localid: faxAccount.localid,
-          maxrate: faxAccount.maxrate,
-          minrate: faxAccount.minrate,
-          ecm: faxAccount.ecm,
-          uuid: uuidFax,
-          trunk: {
-            id: faxAccount.TrunkId
-          }
-        };
-
-        fs.exists(inputPath, function(exists) {
-          if (!exists) {
-            // console.log('File not exist');
-            handleError(res, new Error('File not exists'));
-          } else {
-            exec(command, function(err) {
-              if (err) {
-                console.error(err);
-                handleError(res, err);
-              } else {
-                console.log('Fax: PDF converted to TIFF');
-                fs.chmod(resultPath, 511, function(err) {
-                  if (fields.roomId) {
-                    // Room already exists -> create new message and associate
-                    FaxRoom
-                      .findOrCreate({
-                        where: {
-                          id: fields.roomId
-                        },
-                        defaults: {}
-                      })
-                      .spread(function(faxRoom, created) {
-                        // TODO Verify if we have to manage also the created
-                        FaxMessage
-                          .create({
-                            status: 'NOT SENT',
-                            read: true,
-                            filenamePDF: filenameInput + '.pdf',
-                            filename: filenameInput + '.tif',
-                            body: JSON.stringify(faxBody),
-                            uuid: uuidFax,
-                            FaxRoomId: faxRoom.id
-                          })
-                          .then(function(faxMessage) {
-                            // Fax message created, now association
-                            Contact
-                              .findOrCreate({
-                                where: {
-                                  phone: faxBody.from
-                                },
-                                defaults: {
-                                  phone: faxBody.from,
-                                  fullname: faxBody.from
-                                }
-                              })
-                              .spread(function(contact, created) {
-                                // console.log('Set relationship with from', created);
-                                faxMessage.setFrom(contact);
-                              });
-
-                            Contact
-                              .findOrCreate({
-                                where: {
-                                  phone: faxBody.to
-                                },
-                                defaults: {
-                                  phone: faxBody.to,
-                                  fullname: faxBody.to
-                                }
-                              })
-                              .spread(function(contact, created) {
-                                // console.log('Set relationship with to', created);
-                                faxMessage.setTo(contact);
-                              });
-
-                            return res.status(200).send(faxMessage);
-                          })
-                          .catch(function(err) {
-                            handleError(res, err);
-                            // console.error(err);
-                            // next(err);
-                          });
-                      });
-                  } else {
-                    // Room not exists -> create room, message and associate
-                    FaxRoom
-                      .create({
-                        status: 'OPEN',
-                        from: fields.toNum,
-                        FaxAccountId: fields.accountId,
-                        UserId: fields.userId
-                      })
-                      .then(function(faxRoom) {
-                        // Room created, now message
-                        FaxMessage
-                          .create({
-                            status: 'NOT SENT',
-                            read: true,
-                            filenamePDF: filenameInput + '.pdf',
-                            filename: filenameInput + '.tif',
-                            body: JSON.stringify(faxBody),
-                            uuid: uuidFax,
-                            FaxRoomId: faxRoom.id
-                          })
-                          .then(function(faxMessage) {
-                            // Fax message created, now association
-
-                            Contact
-                              .findOrCreate({
-                                where: {
-                                  phone: faxBody.from
-                                },
-                                defaults: {
-                                  phone: faxBody.from,
-                                  fullname: faxBody.from
-                                }
-                              })
-                              .spread(function(contact, created) {
-                                faxMessage.setFrom(contact);
-                              });
-
-                            Contact
-                              .findOrCreate({
-                                where: {
-                                  phone: faxBody.to
-                                },
-                                defaults: {
-                                  phone: faxBody.to,
-                                  fullname: faxBody.to
-                                }
-                              })
-                              .spread(function(contact, created) {
-                                faxMessage.setTo(contact);
-                              });
-
-                            return res.status(200).send(
-                              faxMessage);
-                          })
-                          .catch(function(err) {
-                            handleError(res, err);
-                          });
-                      })
-                      .catch(function(err) {
-                        handleError(res, err);
-                      });
-                  }
-                });
-              }
-            });
-          }
-        });
-      }
-    });
-}
-
-// Updates an existing fax_message in the DB.
-exports.update = function(req, res) {
-  if (req.body.id) {
-    delete req.body.id;
-  }
-  FaxMessage
-    .findOne({
-      where: {
-        id: req.params.id
-      },
-      include: [{
-        model: Contact,
-        as: 'From'
-      }, {
-        model: Contact,
-        as: 'To'
-      }]
-    })
-    .then(function(fax_message) {
-      if (!fax_message) {
-        return res.sendStatus(404);
-      }
-      var updated = _.merge(fax_message, req.body);
-      updated.save()
-        .then(function() {
-          return res.status(200).send(fax_message);
-        })
-        .catch(function(err) {
-          return handleError(res, err);
-        });
-    })
-    .catch(function(err) {
-      return handleError(res, err);
-    });
-};
-
-// Deletes a fax_message from the DB.
-exports.destroy = function(req, res) {
-  FaxMessage
-    .find({
-      where: {
-        id: req.params.id
-      }
-    })
-    .then(function(fax_message) {
-      if (!fax_message) {
-        return res.sendStatus(404);
-      }
-      fax_message.destroy()
-        .then(function() {
-          return res.sendStatus(204);
-        })
-        .catch(function(err) {
-          return handleError(res, err);
-        });
-    })
-    .catch(function(err) {
-      return handleError(res, err);
-    });
-};
-
-exports.getContentFromMessage = function(req, res) {
-
-  FaxMessage
-    .findById(req.params.id)
-    .then(function(fax_message) {
-
-      // console.log(fax_message);
-
-      if (!fax_message) {
-        return res.sendStatus(404);
-      }
-
-      if (fax_message.filenamePDF) {
-
-        if (fax_message.status === 'RECEIVED') {
-          var pdfPath = path.join(config.root, 'server', 'files', 'fax', 'inbound', fax_message.filenamePDF);
-          fs.exists(pdfPath, function(exists) {
-            if (exists)
-              return res.sendFile(pdfPath);
-            else
-              return res.sendStatus(404);
-          });
-        } else if (fax_message.status === 'NOT SENT' || fax_message.directory ===
-          'SENT' || fax_message.status === 'FAILED') {
-          var pdfPath = path.join(config.root, 'server', 'files', 'fax', 'outbound', 'original', fax_message.filenamePDF);
-          fs.exists(pdfPath, function(exists) {
-            if (exists)
-              return res.sendFile(pdfPath);
-            else
-              return res.sendStatus(404);
-          });
-        }
-      } else {
-        res.sendStatus(404);
-      }
-
-    })
-    .catch(function(err) {
-      return handleError(res, err);
-    });
-};
-
-function handleError(res, err) {
-  return res.status(500).send(err);
-}
+var _0xc2c0=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x66\x73","\x70\x61\x74\x68","\x75\x70\x6C\x6F\x61\x64\x2D\x66\x69\x6C\x65","\x6E\x6F\x64\x65\x2D\x75\x75\x69\x64","\x68\x74\x6D\x6C\x2D\x70\x64\x66","\x66\x6F\x72\x6D\x69\x64\x61\x62\x6C\x65","\x65\x78\x65\x63","\x63\x68\x69\x6C\x64\x5F\x70\x72\x6F\x63\x65\x73\x73","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x65\x6E\x76\x69\x72\x6F\x6E\x6D\x65\x6E\x74","\x46\x61\x78\x4D\x65\x73\x73\x61\x67\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x46\x61\x78\x41\x74\x74\x61\x63\x68\x6D\x65\x6E\x74","\x46\x61\x78\x52\x6F\x6F\x6D","\x46\x61\x78\x41\x63\x63\x6F\x75\x6E\x74","\x55\x73\x65\x72","\x69\x6E\x64\x65\x78","\x63\x72\x65\x61\x74\x65\x64\x41\x74\x20\x44\x45\x53\x43","\x77\x68\x65\x72\x65","\x71\x75\x65\x72\x79","\x61\x64\x6D\x69\x6E","\x61\x67\x65\x6E\x74","\x72\x6F\x6C\x65","\x75\x73\x65\x72","\x63\x61\x74\x63\x68","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x74\x68\x65\x6E","\x66\x69\x6E\x64\x41\x6C\x6C","\x64\x65\x73\x63\x72\x69\x62\x65","\x73\x68\x6F\x77","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x69\x64","\x70\x61\x72\x61\x6D\x73","\x6E\x61\x6D\x65","\x66\x75\x6C\x6C\x6E\x61\x6D\x65","\x65\x6D\x61\x69\x6C","\x66\x69\x6E\x64\x42\x79\x49\x64","\x63\x72\x65\x61\x74\x65","\x55\x73\x65\x72\x49\x64","\x62\x6F\x64\x79","\x74\x65\x78\x74","\x75\x70\x64\x61\x74\x65","\x6D\x65\x72\x67\x65","\x73\x61\x76\x65","\x64\x65\x73\x74\x72\x6F\x79","\x62\x75\x6C\x6B\x44\x65\x6C\x65\x74\x65","\x54\x52\x41\x53\x48","\x62\x75\x6C\x6B\x55\x70\x64\x61\x74\x65"];_0xc2c0[0];var _=require(_0xc2c0[1]);var fs=require(_0xc2c0[2]);var path=require(_0xc2c0[3]);var uploadFile=require(_0xc2c0[4]);var uuidLib=require(_0xc2c0[5]);var pdf=require(_0xc2c0[6]);var formidable=require(_0xc2c0[7]);var exec=require(_0xc2c0[9])[_0xc2c0[8]];var config=require(_0xc2c0[10]);var FaxMessage=require(_0xc2c0[12])[_0xc2c0[11]];var FaxAttachment=require(_0xc2c0[12])[_0xc2c0[13]];var FaxRoom=require(_0xc2c0[12])[_0xc2c0[14]];var FaxAccount=require(_0xc2c0[12])[_0xc2c0[15]];var FaxAttachment=require(_0xc2c0[12])[_0xc2c0[13]];var User=require(_0xc2c0[12])[_0xc2c0[16]];exports[_0xc2c0[17]]= function(_0xc8dfxf,_0xc8dfx10,_0xc8dfx11){var _0xc8dfx12={order:_0xc2c0[18],include:[{all:true,include:[{all:true}]}]};switch(_0xc8dfxf[_0xc2c0[24]][_0xc2c0[23]]){case _0xc2c0[21]:_0xc8dfx12[_0xc2c0[19]]= _0xc8dfxf[_0xc2c0[20]];break;case _0xc2c0[22]:break;default:};return FaxMessage[_0xc2c0[29]](_0xc8dfx12)[_0xc2c0[28]](function(_0xc8dfx14){return _0xc8dfx10[_0xc2c0[27]](200)[_0xc2c0[26]](_0xc8dfx14)})[_0xc2c0[25]](function(_0xc8dfx13){return handleError(_0xc8dfx10,_0xc8dfx13,_0xc8dfx11)})};exports[_0xc2c0[30]]= function(_0xc8dfxf,_0xc8dfx10){return FaxMessage[_0xc2c0[30]]()[_0xc2c0[28]](function(_0xc8dfx15){return _0xc8dfx10[_0xc2c0[27]](200)[_0xc2c0[26]](_0xc8dfx15)})[_0xc2c0[25]](function(_0xc8dfx13){return handleError(_0xc8dfx10,_0xc8dfx13)})};exports[_0xc2c0[31]]= function(_0xc8dfxf,_0xc8dfx10,_0xc8dfx11){return FaxMessage[_0xc2c0[38]](_0xc8dfxf[_0xc2c0[34]][_0xc2c0[33]],{include:[{model:FaxAttachment},{model:User,attributes:[_0xc2c0[33],_0xc2c0[35],_0xc2c0[36],_0xc2c0[37]]}]})[_0xc2c0[28]](function(_0xc8dfx16){if(!_0xc8dfx16){return _0xc8dfx10[_0xc2c0[32]](404)};return _0xc8dfx10[_0xc2c0[26]](_0xc8dfx16)})[_0xc2c0[25]](function(_0xc8dfx13){return handleError(_0xc8dfx10,_0xc8dfx13,_0xc8dfx11)})};exports[_0xc2c0[39]]= function(_0xc8dfxf,_0xc8dfx10,_0xc8dfx11){_0xc8dfxf[_0xc2c0[41]][_0xc2c0[40]]= _0xc8dfxf[_0xc2c0[24]][_0xc2c0[33]];_0xc8dfxf[_0xc2c0[41]][_0xc2c0[42]]= _0xc8dfxf[_0xc2c0[41]][_0xc2c0[42]];return FaxMessage[_0xc2c0[39]](_0xc8dfxf[_0xc2c0[41]],{include:[{model:FaxAttachment}]})[_0xc2c0[28]](function(_0xc8dfx16){return _0xc8dfx10[_0xc2c0[27]](201)[_0xc2c0[26]](_0xc8dfx16)})[_0xc2c0[25]](function(_0xc8dfx13){return handleError(_0xc8dfx10,_0xc8dfx13)})};exports[_0xc2c0[43]]= function(_0xc8dfxf,_0xc8dfx10,_0xc8dfx11){return FaxMessage[_0xc2c0[38]](_0xc8dfxf[_0xc2c0[34]][_0xc2c0[33]],{include:[{all:true}]})[_0xc2c0[28]](function(_0xc8dfx16){if(!_0xc8dfx16){return _0xc8dfx10[_0xc2c0[32]](404)};var _0xc8dfx17=_[_0xc2c0[44]](_0xc8dfx16,_0xc8dfxf[_0xc2c0[41]]);return _0xc8dfx17[_0xc2c0[45]]()})[_0xc2c0[28]](function(_0xc8dfx17){return _0xc8dfx10[_0xc2c0[27]](200)[_0xc2c0[26]](_0xc8dfx17)})[_0xc2c0[25]](function(_0xc8dfx13){return handleError(_0xc8dfx10,_0xc8dfx13,_0xc8dfx11)})};exports[_0xc2c0[46]]= function(_0xc8dfxf,_0xc8dfx10,_0xc8dfx11){return FaxMessage[_0xc2c0[38]](_0xc8dfxf[_0xc2c0[34]][_0xc2c0[33]])[_0xc2c0[28]](function(_0xc8dfx16){if(!_0xc8dfx16){return _0xc8dfx10[_0xc2c0[32]](404)};return _0xc8dfx16[_0xc2c0[46]]()})[_0xc2c0[28]](function(){return _0xc8dfx10[_0xc2c0[32]](204)})[_0xc2c0[25]](function(_0xc8dfx13){return handleError(_0xc8dfx10,_0xc8dfx13,_0xc8dfx11)})};exports[_0xc2c0[47]]= function(_0xc8dfxf,_0xc8dfx10,_0xc8dfx11){return FaxMessage[_0xc2c0[49]]({where:{id:{$in:_0xc8dfxf[_0xc2c0[41]][_0xc2c0[33]]}},attributes:{directory:_0xc2c0[48]}})[_0xc2c0[28]](function(_0xc8dfx16){if(!_0xc8dfx16){return _0xc8dfx10[_0xc2c0[32]](404)};return _0xc8dfx16[_0xc2c0[46]]()})[_0xc2c0[28]](function(){return _0xc8dfx10[_0xc2c0[32]](204)})[_0xc2c0[25]](function(_0xc8dfx13){return handleError(_0xc8dfx10,_0xc8dfx13,_0xc8dfx11)})};function handleError(_0xc8dfx10,_0xc8dfx13,_0xc8dfx11){return _0xc8dfx10[_0xc2c0[27]](500)[_0xc2c0[26]](_0xc8dfx13)}
\ No newline at end of file