7f40aeb5b73352a7fd5269a4ca05b0f37d134861
[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 _0x4e24=['merge','$gte','split','format','FaxMessage','count','include','rows','addTags','setTags','Tag','color','emit','faxInteractionTags:save','removeTags','download','toString','join','root','server','files','tmp','attachments','transcript-%d-%s.zip','push','Attachment','Messages','mkdirSync','basename','createReadStream','pipe','createWriteStream','log','err','unlinkSync','sendStatus','zip-dir','moment','bluebird','util','path','lodash','../../components/interaction/service','../../components/parsers/qs','../../config/logger','api','redis','localhost','./faxInteraction.socket','status','end','offset','undefined','limit','set','Content-Range','update','then','destroy','stack','name','send','index','map','rawAttributes','fieldName','type','getOptions','findAll','query','user','model','keys','FaxInteraction','filters','intersection','attributes','fields','length','includeAll','find','create','body','catch','params','describe','addMessage','ids','omit','getMessages','findOne','hasOwnProperty','nolimit','order','sort','where','FaxInteractionId','filter'];(function(_0x224f65,_0x4750bf){var _0x3f921c=function(_0x1b5f64){while(--_0x1b5f64){_0x224f65['push'](_0x224f65['shift']());}};_0x3f921c(++_0x4750bf);}(_0x4e24,0x86));var _0x44e2=function(_0x413286,_0x1b849a){_0x413286=_0x413286-0x0;var _0x45dd5e=_0x4e24[_0x413286];return _0x45dd5e;};'use strict';var rimraf=require('rimraf');var zipdir=require(_0x44e2('0x0'));var moment=require(_0x44e2('0x1'));var BPromise=require(_0x44e2('0x2'));var util=require(_0x44e2('0x3'));var path=require(_0x44e2('0x4'));var fs=require('fs');var _=require(_0x44e2('0x5'));var Redis=require('ioredis');var interaction=require(_0x44e2('0x6'));var qs=require(_0x44e2('0x7'));var logger=require(_0x44e2('0x8'))(_0x44e2('0x9'));var config=require('../../config/environment');var db=require('../../mysqldb')['db'];config[_0x44e2('0xa')]=_['defaults'](config[_0x44e2('0xa')],{'host':_0x44e2('0xb'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x44e2('0xa')]));require(_0x44e2('0xc'))['register'](socket);function respondWithStatusCode(_0x1dd92f,_0x224fb5){_0x224fb5=_0x224fb5||0xcc;return function(_0x3e5544){if(_0x3e5544){return _0x1dd92f['sendStatus'](_0x224fb5);}return _0x1dd92f[_0x44e2('0xd')](_0x224fb5)[_0x44e2('0xe')]();};}function respondWithResult(_0x2143dd,_0x59e5d2){_0x59e5d2=_0x59e5d2||0xc8;return function(_0x32e281){if(_0x32e281){return _0x2143dd[_0x44e2('0xd')](_0x59e5d2)['json'](_0x32e281);}};}function respondWithFilteredResult(_0x584309,_0x48fd14){return function(_0x5b45f2){if(_0x5b45f2){var _0x28dd5f=typeof _0x48fd14[_0x44e2('0xf')]===_0x44e2('0x10')&&typeof _0x48fd14['limit']===_0x44e2('0x10');var _0x37a031=_0x5b45f2['count'];var _0xec5619=_0x28dd5f?0x0:_0x48fd14[_0x44e2('0xf')];var _0x82ab8c=_0x28dd5f?_0x5b45f2['count']:_0x48fd14[_0x44e2('0xf')]+_0x48fd14[_0x44e2('0x11')];var _0x51b4fe;if(_0x82ab8c>=_0x37a031){_0x82ab8c=_0x37a031;_0x51b4fe=0xc8;}else{_0x51b4fe=0xce;}_0x584309[_0x44e2('0xd')](_0x51b4fe);return _0x584309[_0x44e2('0x12')](_0x44e2('0x13'),_0xec5619+'-'+_0x82ab8c+'/'+_0x37a031)['json'](_0x5b45f2);}return null;};}function saveUpdates(_0xe76b64){return function(_0x5c0b96){if(_0x5c0b96){return _0x5c0b96[_0x44e2('0x14')](_0xe76b64)[_0x44e2('0x15')](function(_0x393d73){return _0x393d73;});}return null;};}function removeEntity(_0x4b3518){return function(_0x4fa22c){if(_0x4fa22c){return _0x4fa22c[_0x44e2('0x16')]()[_0x44e2('0x15')](function(){_0x4b3518[_0x44e2('0xd')](0xcc)['end']();});}};}function handleEntityNotFound(_0x17cf5a){return function(_0xc71f72){if(!_0xc71f72){_0x17cf5a['sendStatus'](0x194);}return _0xc71f72;};}function handleError(_0x2f789d,_0x110858){_0x110858=_0x110858||0x1f4;return function(_0x5cafd3){logger['error'](_0x5cafd3[_0x44e2('0x17')]);if(_0x5cafd3[_0x44e2('0x18')]){delete _0x5cafd3[_0x44e2('0x18')];}_0x2f789d['status'](_0x110858)[_0x44e2('0x19')](_0x5cafd3);};}exports[_0x44e2('0x1a')]=function(_0x2facda,_0x3df5ed){var _0x4701b5={};var _0xa585f2=_[_0x44e2('0x1b')](db['FaxInteraction'][_0x44e2('0x1c')],function(_0x320f09){return{'name':_0x320f09[_0x44e2('0x1d')],'type':_0x320f09[_0x44e2('0x1e')]['key']};});_0x4701b5=qs[_0x44e2('0x1f')](_0xa585f2,_0x2facda);return interaction[_0x44e2('0x20')]('fax',_0x2facda[_0x44e2('0x21')],_0x2facda[_0x44e2('0x22')],_0x4701b5,_0xa585f2)[_0x44e2('0x15')](respondWithFilteredResult(_0x3df5ed,_0x4701b5))['catch'](handleError(_0x3df5ed,null));};exports['show']=function(_0x597c98,_0x246992){var _0x4dfe06={'raw':![],'where':{'id':_0x597c98['params']['id']}},_0x5dc2ab={};_0x5dc2ab[_0x44e2('0x23')]=_[_0x44e2('0x24')](db[_0x44e2('0x25')][_0x44e2('0x1c')]);_0x5dc2ab[_0x44e2('0x21')]=_['keys'](_0x597c98[_0x44e2('0x21')]);_0x5dc2ab[_0x44e2('0x26')]=_[_0x44e2('0x27')](_0x5dc2ab['model'],_0x5dc2ab['query']);_0x4dfe06[_0x44e2('0x28')]=_[_0x44e2('0x27')](_0x5dc2ab[_0x44e2('0x23')],qs[_0x44e2('0x29')](_0x597c98[_0x44e2('0x21')][_0x44e2('0x29')]));_0x4dfe06[_0x44e2('0x28')]=_0x4dfe06[_0x44e2('0x28')][_0x44e2('0x2a')]?_0x4dfe06[_0x44e2('0x28')]:_0x5dc2ab['model'];if(_0x597c98[_0x44e2('0x21')][_0x44e2('0x2b')]){_0x4dfe06['include']=[{'all':!![]}];}_0x4dfe06=_['merge']({},_0x4dfe06,_0x597c98['options']);return db[_0x44e2('0x25')][_0x44e2('0x2c')](_0x4dfe06)['then'](handleEntityNotFound(_0x246992,null))[_0x44e2('0x15')](respondWithResult(_0x246992,null))['catch'](handleError(_0x246992,null));};exports[_0x44e2('0x2d')]=function(_0x150c02,_0x1961ff){return db[_0x44e2('0x25')][_0x44e2('0x2d')](_0x150c02[_0x44e2('0x2e')],{})[_0x44e2('0x15')](respondWithResult(_0x1961ff,0xc9))[_0x44e2('0x2f')](handleError(_0x1961ff,null));};exports[_0x44e2('0x14')]=function(_0x46a444,_0x3dbf6f){if(_0x46a444[_0x44e2('0x2e')]['id']){delete _0x46a444['body']['id'];}return db[_0x44e2('0x25')][_0x44e2('0x2c')]({'where':{'id':_0x46a444[_0x44e2('0x30')]['id']}})[_0x44e2('0x15')](handleEntityNotFound(_0x3dbf6f,null))[_0x44e2('0x15')](saveUpdates(_0x46a444[_0x44e2('0x2e')],null))[_0x44e2('0x15')](respondWithResult(_0x3dbf6f,null))[_0x44e2('0x2f')](handleError(_0x3dbf6f,null));};exports[_0x44e2('0x16')]=function(_0x5b7fa5,_0x2637bc){return db[_0x44e2('0x25')]['find']({'where':{'id':_0x5b7fa5['params']['id']}})[_0x44e2('0x15')](handleEntityNotFound(_0x2637bc,null))[_0x44e2('0x15')](removeEntity(_0x2637bc,null))[_0x44e2('0x2f')](handleError(_0x2637bc,null));};exports[_0x44e2('0x31')]=function(_0x140903,_0x4bd6f2){return db[_0x44e2('0x25')][_0x44e2('0x31')]()[_0x44e2('0x15')](respondWithResult(_0x4bd6f2,null))['catch'](handleError(_0x4bd6f2,null));};exports['addMessage']=function(_0x5a98c7,_0x4d7da6){return db['FaxMessage'][_0x44e2('0x2c')]({'where':{'id':_0x5a98c7[_0x44e2('0x30')]['id']}})[_0x44e2('0x15')](handleEntityNotFound(_0x4d7da6,null))[_0x44e2('0x15')](function(_0x1eaa85){if(_0x1eaa85){return _0x1eaa85[_0x44e2('0x32')](_0x5a98c7[_0x44e2('0x2e')][_0x44e2('0x33')],_[_0x44e2('0x34')](_0x5a98c7[_0x44e2('0x2e')],[_0x44e2('0x33'),'id'])||{});}})[_0x44e2('0x15')](respondWithResult(_0x4d7da6,null))[_0x44e2('0x2f')](handleError(_0x4d7da6,null));};exports[_0x44e2('0x35')]=function(_0x16b086,_0x5b003e){var _0x2e58cb={'raw':![],'where':{}};var _0x530690={};var _0x41f5af={'count':0x0,'rows':[]};return db[_0x44e2('0x25')][_0x44e2('0x36')]({'where':{'id':_0x16b086[_0x44e2('0x30')]['id']}})[_0x44e2('0x15')](handleEntityNotFound(_0x5b003e,null))[_0x44e2('0x15')](function(_0x472bd5){if(_0x472bd5){_0x530690[_0x44e2('0x23')]=_[_0x44e2('0x24')](db['FaxMessage'][_0x44e2('0x1c')]);_0x530690[_0x44e2('0x21')]=_['keys'](_0x16b086[_0x44e2('0x21')]);_0x530690[_0x44e2('0x26')]=_[_0x44e2('0x27')](_0x530690['model'],_0x530690[_0x44e2('0x21')]);_0x2e58cb[_0x44e2('0x28')]=_[_0x44e2('0x27')](_0x530690['model'],qs[_0x44e2('0x29')](_0x16b086[_0x44e2('0x21')][_0x44e2('0x29')]));_0x2e58cb[_0x44e2('0x28')]=_0x2e58cb[_0x44e2('0x28')]['length']?_0x2e58cb[_0x44e2('0x28')]:_0x530690[_0x44e2('0x23')];if(!_0x16b086[_0x44e2('0x21')][_0x44e2('0x37')](_0x44e2('0x38'))){_0x2e58cb[_0x44e2('0x11')]=qs['limit'](_0x16b086['query'][_0x44e2('0x11')]);_0x2e58cb['offset']=qs['offset'](_0x16b086['query'][_0x44e2('0xf')]);}_0x2e58cb[_0x44e2('0x39')]=qs[_0x44e2('0x3a')](_0x16b086[_0x44e2('0x21')]['sort']);_0x2e58cb[_0x44e2('0x3b')]=qs['filters'](_['pick'](_0x16b086['query'],_0x530690[_0x44e2('0x26')]));_0x2e58cb[_0x44e2('0x3b')][_0x44e2('0x3c')]=_0x472bd5['id'];if(_0x16b086[_0x44e2('0x21')][_0x44e2('0x3d')]){_0x2e58cb[_0x44e2('0x3b')]=_[_0x44e2('0x3e')](_0x2e58cb[_0x44e2('0x3b')],{'$or':_[_0x44e2('0x1b')](_0x2e58cb[_0x44e2('0x28')],function(_0x363944){var _0x5b54f5={};_0x5b54f5[_0x363944]={'$like':'%'+_0x16b086[_0x44e2('0x21')][_0x44e2('0x3d')]+'%'};return _0x5b54f5;})});}if(_0x16b086[_0x44e2('0x21')][_0x44e2('0x3f')]){var _0x1feafa=_0x16b086['query']['$gte'][_0x44e2('0x40')](',');var _0x4b1995={};_0x4b1995[_0x1feafa[0x0]]={'$gte':moment(_0x1feafa[0x1])[_0x44e2('0x41')]('YYYY-MM-DD\x20HH:mm:ss')};_0x2e58cb[_0x44e2('0x3b')]=_[_0x44e2('0x3e')](_0x2e58cb[_0x44e2('0x3b')],_0x4b1995);}_0x2e58cb=_[_0x44e2('0x3e')]({},_0x2e58cb,_0x16b086['options']);return db[_0x44e2('0x42')]['count']({'where':_0x2e58cb[_0x44e2('0x3b')]})[_0x44e2('0x15')](function(_0x2d9656){_0x41f5af[_0x44e2('0x43')]=_0x2d9656;if(_0x16b086[_0x44e2('0x21')]['includeAll']){_0x2e58cb[_0x44e2('0x44')]=[{'all':!![]}];}return db['FaxMessage'][_0x44e2('0x20')](_0x2e58cb);})[_0x44e2('0x15')](function(_0x1026b8){_0x41f5af[_0x44e2('0x45')]=_0x1026b8;return _0x41f5af;});}})['then'](respondWithFilteredResult(_0x5b003e,_0x2e58cb))[_0x44e2('0x2f')](handleError(_0x5b003e,null));};exports[_0x44e2('0x46')]=function(_0x10b802,_0x1e4c83){return db[_0x44e2('0x25')][_0x44e2('0x2c')]({'where':{'id':_0x10b802[_0x44e2('0x30')]['id']}})[_0x44e2('0x15')](handleEntityNotFound(_0x1e4c83,null))[_0x44e2('0x15')](function(_0x3d5c3f){if(_0x3d5c3f){return _0x3d5c3f[_0x44e2('0x47')](_0x10b802[_0x44e2('0x2e')][_0x44e2('0x33')],_[_0x44e2('0x34')](_0x10b802[_0x44e2('0x2e')],[_0x44e2('0x33'),'id'])||{})['spread'](function(){return db[_0x44e2('0x48')][_0x44e2('0x20')]({'attributes':['id','name',_0x44e2('0x49')],'where':{'id':_0x10b802[_0x44e2('0x2e')][_0x44e2('0x33')]}});})[_0x44e2('0x15')](function(_0x22e8d8){socket[_0x44e2('0x4a')](_0x44e2('0x4b'),{'id':Number(_0x10b802[_0x44e2('0x30')]['id']),'tags':_0x22e8d8||[]});return{'id':Number(_0x10b802[_0x44e2('0x30')]['id']),'tags':_0x22e8d8||[]};});}})['then'](respondWithResult(_0x1e4c83,null))[_0x44e2('0x2f')](handleError(_0x1e4c83,null));};exports[_0x44e2('0x4c')]=function(_0x3dae52,_0x476c16){return db[_0x44e2('0x25')][_0x44e2('0x2c')]({'where':{'id':_0x3dae52[_0x44e2('0x30')]['id']}})[_0x44e2('0x15')](handleEntityNotFound(_0x476c16,null))['then'](function(_0x42fd07){if(_0x42fd07){return _0x42fd07[_0x44e2('0x4c')](_0x3dae52['query'][_0x44e2('0x33')]);}})['then'](respondWithStatusCode(_0x476c16,null))['catch'](handleError(_0x476c16,null));};exports[_0x44e2('0x4d')]=function(_0x1d4e78,_0x1fa0bf){var _0x5f0073=moment()['unix']()[_0x44e2('0x4e')]();var _0x385d02=path[_0x44e2('0x4f')](config[_0x44e2('0x50')],_0x44e2('0x51'),_0x44e2('0x52'),_0x44e2('0x53'));var _0x29ecb3=path[_0x44e2('0x4f')](config[_0x44e2('0x50')],'server','files',_0x44e2('0x54'));var _0x498a47=path['join'](_0x385d02,_0x5f0073);var _0x450cd1=util[_0x44e2('0x41')](_0x44e2('0x55'),_0x1d4e78[_0x44e2('0x30')]['id'],_0x5f0073);var _0x89c8ff=path['join'](_0x385d02,_0x450cd1);var _0x1ec246=[];_0x1ec246[_0x44e2('0x56')]({'model':db['Attachment'],'as':_0x44e2('0x57'),'raw':!![]});var _0xc02604=[{'model':db[_0x44e2('0x42')],'as':_0x44e2('0x58'),'attributes':['id',_0x44e2('0x2e'),'createdAt'],'include':_0x1ec246}];return db['FaxInteraction']['find']({'where':{'id':_0x1d4e78[_0x44e2('0x30')]['id']},'include':_0xc02604})[_0x44e2('0x15')](handleEntityNotFound(_0x1fa0bf,null))[_0x44e2('0x15')](function(_0xd5c2c4){if(_0xd5c2c4&&_0xd5c2c4[_0x44e2('0x58')]){var _0x2f519b=_0xd5c2c4['get']({'plain':!![]});fs[_0x44e2('0x59')](_0x498a47);for(var _0x10c842=0x0;_0x10c842<_0x2f519b['Messages'][_0x44e2('0x2a')];_0x10c842++){var _0x197272=_0x2f519b[_0x44e2('0x58')][_0x10c842][_0x44e2('0x57')];if(_0x197272){var _0x208e2c=path[_0x44e2('0x4f')](_0x29ecb3,_0x197272[_0x44e2('0x5a')]);if(fs['existsSync'](_0x208e2c)){fs[_0x44e2('0x5b')](_0x208e2c)[_0x44e2('0x5c')](fs[_0x44e2('0x5d')](path[_0x44e2('0x4f')](_0x498a47,_0x197272[_0x44e2('0x5a')])));}}}return BPromise['resolve']()['then'](function(){return new BPromise(function(_0x159944,_0x54b19a){zipdir(_0x498a47,{'saveTo':_0x89c8ff},function(_0x27594f,_0x4d772d){if(_0x27594f)return _0x54b19a(_0x27594f);return _0x159944(_0x4d772d);});})['then'](function(){return new BPromise(function(_0x3202c0,_0x3769bf){rimraf(_0x498a47,function(_0x44fa36){if(_0x44fa36)_0x3769bf(_0x44fa36);return _0x3202c0();});});})['then'](function(){return _0x1fa0bf[_0x44e2('0x4d')](_0x89c8ff,_0x450cd1,function(_0x50613d){if(_0x50613d){console[_0x44e2('0x5e')](_0x44e2('0x5f'),_0x50613d);}else{fs[_0x44e2('0x60')](_0x89c8ff);}});});});}else{return _0x1fa0bf[_0x44e2('0x61')](0xc8);}})[_0x44e2('0x2f')](handleError(_0x1fa0bf,null));};