Built motion from commit d1eab355.|2.6.28
[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 _0xa569=['Tag','color','faxInteractionTags:save','removeTags','join','root','files','tmp','transcript-%d-%s.zip','push','Attachment','Messages','createdAt','mkdirSync','createReadStream','createWriteStream','basename','resolve','download','log','err','unlinkSync','rimraf','moment','bluebird','util','path','lodash','../../components/interaction/service','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../mysqldb','redis','socket.io-emitter','./faxInteraction.socket','register','sendStatus','status','json','offset','undefined','count','limit','set','end','error','name','send','index','rawAttributes','fieldName','type','key','getOptions','findAll','fax','catch','show','params','model','keys','query','filters','fields','attributes','length','includeAll','include','merge','FaxInteraction','then','create','update','body','find','destroy','describe','addMessage','ids','omit','getMessages','FaxMessage','intersection','nolimit','order','sort','where','FaxInteractionId','filter','map','$gte','split','format','options','rows','spread'];(function(_0x40634d,_0x2b64da){var _0x51f357=function(_0x2f6e34){while(--_0x2f6e34){_0x40634d['push'](_0x40634d['shift']());}};_0x51f357(++_0x2b64da);}(_0xa569,0x78));var _0x9a56=function(_0x12b83d,_0x4bcec7){_0x12b83d=_0x12b83d-0x0;var _0x1fd39d=_0xa569[_0x12b83d];return _0x1fd39d;};'use strict';var rimraf=require(_0x9a56('0x0'));var zipdir=require('zip-dir');var moment=require(_0x9a56('0x1'));var BPromise=require(_0x9a56('0x2'));var util=require(_0x9a56('0x3'));var path=require(_0x9a56('0x4'));var fs=require('fs');var _=require(_0x9a56('0x5'));var Redis=require('ioredis');var interaction=require(_0x9a56('0x6'));var qs=require(_0x9a56('0x7'));var logger=require(_0x9a56('0x8'))(_0x9a56('0x9'));var config=require(_0x9a56('0xa'));var db=require(_0x9a56('0xb'))['db'];config[_0x9a56('0xc')]=_['defaults'](config[_0x9a56('0xc')],{'host':'localhost','port':0x18eb});var socket=require(_0x9a56('0xd'))(new Redis(config[_0x9a56('0xc')]));require(_0x9a56('0xe'))[_0x9a56('0xf')](socket);function respondWithStatusCode(_0x172edd,_0x5388ca){_0x5388ca=_0x5388ca||0xcc;return function(_0x591342){if(_0x591342){return _0x172edd[_0x9a56('0x10')](_0x5388ca);}return _0x172edd[_0x9a56('0x11')](_0x5388ca)['end']();};}function respondWithResult(_0x422e6a,_0x3d73bb){_0x3d73bb=_0x3d73bb||0xc8;return function(_0xa2a282){if(_0xa2a282){return _0x422e6a[_0x9a56('0x11')](_0x3d73bb)[_0x9a56('0x12')](_0xa2a282);}};}function respondWithFilteredResult(_0x7b5b4b,_0x6342cb){return function(_0xbaedb4){if(_0xbaedb4){var _0x52b6f6=typeof _0x6342cb[_0x9a56('0x13')]===_0x9a56('0x14')&&typeof _0x6342cb['limit']===_0x9a56('0x14');var _0x2df249=_0xbaedb4[_0x9a56('0x15')];var _0x245804=_0x52b6f6?0x0:_0x6342cb['offset'];var _0x1af7e9=_0x52b6f6?_0xbaedb4['count']:_0x6342cb['offset']+_0x6342cb[_0x9a56('0x16')];var _0x4ee34f;if(_0x1af7e9>=_0x2df249){_0x1af7e9=_0x2df249;_0x4ee34f=0xc8;}else{_0x4ee34f=0xce;}_0x7b5b4b['status'](_0x4ee34f);return _0x7b5b4b[_0x9a56('0x17')]('Content-Range',_0x245804+'-'+_0x1af7e9+'/'+_0x2df249)[_0x9a56('0x12')](_0xbaedb4);}return null;};}function saveUpdates(_0xfc3032){return function(_0x29a982){if(_0x29a982){return _0x29a982['update'](_0xfc3032)['then'](function(_0x55a767){return _0x55a767;});}return null;};}function removeEntity(_0x324c46){return function(_0x1911eb){if(_0x1911eb){return _0x1911eb['destroy']()['then'](function(){_0x324c46[_0x9a56('0x11')](0xcc)[_0x9a56('0x18')]();});}};}function handleEntityNotFound(_0x225fda){return function(_0x375295){if(!_0x375295){_0x225fda[_0x9a56('0x10')](0x194);}return _0x375295;};}function handleError(_0x3223bd,_0x39917d){_0x39917d=_0x39917d||0x1f4;return function(_0xe686ff){logger[_0x9a56('0x19')](_0xe686ff['stack']);if(_0xe686ff[_0x9a56('0x1a')]){delete _0xe686ff[_0x9a56('0x1a')];}_0x3223bd[_0x9a56('0x11')](_0x39917d)[_0x9a56('0x1b')](_0xe686ff);};}exports[_0x9a56('0x1c')]=function(_0x3620db,_0x1b0d7b){var _0x2833be={};var _0x246f9f=_['map'](db['FaxInteraction'][_0x9a56('0x1d')],function(_0xf12c64){return{'name':_0xf12c64[_0x9a56('0x1e')],'type':_0xf12c64[_0x9a56('0x1f')][_0x9a56('0x20')]};});_0x2833be=qs[_0x9a56('0x21')](_0x246f9f,_0x3620db);return interaction[_0x9a56('0x22')](_0x9a56('0x23'),_0x3620db['query'],_0x3620db['user'],_0x2833be,_0x246f9f)['then'](respondWithFilteredResult(_0x1b0d7b,_0x2833be))[_0x9a56('0x24')](handleError(_0x1b0d7b,null));};exports[_0x9a56('0x25')]=function(_0x12c7e9,_0x2ebbcd){var _0x4fc518={'raw':![],'where':{'id':_0x12c7e9[_0x9a56('0x26')]['id']}},_0x2a62c1={};_0x2a62c1[_0x9a56('0x27')]=_[_0x9a56('0x28')](db['FaxInteraction']['rawAttributes']);_0x2a62c1[_0x9a56('0x29')]=_[_0x9a56('0x28')](_0x12c7e9['query']);_0x2a62c1[_0x9a56('0x2a')]=_['intersection'](_0x2a62c1[_0x9a56('0x27')],_0x2a62c1[_0x9a56('0x29')]);_0x4fc518['attributes']=_['intersection'](_0x2a62c1['model'],qs[_0x9a56('0x2b')](_0x12c7e9[_0x9a56('0x29')][_0x9a56('0x2b')]));_0x4fc518[_0x9a56('0x2c')]=_0x4fc518[_0x9a56('0x2c')][_0x9a56('0x2d')]?_0x4fc518['attributes']:_0x2a62c1[_0x9a56('0x27')];if(_0x12c7e9[_0x9a56('0x29')][_0x9a56('0x2e')]){_0x4fc518[_0x9a56('0x2f')]=[{'all':!![]}];}_0x4fc518=_[_0x9a56('0x30')]({},_0x4fc518,_0x12c7e9['options']);return db[_0x9a56('0x31')]['find'](_0x4fc518)[_0x9a56('0x32')](handleEntityNotFound(_0x2ebbcd,null))[_0x9a56('0x32')](respondWithResult(_0x2ebbcd,null))[_0x9a56('0x24')](handleError(_0x2ebbcd,null));};exports[_0x9a56('0x33')]=function(_0x3a4dde,_0x57a802){return db['FaxInteraction'][_0x9a56('0x33')](_0x3a4dde['body'],{})[_0x9a56('0x32')](respondWithResult(_0x57a802,0xc9))['catch'](handleError(_0x57a802,null));};exports[_0x9a56('0x34')]=function(_0x1ef0ef,_0x118c28){if(_0x1ef0ef[_0x9a56('0x35')]['id']){delete _0x1ef0ef[_0x9a56('0x35')]['id'];}return db[_0x9a56('0x31')][_0x9a56('0x36')]({'where':{'id':_0x1ef0ef[_0x9a56('0x26')]['id']}})['then'](handleEntityNotFound(_0x118c28,null))[_0x9a56('0x32')](saveUpdates(_0x1ef0ef[_0x9a56('0x35')],null))['then'](respondWithResult(_0x118c28,null))['catch'](handleError(_0x118c28,null));};exports[_0x9a56('0x37')]=function(_0x3c0f88,_0x130c89){return db[_0x9a56('0x31')][_0x9a56('0x36')]({'where':{'id':_0x3c0f88[_0x9a56('0x26')]['id']}})[_0x9a56('0x32')](handleEntityNotFound(_0x130c89,null))[_0x9a56('0x32')](removeEntity(_0x130c89,null))[_0x9a56('0x24')](handleError(_0x130c89,null));};exports[_0x9a56('0x38')]=function(_0x4da19a,_0x30e456){return db['FaxInteraction'][_0x9a56('0x38')]()[_0x9a56('0x32')](respondWithResult(_0x30e456,null))[_0x9a56('0x24')](handleError(_0x30e456,null));};exports[_0x9a56('0x39')]=function(_0x47904c,_0x5aca16){return db['FaxMessage'][_0x9a56('0x36')]({'where':{'id':_0x47904c[_0x9a56('0x26')]['id']}})[_0x9a56('0x32')](handleEntityNotFound(_0x5aca16,null))['then'](function(_0x176845){if(_0x176845){return _0x176845[_0x9a56('0x39')](_0x47904c['body'][_0x9a56('0x3a')],_[_0x9a56('0x3b')](_0x47904c[_0x9a56('0x35')],[_0x9a56('0x3a'),'id'])||{});}})['then'](respondWithResult(_0x5aca16,null))[_0x9a56('0x24')](handleError(_0x5aca16,null));};exports[_0x9a56('0x3c')]=function(_0x1e52c7,_0x293646){var _0x51021f={'raw':![],'where':{}};var _0x2d0fa6={};var _0x324243={'count':0x0,'rows':[]};return db[_0x9a56('0x31')]['findOne']({'where':{'id':_0x1e52c7[_0x9a56('0x26')]['id']}})[_0x9a56('0x32')](handleEntityNotFound(_0x293646,null))[_0x9a56('0x32')](function(_0x35f2cc){if(_0x35f2cc){_0x2d0fa6['model']=_[_0x9a56('0x28')](db[_0x9a56('0x3d')][_0x9a56('0x1d')]);_0x2d0fa6[_0x9a56('0x29')]=_[_0x9a56('0x28')](_0x1e52c7[_0x9a56('0x29')]);_0x2d0fa6[_0x9a56('0x2a')]=_['intersection'](_0x2d0fa6['model'],_0x2d0fa6['query']);_0x51021f['attributes']=_[_0x9a56('0x3e')](_0x2d0fa6[_0x9a56('0x27')],qs[_0x9a56('0x2b')](_0x1e52c7[_0x9a56('0x29')][_0x9a56('0x2b')]));_0x51021f['attributes']=_0x51021f['attributes'][_0x9a56('0x2d')]?_0x51021f[_0x9a56('0x2c')]:_0x2d0fa6[_0x9a56('0x27')];if(!_0x1e52c7[_0x9a56('0x29')]['hasOwnProperty'](_0x9a56('0x3f'))){_0x51021f[_0x9a56('0x16')]=qs[_0x9a56('0x16')](_0x1e52c7['query'][_0x9a56('0x16')]);_0x51021f[_0x9a56('0x13')]=qs['offset'](_0x1e52c7['query']['offset']);}_0x51021f[_0x9a56('0x40')]=qs[_0x9a56('0x41')](_0x1e52c7['query'][_0x9a56('0x41')]);_0x51021f[_0x9a56('0x42')]=qs[_0x9a56('0x2a')](_['pick'](_0x1e52c7[_0x9a56('0x29')],_0x2d0fa6[_0x9a56('0x2a')]));_0x51021f[_0x9a56('0x42')][_0x9a56('0x43')]=_0x35f2cc['id'];if(_0x1e52c7[_0x9a56('0x29')][_0x9a56('0x44')]){_0x51021f['where']=_['merge'](_0x51021f['where'],{'$or':_[_0x9a56('0x45')](_0x51021f[_0x9a56('0x2c')],function(_0x2ef312){var _0x4feb90={};_0x4feb90[_0x2ef312]={'$like':'%'+_0x1e52c7[_0x9a56('0x29')][_0x9a56('0x44')]+'%'};return _0x4feb90;})});}if(_0x1e52c7[_0x9a56('0x29')][_0x9a56('0x46')]){var _0x1a15d9=_0x1e52c7[_0x9a56('0x29')][_0x9a56('0x46')][_0x9a56('0x47')](',');var _0x1a81ec={};_0x1a81ec[_0x1a15d9[0x0]]={'$gte':moment(_0x1a15d9[0x1])[_0x9a56('0x48')]('YYYY-MM-DD\x20HH:mm:ss')};_0x51021f[_0x9a56('0x42')]=_['merge'](_0x51021f[_0x9a56('0x42')],_0x1a81ec);}_0x51021f=_[_0x9a56('0x30')]({},_0x51021f,_0x1e52c7[_0x9a56('0x49')]);return db[_0x9a56('0x3d')]['count']({'where':_0x51021f['where']})['then'](function(_0x18d8f2){_0x324243[_0x9a56('0x15')]=_0x18d8f2;if(_0x1e52c7['query'][_0x9a56('0x2e')]){_0x51021f[_0x9a56('0x2f')]=[{'all':!![]}];}return db[_0x9a56('0x3d')]['findAll'](_0x51021f);})['then'](function(_0x29abb6){_0x324243[_0x9a56('0x4a')]=_0x29abb6;return _0x324243;});}})[_0x9a56('0x32')](respondWithFilteredResult(_0x293646,_0x51021f))['catch'](handleError(_0x293646,null));};exports['addTags']=function(_0x5d6b08,_0x50dd2a){return db[_0x9a56('0x31')]['find']({'where':{'id':_0x5d6b08[_0x9a56('0x26')]['id']}})['then'](handleEntityNotFound(_0x50dd2a,null))[_0x9a56('0x32')](function(_0x433b1d){if(_0x433b1d){return _0x433b1d['setTags'](_0x5d6b08[_0x9a56('0x35')][_0x9a56('0x3a')],_[_0x9a56('0x3b')](_0x5d6b08[_0x9a56('0x35')],[_0x9a56('0x3a'),'id'])||{})[_0x9a56('0x4b')](function(){return db[_0x9a56('0x4c')][_0x9a56('0x22')]({'attributes':['id',_0x9a56('0x1a'),_0x9a56('0x4d')],'where':{'id':_0x5d6b08['body']['ids']}});})[_0x9a56('0x32')](function(_0x2a65ca){socket['emit'](_0x9a56('0x4e'),{'id':Number(_0x5d6b08[_0x9a56('0x26')]['id']),'tags':_0x2a65ca||[]});return{'id':Number(_0x5d6b08[_0x9a56('0x26')]['id']),'tags':_0x2a65ca||[]};});}})['then'](respondWithResult(_0x50dd2a,null))[_0x9a56('0x24')](handleError(_0x50dd2a,null));};exports[_0x9a56('0x4f')]=function(_0x5b16ba,_0x33d9a1){return db[_0x9a56('0x31')][_0x9a56('0x36')]({'where':{'id':_0x5b16ba['params']['id']}})['then'](handleEntityNotFound(_0x33d9a1,null))[_0x9a56('0x32')](function(_0x3f2f09){if(_0x3f2f09){return _0x3f2f09['removeTags'](_0x5b16ba['query']['ids']);}})[_0x9a56('0x32')](respondWithStatusCode(_0x33d9a1,null))[_0x9a56('0x24')](handleError(_0x33d9a1,null));};exports['download']=function(_0x2446c6,_0x3d28c0){var _0x4b9bc1=moment()['unix']()['toString']();var _0xf57583=path[_0x9a56('0x50')](config[_0x9a56('0x51')],'server',_0x9a56('0x52'),_0x9a56('0x53'));var _0x21bfb7=path[_0x9a56('0x50')](config['root'],'server','files','attachments');var _0x3912e1=path['join'](_0xf57583,_0x4b9bc1);var _0x5b9b33=util['format'](_0x9a56('0x54'),_0x2446c6[_0x9a56('0x26')]['id'],_0x4b9bc1);var _0x327b52=path['join'](_0xf57583,_0x5b9b33);var _0x267c4a=[];_0x267c4a[_0x9a56('0x55')]({'model':db['Attachment'],'as':_0x9a56('0x56'),'raw':!![]});var _0x5549e0=[{'model':db[_0x9a56('0x3d')],'as':_0x9a56('0x57'),'attributes':['id','body',_0x9a56('0x58')],'include':_0x267c4a}];return db['FaxInteraction'][_0x9a56('0x36')]({'where':{'id':_0x2446c6[_0x9a56('0x26')]['id']},'include':_0x5549e0})[_0x9a56('0x32')](handleEntityNotFound(_0x3d28c0,null))[_0x9a56('0x32')](function(_0x1e3bcb){if(_0x1e3bcb&&_0x1e3bcb['Messages']){var _0x23bb8c=_0x1e3bcb['get']({'plain':!![]});fs[_0x9a56('0x59')](_0x3912e1);for(var _0x2361f0=0x0;_0x2361f0<_0x23bb8c['Messages']['length'];_0x2361f0++){var _0x598337=_0x23bb8c[_0x9a56('0x57')][_0x2361f0][_0x9a56('0x56')];if(_0x598337){var _0x37d9a1=path['join'](_0x21bfb7,_0x598337['basename']);if(fs['existsSync'](_0x37d9a1)){fs[_0x9a56('0x5a')](_0x37d9a1)['pipe'](fs[_0x9a56('0x5b')](path[_0x9a56('0x50')](_0x3912e1,_0x598337[_0x9a56('0x5c')])));}}}return BPromise[_0x9a56('0x5d')]()['then'](function(){return new BPromise(function(_0x4c1bfb,_0xd7de2c){zipdir(_0x3912e1,{'saveTo':_0x327b52},function(_0x4ab359,_0x5befaf){if(_0x4ab359)return _0xd7de2c(_0x4ab359);return _0x4c1bfb(_0x5befaf);});})[_0x9a56('0x32')](function(){return new BPromise(function(_0x2642a2,_0x5d1142){rimraf(_0x3912e1,function(_0x33e6f7){if(_0x33e6f7)_0x5d1142(_0x33e6f7);return _0x2642a2();});});})[_0x9a56('0x32')](function(){return _0x3d28c0[_0x9a56('0x5e')](_0x327b52,_0x5b9b33,function(_0xa7d369){if(_0xa7d369){console[_0x9a56('0x5f')](_0x9a56('0x60'),_0xa7d369);}else{fs[_0x9a56('0x61')](_0x327b52);}});});});}else{return _0x3d28c0['sendStatus'](0xc8);}})['catch'](handleError(_0x3d28c0,null));};