7e002835b28195d257bd82e0f1661122469f3cac
[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 _0x6628=['map','FaxInteraction','rawAttributes','fieldName','key','getOptions','findAll','query','user','show','params','model','keys','filters','attributes','fields','include','merge','options','find','create','body','catch','describe','addMessage','FaxMessage','omit','ids','getMessages','findOne','intersection','nolimit','order','sort','where','pick','FaxInteractionId','filter','$gte','split','format','includeAll','rows','setTags','spread','Tag','faxInteractionTags:save','removeTags','download','unix','toString','join','root','files','tmp','server','transcript-%d-%s.zip','push','Attachment','Messages','createdAt','get','length','basename','existsSync','createReadStream','pipe','createWriteStream','resolve','log','err','unlinkSync','rimraf','zip-dir','moment','bluebird','util','path','lodash','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../mysqldb','redis','defaults','localhost','./faxInteraction.socket','register','json','offset','undefined','limit','count','status','set','Content-Range','update','then','destroy','end','sendStatus','stack','name','send'];(function(_0x40294e,_0x1a46a5){var _0x3d002c=function(_0x166607){while(--_0x166607){_0x40294e['push'](_0x40294e['shift']());}};_0x3d002c(++_0x1a46a5);}(_0x6628,0x11c));var _0x8662=function(_0x15a8bc,_0x38dc44){_0x15a8bc=_0x15a8bc-0x0;var _0x523062=_0x6628[_0x15a8bc];return _0x523062;};'use strict';var rimraf=require(_0x8662('0x0'));var zipdir=require(_0x8662('0x1'));var moment=require(_0x8662('0x2'));var BPromise=require(_0x8662('0x3'));var util=require(_0x8662('0x4'));var path=require(_0x8662('0x5'));var fs=require('fs');var _=require(_0x8662('0x6'));var Redis=require(_0x8662('0x7'));var interaction=require('../../components/interaction/service');var qs=require(_0x8662('0x8'));var logger=require(_0x8662('0x9'))(_0x8662('0xa'));var config=require(_0x8662('0xb'));var db=require(_0x8662('0xc'))['db'];config[_0x8662('0xd')]=_[_0x8662('0xe')](config[_0x8662('0xd')],{'host':_0x8662('0xf'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x8662('0xd')]));require(_0x8662('0x10'))[_0x8662('0x11')](socket);function respondWithStatusCode(_0x54bd16,_0x3ae573){_0x3ae573=_0x3ae573||0xcc;return function(_0x4f7b46){if(_0x4f7b46){return _0x54bd16['sendStatus'](_0x3ae573);}return _0x54bd16['status'](_0x3ae573)['end']();};}function respondWithResult(_0x3d0bbe,_0x44a1f8){_0x44a1f8=_0x44a1f8||0xc8;return function(_0x3e73b5){if(_0x3e73b5){return _0x3d0bbe['status'](_0x44a1f8)[_0x8662('0x12')](_0x3e73b5);}};}function respondWithFilteredResult(_0xf4169b,_0x501bdf){return function(_0x4e76d2){if(_0x4e76d2){var _0x4330ed=typeof _0x501bdf[_0x8662('0x13')]===_0x8662('0x14')&&typeof _0x501bdf[_0x8662('0x15')]===_0x8662('0x14');var _0xf141a1=_0x4e76d2[_0x8662('0x16')];var _0x3806d5=_0x4330ed?0x0:_0x501bdf[_0x8662('0x13')];var _0x3b4b57=_0x4330ed?_0x4e76d2[_0x8662('0x16')]:_0x501bdf['offset']+_0x501bdf[_0x8662('0x15')];var _0x565eaa;if(_0x3b4b57>=_0xf141a1){_0x3b4b57=_0xf141a1;_0x565eaa=0xc8;}else{_0x565eaa=0xce;}_0xf4169b[_0x8662('0x17')](_0x565eaa);return _0xf4169b[_0x8662('0x18')](_0x8662('0x19'),_0x3806d5+'-'+_0x3b4b57+'/'+_0xf141a1)[_0x8662('0x12')](_0x4e76d2);}return null;};}function saveUpdates(_0x5a10a0){return function(_0x33ccb0){if(_0x33ccb0){return _0x33ccb0[_0x8662('0x1a')](_0x5a10a0)[_0x8662('0x1b')](function(_0x76407f){return _0x76407f;});}return null;};}function removeEntity(_0x5a60ca){return function(_0x269c58){if(_0x269c58){return _0x269c58[_0x8662('0x1c')]()[_0x8662('0x1b')](function(){_0x5a60ca[_0x8662('0x17')](0xcc)[_0x8662('0x1d')]();});}};}function handleEntityNotFound(_0x231836){return function(_0x5b62cb){if(!_0x5b62cb){_0x231836[_0x8662('0x1e')](0x194);}return _0x5b62cb;};}function handleError(_0x58ed7e,_0x358c96){_0x358c96=_0x358c96||0x1f4;return function(_0x2e16a3){logger['error'](_0x2e16a3[_0x8662('0x1f')]);if(_0x2e16a3[_0x8662('0x20')]){delete _0x2e16a3[_0x8662('0x20')];}_0x58ed7e[_0x8662('0x17')](_0x358c96)[_0x8662('0x21')](_0x2e16a3);};}exports['index']=function(_0x49ac8e,_0x32827f){var _0x370d25={};var _0x20cc0e=_[_0x8662('0x22')](db[_0x8662('0x23')][_0x8662('0x24')],function(_0x1d72e0){return{'name':_0x1d72e0[_0x8662('0x25')],'type':_0x1d72e0['type'][_0x8662('0x26')]};});_0x370d25=qs[_0x8662('0x27')](_0x20cc0e,_0x49ac8e);return interaction[_0x8662('0x28')]('fax',_0x49ac8e[_0x8662('0x29')],_0x49ac8e[_0x8662('0x2a')],_0x370d25,_0x20cc0e)['then'](respondWithFilteredResult(_0x32827f,_0x370d25))['catch'](handleError(_0x32827f,null));};exports[_0x8662('0x2b')]=function(_0x22ae38,_0x180c2b){var _0x276aaf={'raw':![],'where':{'id':_0x22ae38[_0x8662('0x2c')]['id']}},_0x4fc19e={};_0x4fc19e[_0x8662('0x2d')]=_[_0x8662('0x2e')](db[_0x8662('0x23')][_0x8662('0x24')]);_0x4fc19e[_0x8662('0x29')]=_[_0x8662('0x2e')](_0x22ae38[_0x8662('0x29')]);_0x4fc19e[_0x8662('0x2f')]=_['intersection'](_0x4fc19e[_0x8662('0x2d')],_0x4fc19e[_0x8662('0x29')]);_0x276aaf[_0x8662('0x30')]=_['intersection'](_0x4fc19e[_0x8662('0x2d')],qs[_0x8662('0x31')](_0x22ae38[_0x8662('0x29')][_0x8662('0x31')]));_0x276aaf['attributes']=_0x276aaf[_0x8662('0x30')]['length']?_0x276aaf[_0x8662('0x30')]:_0x4fc19e[_0x8662('0x2d')];if(_0x22ae38[_0x8662('0x29')]['includeAll']){_0x276aaf[_0x8662('0x32')]=[{'all':!![]}];}_0x276aaf=_[_0x8662('0x33')]({},_0x276aaf,_0x22ae38[_0x8662('0x34')]);return db['FaxInteraction'][_0x8662('0x35')](_0x276aaf)['then'](handleEntityNotFound(_0x180c2b,null))[_0x8662('0x1b')](respondWithResult(_0x180c2b,null))['catch'](handleError(_0x180c2b,null));};exports['create']=function(_0x30410b,_0x1e2da1){return db[_0x8662('0x23')][_0x8662('0x36')](_0x30410b[_0x8662('0x37')],{})[_0x8662('0x1b')](respondWithResult(_0x1e2da1,0xc9))[_0x8662('0x38')](handleError(_0x1e2da1,null));};exports[_0x8662('0x1a')]=function(_0x18c767,_0x3e1c34){if(_0x18c767[_0x8662('0x37')]['id']){delete _0x18c767[_0x8662('0x37')]['id'];}return db[_0x8662('0x23')][_0x8662('0x35')]({'where':{'id':_0x18c767[_0x8662('0x2c')]['id']}})[_0x8662('0x1b')](handleEntityNotFound(_0x3e1c34,null))['then'](saveUpdates(_0x18c767['body'],null))[_0x8662('0x1b')](respondWithResult(_0x3e1c34,null))['catch'](handleError(_0x3e1c34,null));};exports[_0x8662('0x1c')]=function(_0x556136,_0x4fca12){return db['FaxInteraction'][_0x8662('0x35')]({'where':{'id':_0x556136['params']['id']}})[_0x8662('0x1b')](handleEntityNotFound(_0x4fca12,null))[_0x8662('0x1b')](removeEntity(_0x4fca12,null))[_0x8662('0x38')](handleError(_0x4fca12,null));};exports['describe']=function(_0x2d160a,_0x24d8f7){return db[_0x8662('0x23')][_0x8662('0x39')]()[_0x8662('0x1b')](respondWithResult(_0x24d8f7,null))['catch'](handleError(_0x24d8f7,null));};exports[_0x8662('0x3a')]=function(_0x21bd08,_0x1169d7){return db[_0x8662('0x3b')][_0x8662('0x35')]({'where':{'id':_0x21bd08[_0x8662('0x2c')]['id']}})[_0x8662('0x1b')](handleEntityNotFound(_0x1169d7,null))[_0x8662('0x1b')](function(_0x5d42ac){if(_0x5d42ac){return _0x5d42ac['addMessage'](_0x21bd08[_0x8662('0x37')]['ids'],_[_0x8662('0x3c')](_0x21bd08[_0x8662('0x37')],[_0x8662('0x3d'),'id'])||{});}})[_0x8662('0x1b')](respondWithResult(_0x1169d7,null))[_0x8662('0x38')](handleError(_0x1169d7,null));};exports[_0x8662('0x3e')]=function(_0x1089b3,_0x47e8d6){var _0x161969={'raw':![],'where':{}};var _0x130782={};var _0x126982={'count':0x0,'rows':[]};return db[_0x8662('0x23')][_0x8662('0x3f')]({'where':{'id':_0x1089b3[_0x8662('0x2c')]['id']}})[_0x8662('0x1b')](handleEntityNotFound(_0x47e8d6,null))['then'](function(_0x1199aa){if(_0x1199aa){_0x130782[_0x8662('0x2d')]=_[_0x8662('0x2e')](db['FaxMessage'][_0x8662('0x24')]);_0x130782[_0x8662('0x29')]=_[_0x8662('0x2e')](_0x1089b3[_0x8662('0x29')]);_0x130782['filters']=_['intersection'](_0x130782['model'],_0x130782['query']);_0x161969[_0x8662('0x30')]=_[_0x8662('0x40')](_0x130782[_0x8662('0x2d')],qs[_0x8662('0x31')](_0x1089b3[_0x8662('0x29')]['fields']));_0x161969['attributes']=_0x161969['attributes']['length']?_0x161969[_0x8662('0x30')]:_0x130782['model'];if(!_0x1089b3[_0x8662('0x29')]['hasOwnProperty'](_0x8662('0x41'))){_0x161969[_0x8662('0x15')]=qs['limit'](_0x1089b3['query'][_0x8662('0x15')]);_0x161969[_0x8662('0x13')]=qs['offset'](_0x1089b3[_0x8662('0x29')][_0x8662('0x13')]);}_0x161969[_0x8662('0x42')]=qs[_0x8662('0x43')](_0x1089b3[_0x8662('0x29')][_0x8662('0x43')]);_0x161969[_0x8662('0x44')]=qs[_0x8662('0x2f')](_[_0x8662('0x45')](_0x1089b3[_0x8662('0x29')],_0x130782[_0x8662('0x2f')]));_0x161969[_0x8662('0x44')][_0x8662('0x46')]=_0x1199aa['id'];if(_0x1089b3[_0x8662('0x29')][_0x8662('0x47')]){_0x161969[_0x8662('0x44')]=_[_0x8662('0x33')](_0x161969['where'],{'$or':_[_0x8662('0x22')](_0x161969[_0x8662('0x30')],function(_0x290ad8){var _0x287478={};_0x287478[_0x290ad8]={'$like':'%'+_0x1089b3['query']['filter']+'%'};return _0x287478;})});}if(_0x1089b3[_0x8662('0x29')][_0x8662('0x48')]){var _0x6fdce2=_0x1089b3[_0x8662('0x29')][_0x8662('0x48')][_0x8662('0x49')](',');var _0x386b82={};_0x386b82[_0x6fdce2[0x0]]={'$gte':moment(_0x6fdce2[0x1])[_0x8662('0x4a')]('YYYY-MM-DD\x20HH:mm:ss')};_0x161969[_0x8662('0x44')]=_['merge'](_0x161969[_0x8662('0x44')],_0x386b82);}_0x161969=_['merge']({},_0x161969,_0x1089b3[_0x8662('0x34')]);return db[_0x8662('0x3b')][_0x8662('0x16')]({'where':_0x161969[_0x8662('0x44')]})[_0x8662('0x1b')](function(_0x254b35){_0x126982[_0x8662('0x16')]=_0x254b35;if(_0x1089b3[_0x8662('0x29')][_0x8662('0x4b')]){_0x161969[_0x8662('0x32')]=[{'all':!![]}];}return db[_0x8662('0x3b')]['findAll'](_0x161969);})[_0x8662('0x1b')](function(_0x3a6293){_0x126982[_0x8662('0x4c')]=_0x3a6293;return _0x126982;});}})[_0x8662('0x1b')](respondWithFilteredResult(_0x47e8d6,_0x161969))['catch'](handleError(_0x47e8d6,null));};exports['addTags']=function(_0x592c06,_0x5cbfb1){return db['FaxInteraction'][_0x8662('0x35')]({'where':{'id':_0x592c06[_0x8662('0x2c')]['id']}})['then'](handleEntityNotFound(_0x5cbfb1,null))['then'](function(_0x46e5cf){if(_0x46e5cf){return _0x46e5cf[_0x8662('0x4d')](_0x592c06['body']['ids'],_[_0x8662('0x3c')](_0x592c06[_0x8662('0x37')],[_0x8662('0x3d'),'id'])||{})[_0x8662('0x4e')](function(){return db[_0x8662('0x4f')][_0x8662('0x28')]({'attributes':['id',_0x8662('0x20'),'color'],'where':{'id':_0x592c06[_0x8662('0x37')][_0x8662('0x3d')]}});})[_0x8662('0x1b')](function(_0x28f781){socket['emit'](_0x8662('0x50'),{'id':Number(_0x592c06['params']['id']),'tags':_0x28f781||[]});return{'id':Number(_0x592c06[_0x8662('0x2c')]['id']),'tags':_0x28f781||[]};});}})[_0x8662('0x1b')](respondWithResult(_0x5cbfb1,null))[_0x8662('0x38')](handleError(_0x5cbfb1,null));};exports[_0x8662('0x51')]=function(_0x3596b3,_0x2bd7be){return db[_0x8662('0x23')]['find']({'where':{'id':_0x3596b3[_0x8662('0x2c')]['id']}})[_0x8662('0x1b')](handleEntityNotFound(_0x2bd7be,null))[_0x8662('0x1b')](function(_0x3da2c9){if(_0x3da2c9){return _0x3da2c9['removeTags'](_0x3596b3[_0x8662('0x29')][_0x8662('0x3d')]);}})[_0x8662('0x1b')](respondWithStatusCode(_0x2bd7be,null))['catch'](handleError(_0x2bd7be,null));};exports[_0x8662('0x52')]=function(_0xea644c,_0x1ad538){var _0x4c2a7d=moment()[_0x8662('0x53')]()[_0x8662('0x54')]();var _0x4b2db9=path[_0x8662('0x55')](config[_0x8662('0x56')],'server',_0x8662('0x57'),_0x8662('0x58'));var _0x65a742=path[_0x8662('0x55')](config[_0x8662('0x56')],_0x8662('0x59'),'files','attachments');var _0x3904dd=path[_0x8662('0x55')](_0x4b2db9,_0x4c2a7d);var _0x3588c5=util['format'](_0x8662('0x5a'),_0xea644c[_0x8662('0x2c')]['id'],_0x4c2a7d);var _0x2343e1=path[_0x8662('0x55')](_0x4b2db9,_0x3588c5);var _0x452b64=[];_0x452b64[_0x8662('0x5b')]({'model':db[_0x8662('0x5c')],'as':_0x8662('0x5c'),'raw':!![]});var _0x1d3f44=[{'model':db[_0x8662('0x3b')],'as':_0x8662('0x5d'),'attributes':['id',_0x8662('0x37'),_0x8662('0x5e')],'include':_0x452b64}];return db[_0x8662('0x23')][_0x8662('0x35')]({'where':{'id':_0xea644c[_0x8662('0x2c')]['id']},'include':_0x1d3f44})[_0x8662('0x1b')](handleEntityNotFound(_0x1ad538,null))[_0x8662('0x1b')](function(_0x52e12f){if(_0x52e12f&&_0x52e12f['Messages']){var _0x43ec64=_0x52e12f[_0x8662('0x5f')]({'plain':!![]});fs['mkdirSync'](_0x3904dd);for(var _0x2c84dc=0x0;_0x2c84dc<_0x43ec64[_0x8662('0x5d')][_0x8662('0x60')];_0x2c84dc++){var _0x5b15b7=_0x43ec64[_0x8662('0x5d')][_0x2c84dc]['Attachment'];if(_0x5b15b7){var _0x1b6eb9=path[_0x8662('0x55')](_0x65a742,_0x5b15b7[_0x8662('0x61')]);if(fs[_0x8662('0x62')](_0x1b6eb9)){fs[_0x8662('0x63')](_0x1b6eb9)[_0x8662('0x64')](fs[_0x8662('0x65')](path[_0x8662('0x55')](_0x3904dd,_0x5b15b7[_0x8662('0x61')])));}}}return BPromise[_0x8662('0x66')]()[_0x8662('0x1b')](function(){return new BPromise(function(_0xbb587d,_0x1893de){zipdir(_0x3904dd,{'saveTo':_0x2343e1},function(_0x571602,_0x4bc2fd){if(_0x571602)return _0x1893de(_0x571602);return _0xbb587d(_0x4bc2fd);});})[_0x8662('0x1b')](function(){return new BPromise(function(_0x330396,_0x5d8e1b){rimraf(_0x3904dd,function(_0xa80c42){if(_0xa80c42)_0x5d8e1b(_0xa80c42);return _0x330396();});});})[_0x8662('0x1b')](function(){return _0x1ad538[_0x8662('0x52')](_0x2343e1,_0x3588c5,function(_0x1b29c1){if(_0x1b29c1){console[_0x8662('0x67')](_0x8662('0x68'),_0x1b29c1);}else{fs[_0x8662('0x69')](_0x2343e1);}});});});}else{return _0x1ad538[_0x8662('0x1e')](0xc8);}})[_0x8662('0x38')](handleError(_0x1ad538,null));};