edb87a42f761770d79b878f680fe8050ab2923d6
[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 _0xd9b2=['count','set','Content-Range','destroy','then','stack','name','index','rawAttributes','fieldName','type','getOptions','findAll','fax','user','catch','show','params','model','keys','FaxInteraction','query','attributes','intersection','fields','length','includeAll','include','merge','options','find','create','body','describe','addMessage','ids','omit','getMessages','FaxMessage','hasOwnProperty','nolimit','order','sort','where','filters','pick','FaxInteractionId','filter','map','$gte','split','YYYY-MM-DD\x20HH:mm:ss','rows','setTags','color','emit','removeTags','download','unix','toString','root','tmp','join','server','files','transcript-%d-%s.zip','push','Attachment','Messages','createdAt','basename','existsSync','createReadStream','pipe','createWriteStream','resolve','log','err','unlinkSync','rimraf','moment','util','lodash','ioredis','../../components/interaction/service','../../components/parsers/qs','../../config/logger','api','../../mysqldb','redis','defaults','localhost','./faxInteraction.socket','register','sendStatus','status','end','json','offset','undefined','limit'];(function(_0x3d5638,_0xa26995){var _0x2c2455=function(_0x5384e0){while(--_0x5384e0){_0x3d5638['push'](_0x3d5638['shift']());}};_0x2c2455(++_0xa26995);}(_0xd9b2,0xb4));var _0x2d9b=function(_0x2d2258,_0x2ce510){_0x2d2258=_0x2d2258-0x0;var _0x18e155=_0xd9b2[_0x2d2258];return _0x18e155;};'use strict';var rimraf=require(_0x2d9b('0x0'));var zipdir=require('zip-dir');var moment=require(_0x2d9b('0x1'));var BPromise=require('bluebird');var util=require(_0x2d9b('0x2'));var path=require('path');var fs=require('fs');var _=require(_0x2d9b('0x3'));var Redis=require(_0x2d9b('0x4'));var interaction=require(_0x2d9b('0x5'));var qs=require(_0x2d9b('0x6'));var logger=require(_0x2d9b('0x7'))(_0x2d9b('0x8'));var config=require('../../config/environment');var db=require(_0x2d9b('0x9'))['db'];config[_0x2d9b('0xa')]=_[_0x2d9b('0xb')](config[_0x2d9b('0xa')],{'host':_0x2d9b('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x2d9b('0xa')]));require(_0x2d9b('0xd'))[_0x2d9b('0xe')](socket);function respondWithStatusCode(_0x5d727b,_0x28a2d5){_0x28a2d5=_0x28a2d5||0xcc;return function(_0x493bed){if(_0x493bed){return _0x5d727b[_0x2d9b('0xf')](_0x28a2d5);}return _0x5d727b[_0x2d9b('0x10')](_0x28a2d5)[_0x2d9b('0x11')]();};}function respondWithResult(_0x182b3a,_0x1d6d67){_0x1d6d67=_0x1d6d67||0xc8;return function(_0x202a28){if(_0x202a28){return _0x182b3a[_0x2d9b('0x10')](_0x1d6d67)[_0x2d9b('0x12')](_0x202a28);}};}function respondWithFilteredResult(_0x5ba3c7,_0x5e299c){return function(_0xc71899){if(_0xc71899){var _0xd4b89d=typeof _0x5e299c[_0x2d9b('0x13')]===_0x2d9b('0x14')&&typeof _0x5e299c[_0x2d9b('0x15')]==='undefined';var _0x2f1b56=_0xc71899['count'];var _0x484164=_0xd4b89d?0x0:_0x5e299c[_0x2d9b('0x13')];var _0x102aec=_0xd4b89d?_0xc71899[_0x2d9b('0x16')]:_0x5e299c['offset']+_0x5e299c['limit'];var _0x1d02a0;if(_0x102aec>=_0x2f1b56){_0x102aec=_0x2f1b56;_0x1d02a0=0xc8;}else{_0x1d02a0=0xce;}_0x5ba3c7[_0x2d9b('0x10')](_0x1d02a0);return _0x5ba3c7[_0x2d9b('0x17')](_0x2d9b('0x18'),_0x484164+'-'+_0x102aec+'/'+_0x2f1b56)[_0x2d9b('0x12')](_0xc71899);}return null;};}function saveUpdates(_0xc23202){return function(_0x2b13d3){if(_0x2b13d3){return _0x2b13d3['update'](_0xc23202)['then'](function(_0x542b16){return _0x542b16;});}return null;};}function removeEntity(_0x50fd02){return function(_0x3612f8){if(_0x3612f8){return _0x3612f8[_0x2d9b('0x19')]()[_0x2d9b('0x1a')](function(){_0x50fd02[_0x2d9b('0x10')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2f6c4e){return function(_0x2d8ff1){if(!_0x2d8ff1){_0x2f6c4e[_0x2d9b('0xf')](0x194);}return _0x2d8ff1;};}function handleError(_0x1da875,_0x3346c5){_0x3346c5=_0x3346c5||0x1f4;return function(_0x3d946a){logger['error'](_0x3d946a[_0x2d9b('0x1b')]);if(_0x3d946a[_0x2d9b('0x1c')]){delete _0x3d946a[_0x2d9b('0x1c')];}_0x1da875['status'](_0x3346c5)['send'](_0x3d946a);};}exports[_0x2d9b('0x1d')]=function(_0x3dc29c,_0x30b097){var _0x19eddb={};var _0x39473b=_['map'](db['FaxInteraction'][_0x2d9b('0x1e')],function(_0x39f2b4){return{'name':_0x39f2b4[_0x2d9b('0x1f')],'type':_0x39f2b4[_0x2d9b('0x20')]['key']};});_0x19eddb=qs[_0x2d9b('0x21')](_0x39473b,_0x3dc29c);return interaction[_0x2d9b('0x22')](_0x2d9b('0x23'),_0x3dc29c['query'],_0x3dc29c[_0x2d9b('0x24')],_0x19eddb,_0x39473b)['then'](respondWithFilteredResult(_0x30b097,_0x19eddb))[_0x2d9b('0x25')](handleError(_0x30b097,null));};exports[_0x2d9b('0x26')]=function(_0xd589da,_0x10a8b0){var _0x1e7cba={'raw':![],'where':{'id':_0xd589da[_0x2d9b('0x27')]['id']}},_0x226a3d={};_0x226a3d[_0x2d9b('0x28')]=_[_0x2d9b('0x29')](db[_0x2d9b('0x2a')]['rawAttributes']);_0x226a3d[_0x2d9b('0x2b')]=_['keys'](_0xd589da[_0x2d9b('0x2b')]);_0x226a3d['filters']=_['intersection'](_0x226a3d[_0x2d9b('0x28')],_0x226a3d[_0x2d9b('0x2b')]);_0x1e7cba[_0x2d9b('0x2c')]=_[_0x2d9b('0x2d')](_0x226a3d[_0x2d9b('0x28')],qs['fields'](_0xd589da['query'][_0x2d9b('0x2e')]));_0x1e7cba['attributes']=_0x1e7cba[_0x2d9b('0x2c')][_0x2d9b('0x2f')]?_0x1e7cba[_0x2d9b('0x2c')]:_0x226a3d[_0x2d9b('0x28')];if(_0xd589da[_0x2d9b('0x2b')][_0x2d9b('0x30')]){_0x1e7cba[_0x2d9b('0x31')]=[{'all':!![]}];}_0x1e7cba=_[_0x2d9b('0x32')]({},_0x1e7cba,_0xd589da[_0x2d9b('0x33')]);return db['FaxInteraction'][_0x2d9b('0x34')](_0x1e7cba)['then'](handleEntityNotFound(_0x10a8b0,null))[_0x2d9b('0x1a')](respondWithResult(_0x10a8b0,null))[_0x2d9b('0x25')](handleError(_0x10a8b0,null));};exports[_0x2d9b('0x35')]=function(_0x145338,_0x1f0f3a){return db[_0x2d9b('0x2a')][_0x2d9b('0x35')](_0x145338[_0x2d9b('0x36')],{})[_0x2d9b('0x1a')](respondWithResult(_0x1f0f3a,0xc9))[_0x2d9b('0x25')](handleError(_0x1f0f3a,null));};exports['update']=function(_0x129b80,_0x19b3ce){if(_0x129b80['body']['id']){delete _0x129b80[_0x2d9b('0x36')]['id'];}return db[_0x2d9b('0x2a')][_0x2d9b('0x34')]({'where':{'id':_0x129b80[_0x2d9b('0x27')]['id']}})['then'](handleEntityNotFound(_0x19b3ce,null))[_0x2d9b('0x1a')](saveUpdates(_0x129b80[_0x2d9b('0x36')],null))[_0x2d9b('0x1a')](respondWithResult(_0x19b3ce,null))['catch'](handleError(_0x19b3ce,null));};exports[_0x2d9b('0x19')]=function(_0x334924,_0x427064){return db[_0x2d9b('0x2a')][_0x2d9b('0x34')]({'where':{'id':_0x334924[_0x2d9b('0x27')]['id']}})[_0x2d9b('0x1a')](handleEntityNotFound(_0x427064,null))['then'](removeEntity(_0x427064,null))['catch'](handleError(_0x427064,null));};exports[_0x2d9b('0x37')]=function(_0x529f9b,_0x57611b){return db[_0x2d9b('0x2a')]['describe']()[_0x2d9b('0x1a')](respondWithResult(_0x57611b,null))[_0x2d9b('0x25')](handleError(_0x57611b,null));};exports[_0x2d9b('0x38')]=function(_0x2b7eb3,_0x40a577){return db['FaxMessage'][_0x2d9b('0x34')]({'where':{'id':_0x2b7eb3['params']['id']}})[_0x2d9b('0x1a')](handleEntityNotFound(_0x40a577,null))[_0x2d9b('0x1a')](function(_0x24b17b){if(_0x24b17b){return _0x24b17b[_0x2d9b('0x38')](_0x2b7eb3['body'][_0x2d9b('0x39')],_[_0x2d9b('0x3a')](_0x2b7eb3[_0x2d9b('0x36')],[_0x2d9b('0x39'),'id'])||{});}})[_0x2d9b('0x1a')](respondWithResult(_0x40a577,null))[_0x2d9b('0x25')](handleError(_0x40a577,null));};exports[_0x2d9b('0x3b')]=function(_0x23fbfc,_0x1e728e){var _0x10eefd={'raw':![],'where':{}};var _0x477d44={};var _0x5b328c={'count':0x0,'rows':[]};return db['FaxInteraction']['findOne']({'where':{'id':_0x23fbfc[_0x2d9b('0x27')]['id']}})[_0x2d9b('0x1a')](handleEntityNotFound(_0x1e728e,null))['then'](function(_0x5635c1){if(_0x5635c1){_0x477d44[_0x2d9b('0x28')]=_[_0x2d9b('0x29')](db[_0x2d9b('0x3c')][_0x2d9b('0x1e')]);_0x477d44[_0x2d9b('0x2b')]=_[_0x2d9b('0x29')](_0x23fbfc[_0x2d9b('0x2b')]);_0x477d44['filters']=_[_0x2d9b('0x2d')](_0x477d44['model'],_0x477d44[_0x2d9b('0x2b')]);_0x10eefd[_0x2d9b('0x2c')]=_['intersection'](_0x477d44[_0x2d9b('0x28')],qs[_0x2d9b('0x2e')](_0x23fbfc['query'][_0x2d9b('0x2e')]));_0x10eefd[_0x2d9b('0x2c')]=_0x10eefd[_0x2d9b('0x2c')][_0x2d9b('0x2f')]?_0x10eefd[_0x2d9b('0x2c')]:_0x477d44[_0x2d9b('0x28')];if(!_0x23fbfc[_0x2d9b('0x2b')][_0x2d9b('0x3d')](_0x2d9b('0x3e'))){_0x10eefd[_0x2d9b('0x15')]=qs[_0x2d9b('0x15')](_0x23fbfc['query']['limit']);_0x10eefd[_0x2d9b('0x13')]=qs[_0x2d9b('0x13')](_0x23fbfc[_0x2d9b('0x2b')][_0x2d9b('0x13')]);}_0x10eefd[_0x2d9b('0x3f')]=qs[_0x2d9b('0x40')](_0x23fbfc[_0x2d9b('0x2b')][_0x2d9b('0x40')]);_0x10eefd[_0x2d9b('0x41')]=qs[_0x2d9b('0x42')](_[_0x2d9b('0x43')](_0x23fbfc[_0x2d9b('0x2b')],_0x477d44['filters']));_0x10eefd[_0x2d9b('0x41')][_0x2d9b('0x44')]=_0x5635c1['id'];if(_0x23fbfc[_0x2d9b('0x2b')][_0x2d9b('0x45')]){_0x10eefd['where']=_['merge'](_0x10eefd[_0x2d9b('0x41')],{'$or':_[_0x2d9b('0x46')](_0x10eefd['attributes'],function(_0x876afc){var _0x217042={};_0x217042[_0x876afc]={'$like':'%'+_0x23fbfc[_0x2d9b('0x2b')][_0x2d9b('0x45')]+'%'};return _0x217042;})});}if(_0x23fbfc['query'][_0x2d9b('0x47')]){var _0x5d1317=_0x23fbfc[_0x2d9b('0x2b')]['$gte'][_0x2d9b('0x48')](',');var _0x50c09f={};_0x50c09f[_0x5d1317[0x0]]={'$gte':moment(_0x5d1317[0x1])['format'](_0x2d9b('0x49'))};_0x10eefd[_0x2d9b('0x41')]=_[_0x2d9b('0x32')](_0x10eefd['where'],_0x50c09f);}_0x10eefd=_['merge']({},_0x10eefd,_0x23fbfc['options']);return db['FaxMessage'][_0x2d9b('0x16')]({'where':_0x10eefd['where']})['then'](function(_0x172444){_0x5b328c['count']=_0x172444;if(_0x23fbfc['query'][_0x2d9b('0x30')]){_0x10eefd[_0x2d9b('0x31')]=[{'all':!![]}];}return db[_0x2d9b('0x3c')]['findAll'](_0x10eefd);})['then'](function(_0x2f98a4){_0x5b328c[_0x2d9b('0x4a')]=_0x2f98a4;return _0x5b328c;});}})['then'](respondWithFilteredResult(_0x1e728e,_0x10eefd))[_0x2d9b('0x25')](handleError(_0x1e728e,null));};exports['addTags']=function(_0x240f95,_0x1aebbb){return db[_0x2d9b('0x2a')][_0x2d9b('0x34')]({'where':{'id':_0x240f95[_0x2d9b('0x27')]['id']}})[_0x2d9b('0x1a')](handleEntityNotFound(_0x1aebbb,null))[_0x2d9b('0x1a')](function(_0x243524){if(_0x243524){return _0x243524[_0x2d9b('0x4b')](_0x240f95[_0x2d9b('0x36')][_0x2d9b('0x39')],_['omit'](_0x240f95['body'],['ids','id'])||{})['spread'](function(){return db['Tag'][_0x2d9b('0x22')]({'attributes':['id',_0x2d9b('0x1c'),_0x2d9b('0x4c')],'where':{'id':_0x240f95[_0x2d9b('0x36')]['ids']}});})[_0x2d9b('0x1a')](function(_0x560375){socket[_0x2d9b('0x4d')]('faxInteractionTags:save',{'id':Number(_0x240f95['params']['id']),'tags':_0x560375||[]});return{'id':Number(_0x240f95['params']['id']),'tags':_0x560375||[]};});}})[_0x2d9b('0x1a')](respondWithResult(_0x1aebbb,null))[_0x2d9b('0x25')](handleError(_0x1aebbb,null));};exports['removeTags']=function(_0x6d63b6,_0x59af83){return db['FaxInteraction'][_0x2d9b('0x34')]({'where':{'id':_0x6d63b6[_0x2d9b('0x27')]['id']}})[_0x2d9b('0x1a')](handleEntityNotFound(_0x59af83,null))[_0x2d9b('0x1a')](function(_0x12053b){if(_0x12053b){return _0x12053b[_0x2d9b('0x4e')](_0x6d63b6[_0x2d9b('0x2b')][_0x2d9b('0x39')]);}})[_0x2d9b('0x1a')](respondWithStatusCode(_0x59af83,null))[_0x2d9b('0x25')](handleError(_0x59af83,null));};exports[_0x2d9b('0x4f')]=function(_0x2f93b6,_0x2b4828){var _0xe8cd5=moment()[_0x2d9b('0x50')]()[_0x2d9b('0x51')]();var _0x19ce12=path['join'](config[_0x2d9b('0x52')],'server','files',_0x2d9b('0x53'));var _0x2fb4a9=path[_0x2d9b('0x54')](config['root'],_0x2d9b('0x55'),_0x2d9b('0x56'),'attachments');var _0x231877=path[_0x2d9b('0x54')](_0x19ce12,_0xe8cd5);var _0x4fa29a=util['format'](_0x2d9b('0x57'),_0x2f93b6['params']['id'],_0xe8cd5);var _0x1a1d89=path[_0x2d9b('0x54')](_0x19ce12,_0x4fa29a);var _0xe36156=[];_0xe36156[_0x2d9b('0x58')]({'model':db['Attachment'],'as':_0x2d9b('0x59'),'raw':!![]});var _0x14f631=[{'model':db[_0x2d9b('0x3c')],'as':_0x2d9b('0x5a'),'attributes':['id',_0x2d9b('0x36'),_0x2d9b('0x5b')],'include':_0xe36156}];return db[_0x2d9b('0x2a')]['find']({'where':{'id':_0x2f93b6[_0x2d9b('0x27')]['id']},'include':_0x14f631})['then'](handleEntityNotFound(_0x2b4828,null))[_0x2d9b('0x1a')](function(_0x57712e){if(_0x57712e&&_0x57712e[_0x2d9b('0x5a')]){var _0xa742d8=_0x57712e['get']({'plain':!![]});fs['mkdirSync'](_0x231877);for(var _0x4c307b=0x0;_0x4c307b<_0xa742d8[_0x2d9b('0x5a')]['length'];_0x4c307b++){var _0x4a3dbd=_0xa742d8['Messages'][_0x4c307b][_0x2d9b('0x59')];if(_0x4a3dbd){var _0x1be946=path[_0x2d9b('0x54')](_0x2fb4a9,_0x4a3dbd[_0x2d9b('0x5c')]);if(fs[_0x2d9b('0x5d')](_0x1be946)){fs[_0x2d9b('0x5e')](_0x1be946)[_0x2d9b('0x5f')](fs[_0x2d9b('0x60')](path[_0x2d9b('0x54')](_0x231877,_0x4a3dbd[_0x2d9b('0x5c')])));}}}return BPromise[_0x2d9b('0x61')]()['then'](function(){return new BPromise(function(_0x289b0d,_0x29c08b){zipdir(_0x231877,{'saveTo':_0x1a1d89},function(_0x41b26f,_0x23bbd7){if(_0x41b26f)return _0x29c08b(_0x41b26f);return _0x289b0d(_0x23bbd7);});})[_0x2d9b('0x1a')](function(){return new BPromise(function(_0x46a1a4,_0x304384){rimraf(_0x231877,function(_0x52fc81){if(_0x52fc81)_0x304384(_0x52fc81);return _0x46a1a4();});});})[_0x2d9b('0x1a')](function(){return _0x2b4828[_0x2d9b('0x4f')](_0x1a1d89,_0x4fa29a,function(_0x1f3f23){if(_0x1f3f23){console[_0x2d9b('0x62')](_0x2d9b('0x63'),_0x1f3f23);}else{fs[_0x2d9b('0x64')](_0x1a1d89);}});});});}else{return _0x2b4828[_0x2d9b('0xf')](0xc8);}})['catch'](handleError(_0x2b4828,null));};