c92b496ee21bbe734c7f2406dc0134dddb036c83
[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 _0x296b=['undefined','count','set','Content-Range','update','then','destroy','error','stack','name','send','index','map','rawAttributes','fieldName','type','getOptions','findAll','openchannel','query','user','show','from','params','model','keys','OpenchannelInteraction','filters','intersection','fields','attributes','length','include','merge','catch','create','body','find','describe','addMessage','ids','findOne','OpenchannelMessage','hasOwnProperty','nolimit','order','sort','where','pick','OpenchannelInteractionId','filter','$gte','format','YYYY-MM-DD\x20HH:mm:ss','options','includeAll','addTags','setTags','omit','spread','Tag','color','emit','openchannelInteractionTags:save','removeTags','download','unix','join','root','server','files','tmp','attachments','transcript-%d-%s.zip','push','User','CmContact','Contact','firstName','Attachment','Messages','createdAt','direction','read','OpenchannelAccount','Account','Owner','fullname','get','mkdirSync','Openchannel','toString','closed','closedAt','disposition','threadId','Private','existsSync','createReadStream','createWriteStream','out','lastName','basename','secret','views','downloadInteraction.ejs','transcript-','.pdf','createPdfFromHTML','Unable\x20to\x20delete\x20zip\x20file','rimraf','moment','util','path','ejs','lodash','ioredis','../../components/interaction/service','../../components/export/pdf','../../config/logger','api','../../config/environment','redis','defaults','localhost','./openchannelInteraction.socket','register','sendStatus','status','end','json','offset','limit'];(function(_0x442214,_0x3a869f){var _0x2bddf9=function(_0x34b9c7){while(--_0x34b9c7){_0x442214['push'](_0x442214['shift']());}};_0x2bddf9(++_0x3a869f);}(_0x296b,0x6e));var _0xb296=function(_0x3cb3ca,_0x44d697){_0x3cb3ca=_0x3cb3ca-0x0;var _0x214366=_0x296b[_0x3cb3ca];return _0x214366;};'use strict';var rimraf=require(_0xb296('0x0'));var zipdir=require('zip-dir');var moment=require(_0xb296('0x1'));var util=require(_0xb296('0x2'));var path=require(_0xb296('0x3'));var ejs=require(_0xb296('0x4'));var fs=require('fs');var _=require(_0xb296('0x5'));var Redis=require(_0xb296('0x6'));var interaction=require(_0xb296('0x7'));var qs=require('../../components/parsers/qs');var pdf=require(_0xb296('0x8'));var logger=require(_0xb296('0x9'))(_0xb296('0xa'));var config=require(_0xb296('0xb'));var db=require('../../mysqldb')['db'];config[_0xb296('0xc')]=_[_0xb296('0xd')](config[_0xb296('0xc')],{'host':_0xb296('0xe'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xb296('0xc')]));require(_0xb296('0xf'))[_0xb296('0x10')](socket);function respondWithStatusCode(_0x4d6fe1,_0x12de0c){_0x12de0c=_0x12de0c||0xcc;return function(_0x26e6da){if(_0x26e6da){return _0x4d6fe1[_0xb296('0x11')](_0x12de0c);}return _0x4d6fe1[_0xb296('0x12')](_0x12de0c)[_0xb296('0x13')]();};}function respondWithResult(_0x3e32f6,_0x21fa30){_0x21fa30=_0x21fa30||0xc8;return function(_0x369f8a){if(_0x369f8a){return _0x3e32f6[_0xb296('0x12')](_0x21fa30)[_0xb296('0x14')](_0x369f8a);}};}function respondWithFilteredResult(_0x2de36e,_0x3aed0b){return function(_0x683dff){if(_0x683dff){var _0x413fdb=typeof _0x3aed0b[_0xb296('0x15')]==='undefined'&&typeof _0x3aed0b[_0xb296('0x16')]===_0xb296('0x17');var _0x159cee=_0x683dff[_0xb296('0x18')];var _0x4db9ef=_0x413fdb?0x0:_0x3aed0b[_0xb296('0x15')];var _0x849f3f=_0x413fdb?_0x683dff[_0xb296('0x18')]:_0x3aed0b[_0xb296('0x15')]+_0x3aed0b[_0xb296('0x16')];var _0x50b43f;if(_0x849f3f>=_0x159cee){_0x849f3f=_0x159cee;_0x50b43f=0xc8;}else{_0x50b43f=0xce;}_0x2de36e[_0xb296('0x12')](_0x50b43f);return _0x2de36e[_0xb296('0x19')](_0xb296('0x1a'),_0x4db9ef+'-'+_0x849f3f+'/'+_0x159cee)[_0xb296('0x14')](_0x683dff);}return null;};}function saveUpdates(_0x3f3bf3){return function(_0x32b36d){if(_0x32b36d){return _0x32b36d[_0xb296('0x1b')](_0x3f3bf3)[_0xb296('0x1c')](function(_0x165175){return _0x165175;});}return null;};}function removeEntity(_0x4b5c37){return function(_0x53834a){if(_0x53834a){return _0x53834a[_0xb296('0x1d')]()['then'](function(){_0x4b5c37[_0xb296('0x12')](0xcc)[_0xb296('0x13')]();});}};}function handleEntityNotFound(_0xded9b0){return function(_0x24fd51){if(!_0x24fd51){_0xded9b0[_0xb296('0x11')](0x194);}return _0x24fd51;};}function handleError(_0x532dc9,_0x323063){_0x323063=_0x323063||0x1f4;return function(_0xa2f22c){logger[_0xb296('0x1e')](_0xa2f22c[_0xb296('0x1f')]);if(_0xa2f22c['name']){delete _0xa2f22c[_0xb296('0x20')];}_0x532dc9[_0xb296('0x12')](_0x323063)[_0xb296('0x21')](_0xa2f22c);};}exports[_0xb296('0x22')]=function(_0x31f234,_0x1f0710){var _0x595761={};var _0x3040c2=_[_0xb296('0x23')](db['OpenchannelInteraction'][_0xb296('0x24')],function(_0x9bb973){return{'name':_0x9bb973[_0xb296('0x25')],'type':_0x9bb973[_0xb296('0x26')]['key']};});_0x595761=qs[_0xb296('0x27')](_0x3040c2,_0x31f234);return interaction[_0xb296('0x28')](_0xb296('0x29'),_0x31f234[_0xb296('0x2a')],_0x31f234[_0xb296('0x2b')],_0x595761,_0x3040c2)[_0xb296('0x1c')](respondWithFilteredResult(_0x1f0710,_0x595761))['catch'](handleError(_0x1f0710,null));};exports[_0xb296('0x2c')]=function(_0x50e22f,_0x2f7cf5){var _0x2b8abe={};if(_0x50e22f[_0xb296('0x2a')][_0xb296('0x26')]&&_0x50e22f[_0xb296('0x2a')][_0xb296('0x26')]===_0xb296('0x2d')){_0x2b8abe[_0xb296('0x2d')]=_0x50e22f[_0xb296('0x2e')]['id'];}else{_0x2b8abe['id']=_0x50e22f['params']['id'];}var _0x532569={'raw':![],'where':_0x2b8abe},_0x1df4ba={};_0x1df4ba[_0xb296('0x2f')]=_[_0xb296('0x30')](db[_0xb296('0x31')][_0xb296('0x24')]);_0x1df4ba[_0xb296('0x2a')]=_['keys'](_0x50e22f[_0xb296('0x2a')]);_0x1df4ba[_0xb296('0x32')]=_['intersection'](_0x1df4ba['model'],_0x1df4ba[_0xb296('0x2a')]);_0x532569['attributes']=_[_0xb296('0x33')](_0x1df4ba[_0xb296('0x2f')],qs[_0xb296('0x34')](_0x50e22f[_0xb296('0x2a')][_0xb296('0x34')]));_0x532569['attributes']=_0x532569[_0xb296('0x35')][_0xb296('0x36')]?_0x532569[_0xb296('0x35')]:_0x1df4ba[_0xb296('0x2f')];if(_0x50e22f[_0xb296('0x2a')]['includeAll']){_0x532569[_0xb296('0x37')]=[{'all':!![]}];}_0x532569=_[_0xb296('0x38')]({},_0x532569,_0x50e22f['options']);return db[_0xb296('0x31')]['find'](_0x532569)[_0xb296('0x1c')](handleEntityNotFound(_0x2f7cf5,null))[_0xb296('0x1c')](respondWithResult(_0x2f7cf5,null))[_0xb296('0x39')](handleError(_0x2f7cf5,null));};exports[_0xb296('0x3a')]=function(_0x59dbe4,_0x1ed6dc){return db[_0xb296('0x31')][_0xb296('0x3a')](_0x59dbe4[_0xb296('0x3b')],{})[_0xb296('0x1c')](respondWithResult(_0x1ed6dc,0xc9))['catch'](handleError(_0x1ed6dc,null));};exports[_0xb296('0x1b')]=function(_0x4a93bf,_0x5d57db){if(_0x4a93bf[_0xb296('0x3b')]['id']){delete _0x4a93bf[_0xb296('0x3b')]['id'];}return db[_0xb296('0x31')]['find']({'where':{'id':_0x4a93bf[_0xb296('0x2e')]['id']}})[_0xb296('0x1c')](handleEntityNotFound(_0x5d57db,null))[_0xb296('0x1c')](saveUpdates(_0x4a93bf['body'],null))[_0xb296('0x1c')](respondWithResult(_0x5d57db,null))[_0xb296('0x39')](handleError(_0x5d57db,null));};exports[_0xb296('0x1d')]=function(_0x413f3c,_0xc54ac2){return db[_0xb296('0x31')][_0xb296('0x3c')]({'where':{'id':_0x413f3c[_0xb296('0x2e')]['id']}})['then'](handleEntityNotFound(_0xc54ac2,null))[_0xb296('0x1c')](removeEntity(_0xc54ac2,null))[_0xb296('0x39')](handleError(_0xc54ac2,null));};exports[_0xb296('0x3d')]=function(_0x4fc8bd,_0x5e934f){return db['OpenchannelInteraction'][_0xb296('0x3d')]()[_0xb296('0x1c')](respondWithResult(_0x5e934f,null))[_0xb296('0x39')](handleError(_0x5e934f,null));};exports[_0xb296('0x3e')]=function(_0x3390bb,_0x40e8af){return db['OpenchannelMessage']['find']({'where':{'id':_0x3390bb[_0xb296('0x2e')]['id']}})['then'](handleEntityNotFound(_0x40e8af,null))[_0xb296('0x1c')](function(_0x5c7779){if(_0x5c7779){return _0x5c7779[_0xb296('0x3e')](_0x3390bb['body'][_0xb296('0x3f')],_['omit'](_0x3390bb[_0xb296('0x3b')],[_0xb296('0x3f'),'id'])||{});}})[_0xb296('0x1c')](respondWithResult(_0x40e8af,null))['catch'](handleError(_0x40e8af,null));};exports['getMessages']=function(_0x37307c,_0x5555f3){var _0x25fcce={'raw':![],'where':{}};var _0x4af622={};var _0x388a89={'count':0x0,'rows':[]};return db['OpenchannelInteraction'][_0xb296('0x40')]({'where':{'id':_0x37307c[_0xb296('0x2e')]['id']}})['then'](handleEntityNotFound(_0x5555f3,null))['then'](function(_0x4909d8){if(_0x4909d8){_0x4af622[_0xb296('0x2f')]=_[_0xb296('0x30')](db[_0xb296('0x41')][_0xb296('0x24')]);_0x4af622[_0xb296('0x2a')]=_[_0xb296('0x30')](_0x37307c['query']);_0x4af622['filters']=_[_0xb296('0x33')](_0x4af622[_0xb296('0x2f')],_0x4af622['query']);_0x25fcce[_0xb296('0x35')]=_[_0xb296('0x33')](_0x4af622[_0xb296('0x2f')],qs[_0xb296('0x34')](_0x37307c[_0xb296('0x2a')]['fields']));_0x25fcce[_0xb296('0x35')]=_0x25fcce['attributes']['length']?_0x25fcce[_0xb296('0x35')]:_0x4af622['model'];if(!_0x37307c['query'][_0xb296('0x42')](_0xb296('0x43'))){_0x25fcce['limit']=qs[_0xb296('0x16')](_0x37307c[_0xb296('0x2a')][_0xb296('0x16')]);_0x25fcce[_0xb296('0x15')]=qs[_0xb296('0x15')](_0x37307c['query']['offset']);}_0x25fcce[_0xb296('0x44')]=qs[_0xb296('0x45')](_0x37307c[_0xb296('0x2a')]['sort']);_0x25fcce[_0xb296('0x46')]=qs[_0xb296('0x32')](_[_0xb296('0x47')](_0x37307c[_0xb296('0x2a')],_0x4af622[_0xb296('0x32')]));_0x25fcce[_0xb296('0x46')][_0xb296('0x48')]=_0x4909d8['id'];if(_0x37307c[_0xb296('0x2a')][_0xb296('0x49')]){_0x25fcce[_0xb296('0x46')]=_[_0xb296('0x38')](_0x25fcce[_0xb296('0x46')],{'$or':_[_0xb296('0x23')](_0x25fcce[_0xb296('0x35')],function(_0x4015db){var _0x91f85={};_0x91f85[_0x4015db]={'$like':'%'+_0x37307c['query']['filter']+'%'};return _0x91f85;})});}if(_0x37307c[_0xb296('0x2a')][_0xb296('0x4a')]){var _0x164aba=_0x37307c[_0xb296('0x2a')][_0xb296('0x4a')]['split'](',');var _0x9e0c52={};_0x9e0c52[_0x164aba[0x0]]={'$gte':moment(_0x164aba[0x1])[_0xb296('0x4b')](_0xb296('0x4c'))};_0x25fcce[_0xb296('0x46')]=_['merge'](_0x25fcce[_0xb296('0x46')],_0x9e0c52);}_0x25fcce=_[_0xb296('0x38')]({},_0x25fcce,_0x37307c[_0xb296('0x4d')]);return db['OpenchannelMessage'][_0xb296('0x18')]({'where':_0x25fcce['where']})['then'](function(_0x5a8375){_0x388a89[_0xb296('0x18')]=_0x5a8375;if(_0x37307c[_0xb296('0x2a')][_0xb296('0x4e')]){_0x25fcce[_0xb296('0x37')]=[{'all':!![]}];}return db[_0xb296('0x41')]['findAll'](_0x25fcce);})['then'](function(_0xef6f44){_0x388a89['rows']=_0xef6f44;return _0x388a89;});}})[_0xb296('0x1c')](respondWithFilteredResult(_0x5555f3,_0x25fcce))[_0xb296('0x39')](handleError(_0x5555f3,null));};exports[_0xb296('0x4f')]=function(_0x315cc7,_0x19a0d7){return db[_0xb296('0x31')]['find']({'where':{'id':_0x315cc7[_0xb296('0x2e')]['id']}})[_0xb296('0x1c')](handleEntityNotFound(_0x19a0d7,null))['then'](function(_0xa512b9){if(_0xa512b9){return _0xa512b9[_0xb296('0x50')](_0x315cc7[_0xb296('0x3b')][_0xb296('0x3f')],_[_0xb296('0x51')](_0x315cc7[_0xb296('0x3b')],[_0xb296('0x3f'),'id'])||{})[_0xb296('0x52')](function(){return db[_0xb296('0x53')]['findAll']({'attributes':['id',_0xb296('0x20'),_0xb296('0x54')],'where':{'id':_0x315cc7['body']['ids']}});})[_0xb296('0x1c')](function(_0xda7e05){socket[_0xb296('0x55')](_0xb296('0x56'),{'id':Number(_0x315cc7[_0xb296('0x2e')]['id']),'tags':_0xda7e05||[]});return{'id':Number(_0x315cc7[_0xb296('0x2e')]['id']),'tags':_0xda7e05||[]};});}})[_0xb296('0x1c')](respondWithResult(_0x19a0d7,null))[_0xb296('0x39')](handleError(_0x19a0d7,null));};exports[_0xb296('0x57')]=function(_0x1f9d45,_0x3ff7b1){return db[_0xb296('0x31')]['find']({'where':{'id':_0x1f9d45[_0xb296('0x2e')]['id']}})[_0xb296('0x1c')](handleEntityNotFound(_0x3ff7b1,null))[_0xb296('0x1c')](function(_0x3b57b6){if(_0x3b57b6){return _0x3b57b6['removeTags'](_0x1f9d45[_0xb296('0x2a')][_0xb296('0x3f')]);}})[_0xb296('0x1c')](respondWithStatusCode(_0x3ff7b1,null))[_0xb296('0x39')](handleError(_0x3ff7b1,null));};exports[_0xb296('0x58')]=function(_0x5cd55a,_0x16a859){var _0x40a3ef=moment()[_0xb296('0x59')]()['toString']();var _0x41ff1f=path[_0xb296('0x5a')](config[_0xb296('0x5b')],_0xb296('0x5c'),_0xb296('0x5d'),_0xb296('0x5e'));var _0x14592d=path[_0xb296('0x5a')](config[_0xb296('0x5b')],'server',_0xb296('0x5d'),_0xb296('0x5f'));var _0xe9694e=path[_0xb296('0x5a')](_0x41ff1f,_0x40a3ef);var _0xc38040=util[_0xb296('0x4b')](_0xb296('0x60'),_0x5cd55a[_0xb296('0x2e')]['id'],_0x40a3ef);var _0x48d2d6=path[_0xb296('0x5a')](_0x41ff1f,_0xc38040);var _0x46c4fb=[];_0x46c4fb[_0xb296('0x61')]({'model':db[_0xb296('0x62')],'as':_0xb296('0x62'),'attributes':['id','fullname'],'raw':!![]});_0x46c4fb[_0xb296('0x61')]({'model':db[_0xb296('0x63')],'as':_0xb296('0x64'),'attributes':['id',_0xb296('0x65'),'lastName'],'raw':!![]});if(_0x5cd55a[_0xb296('0x2a')][_0xb296('0x5f')]){_0x46c4fb[_0xb296('0x61')]({'model':db[_0xb296('0x66')],'as':_0xb296('0x66'),'raw':!![]});}var _0x57ae6f=[{'model':db[_0xb296('0x41')],'as':_0xb296('0x67'),'attributes':['id',_0xb296('0x3b'),_0xb296('0x68'),_0xb296('0x69'),'secret',_0xb296('0x6a')],'include':_0x46c4fb}];_0x57ae6f[_0xb296('0x61')]({'model':db[_0xb296('0x6b')],'as':_0xb296('0x6c'),'attributes':['id',_0xb296('0x20')]});_0x57ae6f['push']({'model':db['User'],'as':_0xb296('0x6d'),'attributes':['id',_0xb296('0x6e')]});return db[_0xb296('0x31')][_0xb296('0x3c')]({'where':{'id':_0x5cd55a[_0xb296('0x2e')]['id']},'include':_0x57ae6f})[_0xb296('0x1c')](handleEntityNotFound(_0x16a859,null))['then'](function(_0x25f7fd){if(_0x25f7fd){var _0x20b3c5=_0x25f7fd[_0xb296('0x6f')]({'plain':!![]});fs[_0xb296('0x70')](_0xe9694e);var _0x41290c={'channel':_0xb296('0x71'),'account':_0x20b3c5['Account'][_0xb296('0x20')],'agent':_0x20b3c5[_0xb296('0x6d')]?_0x20b3c5[_0xb296('0x6d')][_0xb296('0x6e')]:'N.A.','createdAt':moment(_0x20b3c5[_0xb296('0x68')])[_0xb296('0x4b')](_0xb296('0x4c'))[_0xb296('0x72')](),'closedAt':_0x20b3c5[_0xb296('0x73')]?moment(_0x20b3c5[_0xb296('0x74')])['format'](_0xb296('0x4c'))[_0xb296('0x72')]():'','disposition':_0x20b3c5[_0xb296('0x75')],'visibility':_0x20b3c5[_0xb296('0x76')]?'Public':_0xb296('0x77'),'messages':_(_0x20b3c5[_0xb296('0x67')])[_0xb296('0x49')]({'secret':![]})[_0xb296('0x23')](function(_0x128ea1){if(_0x128ea1[_0xb296('0x66')]){var _0x1fce00=path['join'](_0x14592d,_0x128ea1[_0xb296('0x66')]['basename']);if(fs[_0xb296('0x78')](_0x1fce00)){fs[_0xb296('0x79')](_0x1fce00)['pipe'](fs[_0xb296('0x7a')](path[_0xb296('0x5a')](_0xe9694e,_0x128ea1['Attachment']['basename'])));}}return{'date':moment(_0x128ea1[_0xb296('0x68')])[_0xb296('0x4b')](_0xb296('0x4c'))[_0xb296('0x72')](),'sender':_0x128ea1[_0xb296('0x69')]===_0xb296('0x7b')?_0x128ea1[_0xb296('0x62')]?_0x128ea1[_0xb296('0x62')][_0xb296('0x6e')]:'System':_0x128ea1[_0xb296('0x64')]['firstName']+(_0x128ea1[_0xb296('0x64')][_0xb296('0x7c')]?'\x20'+_0x128ea1[_0xb296('0x64')]['lastName']:''),'body':_0x128ea1[_0xb296('0x66')]?_0x128ea1['Attachment'][_0xb296('0x7d')]:_0x128ea1['body'],'direction':_0x128ea1[_0xb296('0x69')]===_0xb296('0x7b')?'A':'C','secret':_0x128ea1[_0xb296('0x7e')],'read':_0x128ea1[_0xb296('0x6a')],'attachment':_0x128ea1[_0xb296('0x66')]};})['value']()};return ejs['renderFile'](path['join'](config[_0xb296('0x5b')],_0xb296('0x5c'),_0xb296('0x7f'),_0xb296('0x80')),{'interaction':_0x41290c})[_0xb296('0x1c')](function(_0x431480){var _0xdba2f1=path[_0xb296('0x5a')](_0xe9694e,_0xb296('0x81')+_0x20b3c5['id']+'-'+_0x40a3ef+_0xb296('0x82'));var _0x3bc0b3={'path':_0xdba2f1,'channel':_0xb296('0x71'),'interactionId':_0x20b3c5['id']};return pdf[_0xb296('0x83')](_0x431480,_0x3bc0b3);})[_0xb296('0x1c')](function(){return new Promise(function(_0x2751c3,_0x47a089){zipdir(_0xe9694e,{'saveTo':_0x48d2d6},function(_0x3c58d3,_0x10eaad){if(_0x3c58d3)return _0x47a089(_0x3c58d3);return _0x2751c3(_0x10eaad);});})[_0xb296('0x1c')](function(){return new Promise(function(_0x2283a5,_0x51490b){rimraf(_0xe9694e,function(_0x181155){if(_0x181155)_0x51490b(_0x181155);return _0x2283a5();});});})[_0xb296('0x1c')](function(){return _0x16a859[_0xb296('0x58')](_0x48d2d6,_0xc38040,function(_0x37f579){if(_0x37f579){logger[_0xb296('0x1e')](_0xb296('0x84'),_0x37f579);}else{fs['unlinkSync'](_0x48d2d6);}});});});}else{return _0x16a859['sendStatus'](0xc8);}})['catch'](handleError(_0x16a859,null));};