Built motion from commit e02f907f.|2.6.14
[motion2.git] / server / api / openchannelInteraction / openchannelInteraction.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 _0xd716=['offset','count','set','Content-Range','update','then','destroy','end','error','stack','name','send','index','OpenchannelInteraction','rawAttributes','fieldName','key','getOptions','findAll','openchannel','query','user','type','from','params','model','keys','filters','intersection','attributes','fields','options','find','create','body','catch','describe','OpenchannelMessage','addMessage','omit','getMessages','findOne','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','merge','includeAll','include','setTags','ids','spread','Tag','removeTags','download','unix','toString','join','root','server','tmp','User','fullname','firstName','push','Attachment','Messages','createdAt','direction','secret','read','OpenchannelAccount','Account','get','Owner','N.A.','closed','closedAt','disposition','threadId','Public','map','basename','existsSync','createReadStream','pipe','createWriteStream','out','Contact','lastName','renderFile','views','downloadInteraction.ejs','.pdf','Openchannel','createPdfFromHTML','Unable\x20to\x20delete\x20zip\x20file','unlinkSync','util','path','lodash','ioredis','../../components/interaction/service','../../components/export/pdf','../../config/logger','../../config/environment','../../mysqldb','redis','localhost','socket.io-emitter','./openchannelInteraction.socket','register','sendStatus','status','json','undefined','limit'];(function(_0x302866,_0x59a9cf){var _0x129112=function(_0x3bc39f){while(--_0x3bc39f){_0x302866['push'](_0x302866['shift']());}};_0x129112(++_0x59a9cf);}(_0xd716,0x1e1));var _0x6d71=function(_0x33f54b,_0x41df7d){_0x33f54b=_0x33f54b-0x0;var _0x191255=_0xd716[_0x33f54b];return _0x191255;};'use strict';var rimraf=require('rimraf');var zipdir=require('zip-dir');var moment=require('moment');var util=require(_0x6d71('0x0'));var path=require(_0x6d71('0x1'));var ejs=require('ejs');var fs=require('fs');var _=require(_0x6d71('0x2'));var Redis=require(_0x6d71('0x3'));var interaction=require(_0x6d71('0x4'));var qs=require('../../components/parsers/qs');var pdf=require(_0x6d71('0x5'));var logger=require(_0x6d71('0x6'))('api');var config=require(_0x6d71('0x7'));var db=require(_0x6d71('0x8'))['db'];config[_0x6d71('0x9')]=_['defaults'](config[_0x6d71('0x9')],{'host':_0x6d71('0xa'),'port':0x18eb});var socket=require(_0x6d71('0xb'))(new Redis(config['redis']));require(_0x6d71('0xc'))[_0x6d71('0xd')](socket);function respondWithStatusCode(_0x417485,_0x2a0120){_0x2a0120=_0x2a0120||0xcc;return function(_0x2efe08){if(_0x2efe08){return _0x417485[_0x6d71('0xe')](_0x2a0120);}return _0x417485[_0x6d71('0xf')](_0x2a0120)['end']();};}function respondWithResult(_0x36086e,_0xf5f8d8){_0xf5f8d8=_0xf5f8d8||0xc8;return function(_0x34bd92){if(_0x34bd92){return _0x36086e['status'](_0xf5f8d8)[_0x6d71('0x10')](_0x34bd92);}};}function respondWithFilteredResult(_0x362b11,_0x2b83f3){return function(_0x57c25d){if(_0x57c25d){var _0x643ce5=typeof _0x2b83f3['offset']===_0x6d71('0x11')&&typeof _0x2b83f3[_0x6d71('0x12')]==='undefined';var _0xb4fb0b=_0x57c25d['count'];var _0x48c7bb=_0x643ce5?0x0:_0x2b83f3[_0x6d71('0x13')];var _0x530850=_0x643ce5?_0x57c25d[_0x6d71('0x14')]:_0x2b83f3['offset']+_0x2b83f3[_0x6d71('0x12')];var _0x2b6818;if(_0x530850>=_0xb4fb0b){_0x530850=_0xb4fb0b;_0x2b6818=0xc8;}else{_0x2b6818=0xce;}_0x362b11[_0x6d71('0xf')](_0x2b6818);return _0x362b11[_0x6d71('0x15')](_0x6d71('0x16'),_0x48c7bb+'-'+_0x530850+'/'+_0xb4fb0b)[_0x6d71('0x10')](_0x57c25d);}return null;};}function saveUpdates(_0x563d17){return function(_0x4ed551){if(_0x4ed551){return _0x4ed551[_0x6d71('0x17')](_0x563d17)[_0x6d71('0x18')](function(_0x1184b9){return _0x1184b9;});}return null;};}function removeEntity(_0x4fbdc2){return function(_0x36611b){if(_0x36611b){return _0x36611b[_0x6d71('0x19')]()[_0x6d71('0x18')](function(){_0x4fbdc2['status'](0xcc)[_0x6d71('0x1a')]();});}};}function handleEntityNotFound(_0x202dcd){return function(_0x3d48b0){if(!_0x3d48b0){_0x202dcd[_0x6d71('0xe')](0x194);}return _0x3d48b0;};}function handleError(_0x1c38ae,_0x2d10b3){_0x2d10b3=_0x2d10b3||0x1f4;return function(_0x22b97a){logger[_0x6d71('0x1b')](_0x22b97a[_0x6d71('0x1c')]);if(_0x22b97a[_0x6d71('0x1d')]){delete _0x22b97a[_0x6d71('0x1d')];}_0x1c38ae[_0x6d71('0xf')](_0x2d10b3)[_0x6d71('0x1e')](_0x22b97a);};}exports[_0x6d71('0x1f')]=function(_0x499d55,_0x544cb5){var _0x1a5608={};var _0x51dc69=_['map'](db[_0x6d71('0x20')][_0x6d71('0x21')],function(_0x4f5a32){return{'name':_0x4f5a32[_0x6d71('0x22')],'type':_0x4f5a32['type'][_0x6d71('0x23')]};});_0x1a5608=qs[_0x6d71('0x24')](_0x51dc69,_0x499d55);return interaction[_0x6d71('0x25')](_0x6d71('0x26'),_0x499d55[_0x6d71('0x27')],_0x499d55[_0x6d71('0x28')],_0x1a5608,_0x51dc69)[_0x6d71('0x18')](respondWithFilteredResult(_0x544cb5,_0x1a5608))['catch'](handleError(_0x544cb5,null));};exports['show']=function(_0x4a2021,_0x4139a4){var _0x537733={};if(_0x4a2021[_0x6d71('0x27')][_0x6d71('0x29')]&&_0x4a2021['query'][_0x6d71('0x29')]===_0x6d71('0x2a')){_0x537733[_0x6d71('0x2a')]=_0x4a2021[_0x6d71('0x2b')]['id'];}else{_0x537733['id']=_0x4a2021['params']['id'];}var _0x35eeb9={'raw':![],'where':_0x537733},_0x106027={};_0x106027[_0x6d71('0x2c')]=_[_0x6d71('0x2d')](db[_0x6d71('0x20')][_0x6d71('0x21')]);_0x106027['query']=_[_0x6d71('0x2d')](_0x4a2021['query']);_0x106027[_0x6d71('0x2e')]=_[_0x6d71('0x2f')](_0x106027['model'],_0x106027[_0x6d71('0x27')]);_0x35eeb9[_0x6d71('0x30')]=_[_0x6d71('0x2f')](_0x106027[_0x6d71('0x2c')],qs[_0x6d71('0x31')](_0x4a2021['query'][_0x6d71('0x31')]));_0x35eeb9[_0x6d71('0x30')]=_0x35eeb9[_0x6d71('0x30')]['length']?_0x35eeb9[_0x6d71('0x30')]:_0x106027[_0x6d71('0x2c')];if(_0x4a2021['query']['includeAll']){_0x35eeb9['include']=[{'all':!![]}];}_0x35eeb9=_['merge']({},_0x35eeb9,_0x4a2021[_0x6d71('0x32')]);return db['OpenchannelInteraction'][_0x6d71('0x33')](_0x35eeb9)[_0x6d71('0x18')](handleEntityNotFound(_0x4139a4,null))[_0x6d71('0x18')](respondWithResult(_0x4139a4,null))['catch'](handleError(_0x4139a4,null));};exports[_0x6d71('0x34')]=function(_0x47d3ee,_0x20032a){return db[_0x6d71('0x20')][_0x6d71('0x34')](_0x47d3ee['body'],{})[_0x6d71('0x18')](respondWithResult(_0x20032a,0xc9))['catch'](handleError(_0x20032a,null));};exports[_0x6d71('0x17')]=function(_0x270ff4,_0x1f478f){if(_0x270ff4[_0x6d71('0x35')]['id']){delete _0x270ff4['body']['id'];}return db['OpenchannelInteraction'][_0x6d71('0x33')]({'where':{'id':_0x270ff4['params']['id']}})[_0x6d71('0x18')](handleEntityNotFound(_0x1f478f,null))[_0x6d71('0x18')](saveUpdates(_0x270ff4['body'],null))[_0x6d71('0x18')](respondWithResult(_0x1f478f,null))[_0x6d71('0x36')](handleError(_0x1f478f,null));};exports[_0x6d71('0x19')]=function(_0x5b3577,_0x5bb0a9){return db[_0x6d71('0x20')]['find']({'where':{'id':_0x5b3577[_0x6d71('0x2b')]['id']}})['then'](handleEntityNotFound(_0x5bb0a9,null))['then'](removeEntity(_0x5bb0a9,null))['catch'](handleError(_0x5bb0a9,null));};exports[_0x6d71('0x37')]=function(_0x537d24,_0x11a852){return db[_0x6d71('0x20')][_0x6d71('0x37')]()[_0x6d71('0x18')](respondWithResult(_0x11a852,null))[_0x6d71('0x36')](handleError(_0x11a852,null));};exports['addMessage']=function(_0x7603b1,_0x3c3d7b){return db[_0x6d71('0x38')][_0x6d71('0x33')]({'where':{'id':_0x7603b1[_0x6d71('0x2b')]['id']}})[_0x6d71('0x18')](handleEntityNotFound(_0x3c3d7b,null))[_0x6d71('0x18')](function(_0x66f58a){if(_0x66f58a){return _0x66f58a[_0x6d71('0x39')](_0x7603b1['body']['ids'],_[_0x6d71('0x3a')](_0x7603b1[_0x6d71('0x35')],['ids','id'])||{});}})['then'](respondWithResult(_0x3c3d7b,null))['catch'](handleError(_0x3c3d7b,null));};exports[_0x6d71('0x3b')]=function(_0x5a6cf7,_0x29d1c5){var _0x37bde9={'raw':![],'where':{}};var _0x351393={};var _0x4b8780={'count':0x0,'rows':[]};return db[_0x6d71('0x20')][_0x6d71('0x3c')]({'where':{'id':_0x5a6cf7['params']['id']}})[_0x6d71('0x18')](handleEntityNotFound(_0x29d1c5,null))[_0x6d71('0x18')](function(_0x1906c9){if(_0x1906c9){_0x351393['model']=_[_0x6d71('0x2d')](db[_0x6d71('0x38')][_0x6d71('0x21')]);_0x351393[_0x6d71('0x27')]=_['keys'](_0x5a6cf7[_0x6d71('0x27')]);_0x351393['filters']=_[_0x6d71('0x2f')](_0x351393['model'],_0x351393[_0x6d71('0x27')]);_0x37bde9['attributes']=_[_0x6d71('0x2f')](_0x351393['model'],qs[_0x6d71('0x31')](_0x5a6cf7[_0x6d71('0x27')][_0x6d71('0x31')]));_0x37bde9[_0x6d71('0x30')]=_0x37bde9[_0x6d71('0x30')][_0x6d71('0x3d')]?_0x37bde9[_0x6d71('0x30')]:_0x351393[_0x6d71('0x2c')];if(!_0x5a6cf7[_0x6d71('0x27')][_0x6d71('0x3e')](_0x6d71('0x3f'))){_0x37bde9[_0x6d71('0x12')]=qs[_0x6d71('0x12')](_0x5a6cf7[_0x6d71('0x27')][_0x6d71('0x12')]);_0x37bde9[_0x6d71('0x13')]=qs[_0x6d71('0x13')](_0x5a6cf7[_0x6d71('0x27')][_0x6d71('0x13')]);}_0x37bde9[_0x6d71('0x40')]=qs['sort'](_0x5a6cf7[_0x6d71('0x27')][_0x6d71('0x41')]);_0x37bde9[_0x6d71('0x42')]=qs[_0x6d71('0x2e')](_[_0x6d71('0x43')](_0x5a6cf7[_0x6d71('0x27')],_0x351393[_0x6d71('0x2e')]));_0x37bde9[_0x6d71('0x42')]['OpenchannelInteractionId']=_0x1906c9['id'];if(_0x5a6cf7[_0x6d71('0x27')][_0x6d71('0x44')]){_0x37bde9['where']=_['merge'](_0x37bde9['where'],{'$or':_['map'](_0x37bde9['attributes'],function(_0x2c317b){var _0x2b1208={};_0x2b1208[_0x2c317b]={'$like':'%'+_0x5a6cf7['query']['filter']+'%'};return _0x2b1208;})});}if(_0x5a6cf7['query'][_0x6d71('0x45')]){var _0x30bc5c=_0x5a6cf7[_0x6d71('0x27')][_0x6d71('0x45')][_0x6d71('0x46')](',');var _0x14d961={};_0x14d961[_0x30bc5c[0x0]]={'$gte':moment(_0x30bc5c[0x1])[_0x6d71('0x47')](_0x6d71('0x48'))};_0x37bde9[_0x6d71('0x42')]=_[_0x6d71('0x49')](_0x37bde9['where'],_0x14d961);}_0x37bde9=_[_0x6d71('0x49')]({},_0x37bde9,_0x5a6cf7['options']);return db['OpenchannelMessage'][_0x6d71('0x14')]({'where':_0x37bde9[_0x6d71('0x42')]})[_0x6d71('0x18')](function(_0x33ebb7){_0x4b8780['count']=_0x33ebb7;if(_0x5a6cf7['query'][_0x6d71('0x4a')]){_0x37bde9[_0x6d71('0x4b')]=[{'all':!![]}];}return db[_0x6d71('0x38')][_0x6d71('0x25')](_0x37bde9);})[_0x6d71('0x18')](function(_0xb8f35a){_0x4b8780['rows']=_0xb8f35a;return _0x4b8780;});}})['then'](respondWithFilteredResult(_0x29d1c5,_0x37bde9))['catch'](handleError(_0x29d1c5,null));};exports['addTags']=function(_0x4579e2,_0x5d980d){return db[_0x6d71('0x20')][_0x6d71('0x33')]({'where':{'id':_0x4579e2['params']['id']}})['then'](handleEntityNotFound(_0x5d980d,null))[_0x6d71('0x18')](function(_0x12f0f6){if(_0x12f0f6){return _0x12f0f6[_0x6d71('0x4c')](_0x4579e2[_0x6d71('0x35')][_0x6d71('0x4d')],_[_0x6d71('0x3a')](_0x4579e2[_0x6d71('0x35')],[_0x6d71('0x4d'),'id'])||{})[_0x6d71('0x4e')](function(){return db[_0x6d71('0x4f')][_0x6d71('0x25')]({'attributes':['id',_0x6d71('0x1d'),'color'],'where':{'id':_0x4579e2[_0x6d71('0x35')]['ids']}});})[_0x6d71('0x18')](function(_0x4196cf){socket['emit']('openchannelInteractionTags:save',{'id':Number(_0x4579e2[_0x6d71('0x2b')]['id']),'tags':_0x4196cf||[]});return{'id':Number(_0x4579e2[_0x6d71('0x2b')]['id']),'tags':_0x4196cf||[]};});}})[_0x6d71('0x18')](respondWithResult(_0x5d980d,null))[_0x6d71('0x36')](handleError(_0x5d980d,null));};exports[_0x6d71('0x50')]=function(_0xafcf9b,_0x4ab1bb){return db[_0x6d71('0x20')][_0x6d71('0x33')]({'where':{'id':_0xafcf9b[_0x6d71('0x2b')]['id']}})[_0x6d71('0x18')](handleEntityNotFound(_0x4ab1bb,null))[_0x6d71('0x18')](function(_0x35735e){if(_0x35735e){return _0x35735e['removeTags'](_0xafcf9b[_0x6d71('0x27')]['ids']);}})['then'](respondWithStatusCode(_0x4ab1bb,null))[_0x6d71('0x36')](handleError(_0x4ab1bb,null));};exports[_0x6d71('0x51')]=function(_0x12e091,_0x838c86){var _0x4499f6=moment()[_0x6d71('0x52')]()[_0x6d71('0x53')]();var _0x4670b3=path[_0x6d71('0x54')](config[_0x6d71('0x55')],_0x6d71('0x56'),'files',_0x6d71('0x57'));var _0x5e92ed=path['join'](config['root'],_0x6d71('0x56'),'files','attachments');var _0x3fe1ac=path['join'](_0x4670b3,_0x4499f6);var _0x190131=util[_0x6d71('0x47')]('transcript-%d-%s.zip',_0x12e091[_0x6d71('0x2b')]['id'],_0x4499f6);var _0x38c105=path[_0x6d71('0x54')](_0x4670b3,_0x190131);var _0x14f216=[];_0x14f216['push']({'model':db['User'],'as':_0x6d71('0x58'),'attributes':['id',_0x6d71('0x59')],'raw':!![]});_0x14f216['push']({'model':db['CmContact'],'as':'Contact','attributes':['id',_0x6d71('0x5a'),'lastName'],'raw':!![]});if(_0x12e091[_0x6d71('0x27')]['attachments']){_0x14f216[_0x6d71('0x5b')]({'model':db[_0x6d71('0x5c')],'as':_0x6d71('0x5c'),'raw':!![]});}var _0x42e197=[{'model':db[_0x6d71('0x38')],'as':_0x6d71('0x5d'),'attributes':['id','body',_0x6d71('0x5e'),_0x6d71('0x5f'),_0x6d71('0x60'),_0x6d71('0x61')],'include':_0x14f216}];_0x42e197['push']({'model':db[_0x6d71('0x62')],'as':_0x6d71('0x63'),'attributes':['id','name']});_0x42e197[_0x6d71('0x5b')]({'model':db[_0x6d71('0x58')],'as':'Owner','attributes':['id','fullname']});return db[_0x6d71('0x20')][_0x6d71('0x33')]({'where':{'id':_0x12e091['params']['id']},'include':_0x42e197})[_0x6d71('0x18')](handleEntityNotFound(_0x838c86,null))[_0x6d71('0x18')](function(_0x194ed3){if(_0x194ed3){var _0x82139d=_0x194ed3[_0x6d71('0x64')]({'plain':!![]});fs['mkdirSync'](_0x3fe1ac);var _0xe01a16={'channel':'Openchannel','account':_0x82139d['Account'][_0x6d71('0x1d')],'agent':_0x82139d[_0x6d71('0x65')]?_0x82139d['Owner'][_0x6d71('0x59')]:_0x6d71('0x66'),'createdAt':moment(_0x82139d[_0x6d71('0x5e')])['format'](_0x6d71('0x48'))[_0x6d71('0x53')](),'closedAt':_0x82139d[_0x6d71('0x67')]?moment(_0x82139d[_0x6d71('0x68')])['format']('YYYY-MM-DD\x20HH:mm:ss')[_0x6d71('0x53')]():'','disposition':_0x82139d[_0x6d71('0x69')],'visibility':_0x82139d[_0x6d71('0x6a')]?_0x6d71('0x6b'):'Private','messages':_(_0x82139d[_0x6d71('0x5d')])[_0x6d71('0x44')]({'secret':![]})[_0x6d71('0x6c')](function(_0x23ee5c){if(_0x23ee5c[_0x6d71('0x5c')]){var _0x281d9c=path['join'](_0x5e92ed,_0x23ee5c[_0x6d71('0x5c')][_0x6d71('0x6d')]);if(fs[_0x6d71('0x6e')](_0x281d9c)){fs[_0x6d71('0x6f')](_0x281d9c)[_0x6d71('0x70')](fs[_0x6d71('0x71')](path[_0x6d71('0x54')](_0x3fe1ac,_0x23ee5c[_0x6d71('0x5c')][_0x6d71('0x6d')])));}}return{'date':moment(_0x23ee5c['createdAt'])['format']('YYYY-MM-DD\x20HH:mm:ss')[_0x6d71('0x53')](),'sender':_0x23ee5c[_0x6d71('0x5f')]===_0x6d71('0x72')?_0x23ee5c['User']?_0x23ee5c[_0x6d71('0x58')][_0x6d71('0x59')]:'System':_0x23ee5c['Contact'][_0x6d71('0x5a')]+(_0x23ee5c[_0x6d71('0x73')][_0x6d71('0x74')]?'\x20'+_0x23ee5c[_0x6d71('0x73')][_0x6d71('0x74')]:''),'body':_0x23ee5c['Attachment']?_0x23ee5c[_0x6d71('0x5c')][_0x6d71('0x6d')]:_0x23ee5c[_0x6d71('0x35')],'direction':_0x23ee5c[_0x6d71('0x5f')]==='out'?'A':'C','secret':_0x23ee5c['secret'],'read':_0x23ee5c[_0x6d71('0x61')],'attachment':_0x23ee5c[_0x6d71('0x5c')]};})['value']()};return ejs[_0x6d71('0x75')](path['join'](config['root'],'server',_0x6d71('0x76'),_0x6d71('0x77')),{'interaction':_0xe01a16})[_0x6d71('0x18')](function(_0x269fa4){var _0x162755=path['join'](_0x3fe1ac,'transcript-'+_0x82139d['id']+'-'+_0x4499f6+_0x6d71('0x78'));var _0x32b41d={'path':_0x162755,'channel':_0x6d71('0x79'),'interactionId':_0x82139d['id']};return pdf[_0x6d71('0x7a')](_0x269fa4,_0x32b41d);})[_0x6d71('0x18')](function(){return new Promise(function(_0x4ecd12,_0x9add2b){zipdir(_0x3fe1ac,{'saveTo':_0x38c105},function(_0x64089f,_0x710330){if(_0x64089f)return _0x9add2b(_0x64089f);return _0x4ecd12(_0x710330);});})[_0x6d71('0x18')](function(){return new Promise(function(_0x367a6b,_0x4e2795){rimraf(_0x3fe1ac,function(_0x207048){if(_0x207048)_0x4e2795(_0x207048);return _0x367a6b();});});})[_0x6d71('0x18')](function(){return _0x838c86[_0x6d71('0x51')](_0x38c105,_0x190131,function(_0x22794f){if(_0x22794f){logger[_0x6d71('0x1b')](_0x6d71('0x7b'),_0x22794f);}else{fs[_0x6d71('0x7c')](_0x38c105);}});});});}else{return _0x838c86[_0x6d71('0xe')](0xc8);}})[_0x6d71('0x36')](handleError(_0x838c86,null));};