58427fa247f6de051ee92c3fd7a6ca566948dcfb
[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 _0xb2db=['util','path','lodash','ioredis','../../components/interaction/service','../../config/logger','api','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./faxInteraction.socket','register','end','json','undefined','limit','offset','count','status','set','Content-Range','update','destroy','sendStatus','error','stack','name','send','index','FaxInteraction','rawAttributes','fieldName','type','key','getOptions','findAll','fax','query','user','then','catch','show','model','keys','filters','intersection','attributes','fields','includeAll','include','merge','options','find','create','body','params','describe','addMessage','FaxMessage','omit','getMessages','findOne','length','hasOwnProperty','order','sort','where','pick','FaxInteractionId','filter','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','rows','addTags','ids','color','faxInteractionTags:save','removeTags','download','toString','server','files','tmp','root','attachments','transcript-%d-%s.zip','join','push','Attachment','Messages','get','mkdirSync','basename','createReadStream','pipe','createWriteStream','resolve','log','err','unlinkSync','rimraf','moment'];(function(_0x3ae54d,_0x1de16a){var _0x104494=function(_0x1feb44){while(--_0x1feb44){_0x3ae54d['push'](_0x3ae54d['shift']());}};_0x104494(++_0x1de16a);}(_0xb2db,0x68));var _0xbb2d=function(_0x586b42,_0x5e4eda){_0x586b42=_0x586b42-0x0;var _0x3813cf=_0xb2db[_0x586b42];return _0x3813cf;};'use strict';var rimraf=require(_0xbb2d('0x0'));var zipdir=require('zip-dir');var moment=require(_0xbb2d('0x1'));var BPromise=require('bluebird');var util=require(_0xbb2d('0x2'));var path=require(_0xbb2d('0x3'));var fs=require('fs');var _=require(_0xbb2d('0x4'));var Redis=require(_0xbb2d('0x5'));var interaction=require(_0xbb2d('0x6'));var qs=require('../../components/parsers/qs');var logger=require(_0xbb2d('0x7'))(_0xbb2d('0x8'));var config=require('../../config/environment');var db=require(_0xbb2d('0x9'))['db'];config[_0xbb2d('0xa')]=_[_0xbb2d('0xb')](config['redis'],{'host':_0xbb2d('0xc'),'port':0x18eb});var socket=require(_0xbb2d('0xd'))(new Redis(config[_0xbb2d('0xa')]));require(_0xbb2d('0xe'))[_0xbb2d('0xf')](socket);function respondWithStatusCode(_0x2beb49,_0x145a19){_0x145a19=_0x145a19||0xcc;return function(_0x194538){if(_0x194538){return _0x2beb49['sendStatus'](_0x145a19);}return _0x2beb49['status'](_0x145a19)[_0xbb2d('0x10')]();};}function respondWithResult(_0x2f4595,_0x37c0c2){_0x37c0c2=_0x37c0c2||0xc8;return function(_0x40a7b9){if(_0x40a7b9){return _0x2f4595['status'](_0x37c0c2)[_0xbb2d('0x11')](_0x40a7b9);}};}function respondWithFilteredResult(_0x5353ad,_0x282304){return function(_0x15e54e){if(_0x15e54e){var _0x251723=typeof _0x282304['offset']===_0xbb2d('0x12')&&typeof _0x282304[_0xbb2d('0x13')]==='undefined';var _0x1d93e2=_0x15e54e['count'];var _0x2e7b79=_0x251723?0x0:_0x282304[_0xbb2d('0x14')];var _0x260853=_0x251723?_0x15e54e[_0xbb2d('0x15')]:_0x282304['offset']+_0x282304[_0xbb2d('0x13')];var _0xcca5be;if(_0x260853>=_0x1d93e2){_0x260853=_0x1d93e2;_0xcca5be=0xc8;}else{_0xcca5be=0xce;}_0x5353ad[_0xbb2d('0x16')](_0xcca5be);return _0x5353ad[_0xbb2d('0x17')](_0xbb2d('0x18'),_0x2e7b79+'-'+_0x260853+'/'+_0x1d93e2)[_0xbb2d('0x11')](_0x15e54e);}return null;};}function saveUpdates(_0xe8e239){return function(_0x6fe0a2){if(_0x6fe0a2){return _0x6fe0a2[_0xbb2d('0x19')](_0xe8e239)['then'](function(_0x154e3e){return _0x154e3e;});}return null;};}function removeEntity(_0x4570d6){return function(_0xd16c81){if(_0xd16c81){return _0xd16c81[_0xbb2d('0x1a')]()['then'](function(){_0x4570d6['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x129c93){return function(_0x4e1bb9){if(!_0x4e1bb9){_0x129c93[_0xbb2d('0x1b')](0x194);}return _0x4e1bb9;};}function handleError(_0x49af62,_0x11e116){_0x11e116=_0x11e116||0x1f4;return function(_0x1d1aa1){logger[_0xbb2d('0x1c')](_0x1d1aa1[_0xbb2d('0x1d')]);if(_0x1d1aa1['name']){delete _0x1d1aa1[_0xbb2d('0x1e')];}_0x49af62['status'](_0x11e116)[_0xbb2d('0x1f')](_0x1d1aa1);};}exports[_0xbb2d('0x20')]=function(_0x3578c4,_0x2babd6){var _0xa6e2da={};var _0x1c8f25=_['map'](db[_0xbb2d('0x21')][_0xbb2d('0x22')],function(_0x2d1f96){return{'name':_0x2d1f96[_0xbb2d('0x23')],'type':_0x2d1f96[_0xbb2d('0x24')][_0xbb2d('0x25')]};});_0xa6e2da=qs[_0xbb2d('0x26')](_0x1c8f25,_0x3578c4);return interaction[_0xbb2d('0x27')](_0xbb2d('0x28'),_0x3578c4[_0xbb2d('0x29')],_0x3578c4[_0xbb2d('0x2a')],_0xa6e2da,_0x1c8f25)[_0xbb2d('0x2b')](respondWithFilteredResult(_0x2babd6,_0xa6e2da))[_0xbb2d('0x2c')](handleError(_0x2babd6,null));};exports[_0xbb2d('0x2d')]=function(_0x44be0a,_0x4c922f){var _0x2983c5={'raw':![],'where':{'id':_0x44be0a['params']['id']}},_0x2adc65={};_0x2adc65[_0xbb2d('0x2e')]=_['keys'](db['FaxInteraction'][_0xbb2d('0x22')]);_0x2adc65['query']=_[_0xbb2d('0x2f')](_0x44be0a[_0xbb2d('0x29')]);_0x2adc65[_0xbb2d('0x30')]=_[_0xbb2d('0x31')](_0x2adc65[_0xbb2d('0x2e')],_0x2adc65['query']);_0x2983c5[_0xbb2d('0x32')]=_[_0xbb2d('0x31')](_0x2adc65[_0xbb2d('0x2e')],qs[_0xbb2d('0x33')](_0x44be0a['query'][_0xbb2d('0x33')]));_0x2983c5[_0xbb2d('0x32')]=_0x2983c5[_0xbb2d('0x32')]['length']?_0x2983c5['attributes']:_0x2adc65[_0xbb2d('0x2e')];if(_0x44be0a[_0xbb2d('0x29')][_0xbb2d('0x34')]){_0x2983c5[_0xbb2d('0x35')]=[{'all':!![]}];}_0x2983c5=_[_0xbb2d('0x36')]({},_0x2983c5,_0x44be0a[_0xbb2d('0x37')]);return db[_0xbb2d('0x21')][_0xbb2d('0x38')](_0x2983c5)['then'](handleEntityNotFound(_0x4c922f,null))[_0xbb2d('0x2b')](respondWithResult(_0x4c922f,null))[_0xbb2d('0x2c')](handleError(_0x4c922f,null));};exports[_0xbb2d('0x39')]=function(_0x352c0c,_0xa0abb5){return db['FaxInteraction'][_0xbb2d('0x39')](_0x352c0c[_0xbb2d('0x3a')],{})[_0xbb2d('0x2b')](respondWithResult(_0xa0abb5,0xc9))[_0xbb2d('0x2c')](handleError(_0xa0abb5,null));};exports[_0xbb2d('0x19')]=function(_0x27257e,_0x42456d){if(_0x27257e['body']['id']){delete _0x27257e['body']['id'];}return db[_0xbb2d('0x21')][_0xbb2d('0x38')]({'where':{'id':_0x27257e[_0xbb2d('0x3b')]['id']}})[_0xbb2d('0x2b')](handleEntityNotFound(_0x42456d,null))['then'](saveUpdates(_0x27257e[_0xbb2d('0x3a')],null))['then'](respondWithResult(_0x42456d,null))[_0xbb2d('0x2c')](handleError(_0x42456d,null));};exports[_0xbb2d('0x1a')]=function(_0x59332f,_0x16946b){return db[_0xbb2d('0x21')]['find']({'where':{'id':_0x59332f['params']['id']}})[_0xbb2d('0x2b')](handleEntityNotFound(_0x16946b,null))['then'](removeEntity(_0x16946b,null))[_0xbb2d('0x2c')](handleError(_0x16946b,null));};exports[_0xbb2d('0x3c')]=function(_0x2deb30,_0x581d6a){return db[_0xbb2d('0x21')][_0xbb2d('0x3c')]()['then'](respondWithResult(_0x581d6a,null))[_0xbb2d('0x2c')](handleError(_0x581d6a,null));};exports[_0xbb2d('0x3d')]=function(_0x95a817,_0x3ca771){return db[_0xbb2d('0x3e')]['find']({'where':{'id':_0x95a817[_0xbb2d('0x3b')]['id']}})[_0xbb2d('0x2b')](handleEntityNotFound(_0x3ca771,null))[_0xbb2d('0x2b')](function(_0x2d4249){if(_0x2d4249){return _0x2d4249[_0xbb2d('0x3d')](_0x95a817[_0xbb2d('0x3a')]['ids'],_[_0xbb2d('0x3f')](_0x95a817[_0xbb2d('0x3a')],['ids','id'])||{});}})[_0xbb2d('0x2b')](respondWithResult(_0x3ca771,null))[_0xbb2d('0x2c')](handleError(_0x3ca771,null));};exports[_0xbb2d('0x40')]=function(_0x24c7d5,_0x28b8a7){var _0x10bd25={'raw':![],'where':{}};var _0x433dad={};var _0x2313c6={'count':0x0,'rows':[]};return db[_0xbb2d('0x21')][_0xbb2d('0x41')]({'where':{'id':_0x24c7d5['params']['id']}})[_0xbb2d('0x2b')](handleEntityNotFound(_0x28b8a7,null))[_0xbb2d('0x2b')](function(_0x2f0c0d){if(_0x2f0c0d){_0x433dad[_0xbb2d('0x2e')]=_[_0xbb2d('0x2f')](db[_0xbb2d('0x3e')][_0xbb2d('0x22')]);_0x433dad[_0xbb2d('0x29')]=_[_0xbb2d('0x2f')](_0x24c7d5['query']);_0x433dad[_0xbb2d('0x30')]=_[_0xbb2d('0x31')](_0x433dad[_0xbb2d('0x2e')],_0x433dad[_0xbb2d('0x29')]);_0x10bd25[_0xbb2d('0x32')]=_[_0xbb2d('0x31')](_0x433dad[_0xbb2d('0x2e')],qs['fields'](_0x24c7d5[_0xbb2d('0x29')][_0xbb2d('0x33')]));_0x10bd25[_0xbb2d('0x32')]=_0x10bd25[_0xbb2d('0x32')][_0xbb2d('0x42')]?_0x10bd25[_0xbb2d('0x32')]:_0x433dad[_0xbb2d('0x2e')];if(!_0x24c7d5[_0xbb2d('0x29')][_0xbb2d('0x43')]('nolimit')){_0x10bd25[_0xbb2d('0x13')]=qs[_0xbb2d('0x13')](_0x24c7d5[_0xbb2d('0x29')][_0xbb2d('0x13')]);_0x10bd25[_0xbb2d('0x14')]=qs['offset'](_0x24c7d5['query'][_0xbb2d('0x14')]);}_0x10bd25[_0xbb2d('0x44')]=qs['sort'](_0x24c7d5[_0xbb2d('0x29')][_0xbb2d('0x45')]);_0x10bd25[_0xbb2d('0x46')]=qs[_0xbb2d('0x30')](_[_0xbb2d('0x47')](_0x24c7d5[_0xbb2d('0x29')],_0x433dad[_0xbb2d('0x30')]));_0x10bd25[_0xbb2d('0x46')][_0xbb2d('0x48')]=_0x2f0c0d['id'];if(_0x24c7d5['query'][_0xbb2d('0x49')]){_0x10bd25['where']=_[_0xbb2d('0x36')](_0x10bd25['where'],{'$or':_['map'](_0x10bd25[_0xbb2d('0x32')],function(_0x223d7c){var _0x23c88d={};_0x23c88d[_0x223d7c]={'$like':'%'+_0x24c7d5[_0xbb2d('0x29')][_0xbb2d('0x49')]+'%'};return _0x23c88d;})});}if(_0x24c7d5[_0xbb2d('0x29')][_0xbb2d('0x4a')]){var _0x2699aa=_0x24c7d5[_0xbb2d('0x29')][_0xbb2d('0x4a')][_0xbb2d('0x4b')](',');var _0x1cbde9={};_0x1cbde9[_0x2699aa[0x0]]={'$gte':moment(_0x2699aa[0x1])[_0xbb2d('0x4c')](_0xbb2d('0x4d'))};_0x10bd25[_0xbb2d('0x46')]=_[_0xbb2d('0x36')](_0x10bd25[_0xbb2d('0x46')],_0x1cbde9);}_0x10bd25=_[_0xbb2d('0x36')]({},_0x10bd25,_0x24c7d5[_0xbb2d('0x37')]);return db['FaxMessage'][_0xbb2d('0x15')]({'where':_0x10bd25[_0xbb2d('0x46')]})[_0xbb2d('0x2b')](function(_0x301416){_0x2313c6['count']=_0x301416;if(_0x24c7d5['query'][_0xbb2d('0x34')]){_0x10bd25[_0xbb2d('0x35')]=[{'all':!![]}];}return db[_0xbb2d('0x3e')]['findAll'](_0x10bd25);})[_0xbb2d('0x2b')](function(_0x5280af){_0x2313c6[_0xbb2d('0x4e')]=_0x5280af;return _0x2313c6;});}})['then'](respondWithFilteredResult(_0x28b8a7,_0x10bd25))[_0xbb2d('0x2c')](handleError(_0x28b8a7,null));};exports[_0xbb2d('0x4f')]=function(_0x4e238a,_0x47f305){return db[_0xbb2d('0x21')][_0xbb2d('0x38')]({'where':{'id':_0x4e238a['params']['id']}})[_0xbb2d('0x2b')](handleEntityNotFound(_0x47f305,null))[_0xbb2d('0x2b')](function(_0x2d5ee1){if(_0x2d5ee1){return _0x2d5ee1['setTags'](_0x4e238a['body'][_0xbb2d('0x50')],_[_0xbb2d('0x3f')](_0x4e238a['body'],[_0xbb2d('0x50'),'id'])||{})['spread'](function(){return db['Tag'][_0xbb2d('0x27')]({'attributes':['id',_0xbb2d('0x1e'),_0xbb2d('0x51')],'where':{'id':_0x4e238a[_0xbb2d('0x3a')][_0xbb2d('0x50')]}});})[_0xbb2d('0x2b')](function(_0x140f26){socket['emit'](_0xbb2d('0x52'),{'id':Number(_0x4e238a['params']['id']),'tags':_0x140f26||[]});return{'id':Number(_0x4e238a[_0xbb2d('0x3b')]['id']),'tags':_0x140f26||[]};});}})[_0xbb2d('0x2b')](respondWithResult(_0x47f305,null))['catch'](handleError(_0x47f305,null));};exports[_0xbb2d('0x53')]=function(_0x3e2745,_0x5c3be0){return db[_0xbb2d('0x21')][_0xbb2d('0x38')]({'where':{'id':_0x3e2745['params']['id']}})[_0xbb2d('0x2b')](handleEntityNotFound(_0x5c3be0,null))[_0xbb2d('0x2b')](function(_0x1d6a82){if(_0x1d6a82){return _0x1d6a82['removeTags'](_0x3e2745[_0xbb2d('0x29')][_0xbb2d('0x50')]);}})['then'](respondWithStatusCode(_0x5c3be0,null))[_0xbb2d('0x2c')](handleError(_0x5c3be0,null));};exports[_0xbb2d('0x54')]=function(_0x128a28,_0x59495f){var _0x519883=moment()['unix']()[_0xbb2d('0x55')]();var _0x29a0f3=path['join'](config['root'],_0xbb2d('0x56'),_0xbb2d('0x57'),_0xbb2d('0x58'));var _0x24a390=path['join'](config[_0xbb2d('0x59')],_0xbb2d('0x56'),_0xbb2d('0x57'),_0xbb2d('0x5a'));var _0x295cfd=path['join'](_0x29a0f3,_0x519883);var _0x5a6aff=util[_0xbb2d('0x4c')](_0xbb2d('0x5b'),_0x128a28['params']['id'],_0x519883);var _0x4a1216=path[_0xbb2d('0x5c')](_0x29a0f3,_0x5a6aff);var _0x33d8b0=[];_0x33d8b0[_0xbb2d('0x5d')]({'model':db[_0xbb2d('0x5e')],'as':_0xbb2d('0x5e'),'raw':!![]});var _0x13487c=[{'model':db['FaxMessage'],'as':_0xbb2d('0x5f'),'attributes':['id',_0xbb2d('0x3a'),'createdAt'],'include':_0x33d8b0}];return db[_0xbb2d('0x21')][_0xbb2d('0x38')]({'where':{'id':_0x128a28[_0xbb2d('0x3b')]['id']},'include':_0x13487c})['then'](handleEntityNotFound(_0x59495f,null))[_0xbb2d('0x2b')](function(_0x283e9f){if(_0x283e9f&&_0x283e9f[_0xbb2d('0x5f')]){var _0x28390f=_0x283e9f[_0xbb2d('0x60')]({'plain':!![]});fs[_0xbb2d('0x61')](_0x295cfd);for(var _0x347097=0x0;_0x347097<_0x28390f['Messages'][_0xbb2d('0x42')];_0x347097++){var _0x24c787=_0x28390f['Messages'][_0x347097][_0xbb2d('0x5e')];if(_0x24c787){var _0x1337f4=path['join'](_0x24a390,_0x24c787[_0xbb2d('0x62')]);if(fs['existsSync'](_0x1337f4)){fs[_0xbb2d('0x63')](_0x1337f4)[_0xbb2d('0x64')](fs[_0xbb2d('0x65')](path[_0xbb2d('0x5c')](_0x295cfd,_0x24c787[_0xbb2d('0x62')])));}}}return BPromise[_0xbb2d('0x66')]()[_0xbb2d('0x2b')](function(){return new BPromise(function(_0x34dcd5,_0xc32e01){zipdir(_0x295cfd,{'saveTo':_0x4a1216},function(_0xb21fb9,_0x457f29){if(_0xb21fb9)return _0xc32e01(_0xb21fb9);return _0x34dcd5(_0x457f29);});})[_0xbb2d('0x2b')](function(){return new BPromise(function(_0x23d7e6,_0x36e585){rimraf(_0x295cfd,function(_0x1f83a1){if(_0x1f83a1)_0x36e585(_0x1f83a1);return _0x23d7e6();});});})['then'](function(){return _0x59495f[_0xbb2d('0x54')](_0x4a1216,_0x5a6aff,function(_0x3e319d){if(_0x3e319d){console[_0xbb2d('0x67')](_0xbb2d('0x68'),_0x3e319d);}else{fs[_0xbb2d('0x69')](_0x4a1216);}});});});}else{return _0x59495f['sendStatus'](0xc8);}})[_0xbb2d('0x2c')](handleError(_0x59495f,null));};