Built motion from commit bab6f49e.|2.6.17
[motion2.git] / server / api / faxInteraction / faxInteraction.controller.js
1 // *************************************************************************
2 // *                                                                       *
3 // * xCALLY Motion -  The Omnichannel Contact Center                       *
4 // * Copyright (c) Xenialab s.r.l. All Rights Reserved                     *
5 // *                                                                       *
6 // *************************************************************************
7 // *                                                                       *
8 // * Email: info@xcally.com                                                *
9 // * Website: https://www.xcally.com                                       *
10 // *                                                                       *
11 // *************************************************************************
12 // *                                                                       *
13 // * The SOFTWARE PRODUCT is protected by copyright laws and international *
14 // * copyright treaties, as well as other intellectual property laws and   *
15 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                         *
16 // *                                                                       *
17 // *************************************************************************
18 var _0xc824=['createWriteStream','err','rimraf','zip-dir','path','lodash','ioredis','../../components/interaction/service','../../config/logger','api','../../config/environment','../../mysqldb','defaults','redis','localhost','socket.io-emitter','./faxInteraction.socket','sendStatus','status','json','offset','limit','undefined','count','Content-Range','update','then','destroy','end','error','stack','name','send','index','map','rawAttributes','fieldName','type','key','getOptions','findAll','fax','query','user','show','params','model','keys','FaxInteraction','attributes','fields','length','include','merge','catch','create','body','find','describe','addMessage','omit','ids','getMessages','findOne','FaxMessage','filters','intersection','hasOwnProperty','nolimit','order','sort','where','pick','filter','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','includeAll','addTags','spread','Tag','color','emit','faxInteractionTags:save','join','root','files','tmp','server','attachments','transcript-%d-%s.zip','push','Attachment','Messages','createdAt','get','mkdirSync','basename','existsSync','createReadStream'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xc824,0x196));var _0x4c82=function(_0x2a12d6,_0x3050ea){_0x2a12d6=_0x2a12d6-0x0;var _0x29e4f6=_0xc824[_0x2a12d6];return _0x29e4f6;};'use strict';var rimraf=require(_0x4c82('0x0'));var zipdir=require(_0x4c82('0x1'));var moment=require('moment');var BPromise=require('bluebird');var util=require('util');var path=require(_0x4c82('0x2'));var fs=require('fs');var _=require(_0x4c82('0x3'));var Redis=require(_0x4c82('0x4'));var interaction=require(_0x4c82('0x5'));var qs=require('../../components/parsers/qs');var logger=require(_0x4c82('0x6'))(_0x4c82('0x7'));var config=require(_0x4c82('0x8'));var db=require(_0x4c82('0x9'))['db'];config['redis']=_[_0x4c82('0xa')](config[_0x4c82('0xb')],{'host':_0x4c82('0xc'),'port':0x18eb});var socket=require(_0x4c82('0xd'))(new Redis(config['redis']));require(_0x4c82('0xe'))['register'](socket);function respondWithStatusCode(_0x3cc0ae,_0x190fa0){_0x190fa0=_0x190fa0||0xcc;return function(_0x1c8878){if(_0x1c8878){return _0x3cc0ae[_0x4c82('0xf')](_0x190fa0);}return _0x3cc0ae[_0x4c82('0x10')](_0x190fa0)['end']();};}function respondWithResult(_0x3307ea,_0x3a554d){_0x3a554d=_0x3a554d||0xc8;return function(_0x5b4300){if(_0x5b4300){return _0x3307ea[_0x4c82('0x10')](_0x3a554d)[_0x4c82('0x11')](_0x5b4300);}};}function respondWithFilteredResult(_0x52763f,_0x148ae1){return function(_0x17cb6f){if(_0x17cb6f){var _0x1e3742=typeof _0x148ae1[_0x4c82('0x12')]==='undefined'&&typeof _0x148ae1[_0x4c82('0x13')]===_0x4c82('0x14');var _0x3e77c7=_0x17cb6f[_0x4c82('0x15')];var _0x2a8d0d=_0x1e3742?0x0:_0x148ae1['offset'];var _0x376691=_0x1e3742?_0x17cb6f[_0x4c82('0x15')]:_0x148ae1[_0x4c82('0x12')]+_0x148ae1[_0x4c82('0x13')];var _0x150f7c;if(_0x376691>=_0x3e77c7){_0x376691=_0x3e77c7;_0x150f7c=0xc8;}else{_0x150f7c=0xce;}_0x52763f[_0x4c82('0x10')](_0x150f7c);return _0x52763f['set'](_0x4c82('0x16'),_0x2a8d0d+'-'+_0x376691+'/'+_0x3e77c7)[_0x4c82('0x11')](_0x17cb6f);}return null;};}function saveUpdates(_0xa6e55c){return function(_0x18d6e4){if(_0x18d6e4){return _0x18d6e4[_0x4c82('0x17')](_0xa6e55c)[_0x4c82('0x18')](function(_0x4aaa6c){return _0x4aaa6c;});}return null;};}function removeEntity(_0x5c1a45){return function(_0x306d97){if(_0x306d97){return _0x306d97[_0x4c82('0x19')]()[_0x4c82('0x18')](function(){_0x5c1a45[_0x4c82('0x10')](0xcc)[_0x4c82('0x1a')]();});}};}function handleEntityNotFound(_0x463ea3){return function(_0x40dcbb){if(!_0x40dcbb){_0x463ea3[_0x4c82('0xf')](0x194);}return _0x40dcbb;};}function handleError(_0x845c6c,_0x3e3cc4){_0x3e3cc4=_0x3e3cc4||0x1f4;return function(_0x7b39a6){logger[_0x4c82('0x1b')](_0x7b39a6[_0x4c82('0x1c')]);if(_0x7b39a6[_0x4c82('0x1d')]){delete _0x7b39a6[_0x4c82('0x1d')];}_0x845c6c[_0x4c82('0x10')](_0x3e3cc4)[_0x4c82('0x1e')](_0x7b39a6);};}exports[_0x4c82('0x1f')]=function(_0x371885,_0x3e523d){var _0x447889={};var _0x4ad326=_[_0x4c82('0x20')](db['FaxInteraction'][_0x4c82('0x21')],function(_0x2afffc){return{'name':_0x2afffc[_0x4c82('0x22')],'type':_0x2afffc[_0x4c82('0x23')][_0x4c82('0x24')]};});_0x447889=qs[_0x4c82('0x25')](_0x4ad326,_0x371885);return interaction[_0x4c82('0x26')](_0x4c82('0x27'),_0x371885[_0x4c82('0x28')],_0x371885[_0x4c82('0x29')],_0x447889,_0x4ad326)[_0x4c82('0x18')](respondWithFilteredResult(_0x3e523d,_0x447889))['catch'](handleError(_0x3e523d,null));};exports[_0x4c82('0x2a')]=function(_0x3a51fb,_0x5be095){var _0x5004e7={'raw':![],'where':{'id':_0x3a51fb[_0x4c82('0x2b')]['id']}},_0x205995={};_0x205995[_0x4c82('0x2c')]=_[_0x4c82('0x2d')](db[_0x4c82('0x2e')][_0x4c82('0x21')]);_0x205995[_0x4c82('0x28')]=_[_0x4c82('0x2d')](_0x3a51fb[_0x4c82('0x28')]);_0x205995['filters']=_['intersection'](_0x205995[_0x4c82('0x2c')],_0x205995[_0x4c82('0x28')]);_0x5004e7[_0x4c82('0x2f')]=_['intersection'](_0x205995[_0x4c82('0x2c')],qs[_0x4c82('0x30')](_0x3a51fb[_0x4c82('0x28')][_0x4c82('0x30')]));_0x5004e7['attributes']=_0x5004e7['attributes'][_0x4c82('0x31')]?_0x5004e7[_0x4c82('0x2f')]:_0x205995['model'];if(_0x3a51fb[_0x4c82('0x28')]['includeAll']){_0x5004e7[_0x4c82('0x32')]=[{'all':!![]}];}_0x5004e7=_[_0x4c82('0x33')]({},_0x5004e7,_0x3a51fb['options']);return db[_0x4c82('0x2e')]['find'](_0x5004e7)['then'](handleEntityNotFound(_0x5be095,null))['then'](respondWithResult(_0x5be095,null))[_0x4c82('0x34')](handleError(_0x5be095,null));};exports[_0x4c82('0x35')]=function(_0x20e9e1,_0x20ae16){return db['FaxInteraction'][_0x4c82('0x35')](_0x20e9e1[_0x4c82('0x36')],{})['then'](respondWithResult(_0x20ae16,0xc9))[_0x4c82('0x34')](handleError(_0x20ae16,null));};exports[_0x4c82('0x17')]=function(_0x27b86a,_0x42c458){if(_0x27b86a[_0x4c82('0x36')]['id']){delete _0x27b86a['body']['id'];}return db[_0x4c82('0x2e')][_0x4c82('0x37')]({'where':{'id':_0x27b86a['params']['id']}})['then'](handleEntityNotFound(_0x42c458,null))[_0x4c82('0x18')](saveUpdates(_0x27b86a[_0x4c82('0x36')],null))['then'](respondWithResult(_0x42c458,null))['catch'](handleError(_0x42c458,null));};exports[_0x4c82('0x19')]=function(_0x5cd56f,_0x4dc3be){return db[_0x4c82('0x2e')]['find']({'where':{'id':_0x5cd56f[_0x4c82('0x2b')]['id']}})[_0x4c82('0x18')](handleEntityNotFound(_0x4dc3be,null))[_0x4c82('0x18')](removeEntity(_0x4dc3be,null))[_0x4c82('0x34')](handleError(_0x4dc3be,null));};exports[_0x4c82('0x38')]=function(_0x4803e5,_0x1f6777){return db[_0x4c82('0x2e')][_0x4c82('0x38')]()[_0x4c82('0x18')](respondWithResult(_0x1f6777,null))[_0x4c82('0x34')](handleError(_0x1f6777,null));};exports[_0x4c82('0x39')]=function(_0x18e774,_0x171fac){return db['FaxMessage'][_0x4c82('0x37')]({'where':{'id':_0x18e774[_0x4c82('0x2b')]['id']}})['then'](handleEntityNotFound(_0x171fac,null))['then'](function(_0x58b1ac){if(_0x58b1ac){return _0x58b1ac[_0x4c82('0x39')](_0x18e774[_0x4c82('0x36')]['ids'],_[_0x4c82('0x3a')](_0x18e774[_0x4c82('0x36')],[_0x4c82('0x3b'),'id'])||{});}})[_0x4c82('0x18')](respondWithResult(_0x171fac,null))['catch'](handleError(_0x171fac,null));};exports[_0x4c82('0x3c')]=function(_0xfa933b,_0x594e8a){var _0x4e7064={'raw':![],'where':{}};var _0x4d8acd={};var _0x23101e={'count':0x0,'rows':[]};return db['FaxInteraction'][_0x4c82('0x3d')]({'where':{'id':_0xfa933b[_0x4c82('0x2b')]['id']}})['then'](handleEntityNotFound(_0x594e8a,null))['then'](function(_0x443f05){if(_0x443f05){_0x4d8acd['model']=_[_0x4c82('0x2d')](db[_0x4c82('0x3e')]['rawAttributes']);_0x4d8acd[_0x4c82('0x28')]=_[_0x4c82('0x2d')](_0xfa933b['query']);_0x4d8acd[_0x4c82('0x3f')]=_[_0x4c82('0x40')](_0x4d8acd[_0x4c82('0x2c')],_0x4d8acd[_0x4c82('0x28')]);_0x4e7064['attributes']=_[_0x4c82('0x40')](_0x4d8acd['model'],qs[_0x4c82('0x30')](_0xfa933b[_0x4c82('0x28')][_0x4c82('0x30')]));_0x4e7064['attributes']=_0x4e7064[_0x4c82('0x2f')][_0x4c82('0x31')]?_0x4e7064[_0x4c82('0x2f')]:_0x4d8acd[_0x4c82('0x2c')];if(!_0xfa933b[_0x4c82('0x28')][_0x4c82('0x41')](_0x4c82('0x42'))){_0x4e7064[_0x4c82('0x13')]=qs[_0x4c82('0x13')](_0xfa933b[_0x4c82('0x28')]['limit']);_0x4e7064[_0x4c82('0x12')]=qs[_0x4c82('0x12')](_0xfa933b['query'][_0x4c82('0x12')]);}_0x4e7064[_0x4c82('0x43')]=qs[_0x4c82('0x44')](_0xfa933b['query']['sort']);_0x4e7064[_0x4c82('0x45')]=qs[_0x4c82('0x3f')](_[_0x4c82('0x46')](_0xfa933b[_0x4c82('0x28')],_0x4d8acd[_0x4c82('0x3f')]));_0x4e7064['where']['FaxInteractionId']=_0x443f05['id'];if(_0xfa933b[_0x4c82('0x28')][_0x4c82('0x47')]){_0x4e7064[_0x4c82('0x45')]=_['merge'](_0x4e7064[_0x4c82('0x45')],{'$or':_[_0x4c82('0x20')](_0x4e7064[_0x4c82('0x2f')],function(_0x3bbf49){var _0x242946={};_0x242946[_0x3bbf49]={'$like':'%'+_0xfa933b[_0x4c82('0x28')][_0x4c82('0x47')]+'%'};return _0x242946;})});}if(_0xfa933b['query'][_0x4c82('0x48')]){var _0x43f5fd=_0xfa933b[_0x4c82('0x28')][_0x4c82('0x48')][_0x4c82('0x49')](',');var _0x38fd2e={};_0x38fd2e[_0x43f5fd[0x0]]={'$gte':moment(_0x43f5fd[0x1])[_0x4c82('0x4a')](_0x4c82('0x4b'))};_0x4e7064[_0x4c82('0x45')]=_[_0x4c82('0x33')](_0x4e7064[_0x4c82('0x45')],_0x38fd2e);}_0x4e7064=_[_0x4c82('0x33')]({},_0x4e7064,_0xfa933b['options']);return db['FaxMessage'][_0x4c82('0x15')]({'where':_0x4e7064['where']})[_0x4c82('0x18')](function(_0x2c37c7){_0x23101e['count']=_0x2c37c7;if(_0xfa933b[_0x4c82('0x28')][_0x4c82('0x4c')]){_0x4e7064[_0x4c82('0x32')]=[{'all':!![]}];}return db[_0x4c82('0x3e')]['findAll'](_0x4e7064);})['then'](function(_0x12e510){_0x23101e['rows']=_0x12e510;return _0x23101e;});}})[_0x4c82('0x18')](respondWithFilteredResult(_0x594e8a,_0x4e7064))[_0x4c82('0x34')](handleError(_0x594e8a,null));};exports[_0x4c82('0x4d')]=function(_0x2b7f7d,_0x162c8c){return db[_0x4c82('0x2e')][_0x4c82('0x37')]({'where':{'id':_0x2b7f7d[_0x4c82('0x2b')]['id']}})['then'](handleEntityNotFound(_0x162c8c,null))[_0x4c82('0x18')](function(_0x206526){if(_0x206526){return _0x206526['setTags'](_0x2b7f7d[_0x4c82('0x36')][_0x4c82('0x3b')],_['omit'](_0x2b7f7d['body'],['ids','id'])||{})[_0x4c82('0x4e')](function(){return db[_0x4c82('0x4f')][_0x4c82('0x26')]({'attributes':['id',_0x4c82('0x1d'),_0x4c82('0x50')],'where':{'id':_0x2b7f7d[_0x4c82('0x36')][_0x4c82('0x3b')]}});})[_0x4c82('0x18')](function(_0x134664){socket[_0x4c82('0x51')](_0x4c82('0x52'),{'id':Number(_0x2b7f7d[_0x4c82('0x2b')]['id']),'tags':_0x134664||[]});return{'id':Number(_0x2b7f7d['params']['id']),'tags':_0x134664||[]};});}})['then'](respondWithResult(_0x162c8c,null))['catch'](handleError(_0x162c8c,null));};exports['removeTags']=function(_0x8d2d44,_0x11433b){return db[_0x4c82('0x2e')][_0x4c82('0x37')]({'where':{'id':_0x8d2d44['params']['id']}})['then'](handleEntityNotFound(_0x11433b,null))[_0x4c82('0x18')](function(_0x300ba4){if(_0x300ba4){return _0x300ba4['removeTags'](_0x8d2d44[_0x4c82('0x28')][_0x4c82('0x3b')]);}})[_0x4c82('0x18')](respondWithStatusCode(_0x11433b,null))[_0x4c82('0x34')](handleError(_0x11433b,null));};exports['download']=function(_0x43827b,_0x345c3){var _0x23b970=moment()['unix']()['toString']();var _0x2cd0f7=path[_0x4c82('0x53')](config[_0x4c82('0x54')],'server',_0x4c82('0x55'),_0x4c82('0x56'));var _0x36cd53=path[_0x4c82('0x53')](config[_0x4c82('0x54')],_0x4c82('0x57'),_0x4c82('0x55'),_0x4c82('0x58'));var _0x58bff3=path[_0x4c82('0x53')](_0x2cd0f7,_0x23b970);var _0x4bb14d=util[_0x4c82('0x4a')](_0x4c82('0x59'),_0x43827b[_0x4c82('0x2b')]['id'],_0x23b970);var _0x243748=path['join'](_0x2cd0f7,_0x4bb14d);var _0x2428cf=[];_0x2428cf[_0x4c82('0x5a')]({'model':db['Attachment'],'as':_0x4c82('0x5b'),'raw':!![]});var _0x40b825=[{'model':db['FaxMessage'],'as':_0x4c82('0x5c'),'attributes':['id',_0x4c82('0x36'),_0x4c82('0x5d')],'include':_0x2428cf}];return db[_0x4c82('0x2e')][_0x4c82('0x37')]({'where':{'id':_0x43827b['params']['id']},'include':_0x40b825})['then'](handleEntityNotFound(_0x345c3,null))[_0x4c82('0x18')](function(_0x10f73d){if(_0x10f73d&&_0x10f73d[_0x4c82('0x5c')]){var _0x476d47=_0x10f73d[_0x4c82('0x5e')]({'plain':!![]});fs[_0x4c82('0x5f')](_0x58bff3);for(var _0x382531=0x0;_0x382531<_0x476d47['Messages'][_0x4c82('0x31')];_0x382531++){var _0x5d134b=_0x476d47[_0x4c82('0x5c')][_0x382531][_0x4c82('0x5b')];if(_0x5d134b){var _0x279a3b=path['join'](_0x36cd53,_0x5d134b[_0x4c82('0x60')]);if(fs[_0x4c82('0x61')](_0x279a3b)){fs[_0x4c82('0x62')](_0x279a3b)['pipe'](fs[_0x4c82('0x63')](path[_0x4c82('0x53')](_0x58bff3,_0x5d134b[_0x4c82('0x60')])));}}}return BPromise['resolve']()[_0x4c82('0x18')](function(){return new BPromise(function(_0x31b149,_0x4e40ec){zipdir(_0x58bff3,{'saveTo':_0x243748},function(_0x76ee92,_0x234c56){if(_0x76ee92)return _0x4e40ec(_0x76ee92);return _0x31b149(_0x234c56);});})[_0x4c82('0x18')](function(){return new BPromise(function(_0x5f3441,_0x151a1c){rimraf(_0x58bff3,function(_0x4a3ca2){if(_0x4a3ca2)_0x151a1c(_0x4a3ca2);return _0x5f3441();});});})[_0x4c82('0x18')](function(){return _0x345c3['download'](_0x243748,_0x4bb14d,function(_0x48957c){if(_0x48957c){console['log'](_0x4c82('0x64'),_0x48957c);}else{fs['unlinkSync'](_0x243748);}});});});}else{return _0x345c3[_0x4c82('0xf')](0xc8);}})[_0x4c82('0x34')](handleError(_0x345c3,null));};