7b7921a22199e31790a757b6647c27930bba1599
[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 _0x3e27=['tmp','server','attachments','format','transcript-%d-%s.zip','push','User','fullname','CmContact','Contact','firstName','Attachment','createdAt','direction','OpenchannelAccount','Account','Owner','get','mkdirSync','Openchannel','N.A.','YYYY-MM-DD\x20HH:mm:ss','toString','closed','disposition','threadId','Public','Messages','basename','createReadStream','createWriteStream','out','System','lastName','secret','read','value','renderFile','views','downloadInteraction.ejs','transcript-','.pdf','createPdfFromHTML','unlinkSync','rimraf','zip-dir','moment','util','path','lodash','../../components/parsers/qs','../../components/export/pdf','../../config/logger','api','../../mysqldb','redis','defaults','localhost','./openchannelInteraction.socket','sendStatus','end','status','json','offset','undefined','limit','count','Content-Range','update','then','destroy','error','stack','name','send','index','map','OpenchannelInteraction','key','getOptions','findAll','openchannel','query','catch','show','type','from','params','model','rawAttributes','keys','filters','intersection','attributes','fields','includeAll','find','create','body','describe','addMessage','OpenchannelMessage','ids','omit','getMessages','findOne','length','order','sort','where','OpenchannelInteractionId','filter','merge','$gte','split','options','include','rows','addTags','setTags','spread','Tag','color','emit','removeTags','unix','join','root','files'];(function(_0x397e5f,_0x454c8f){var _0x5302b8=function(_0x1a29ef){while(--_0x1a29ef){_0x397e5f['push'](_0x397e5f['shift']());}};_0x5302b8(++_0x454c8f);}(_0x3e27,0xad));var _0x73e2=function(_0x4d0793,_0x5a6eec){_0x4d0793=_0x4d0793-0x0;var _0x546071=_0x3e27[_0x4d0793];return _0x546071;};'use strict';var rimraf=require(_0x73e2('0x0'));var zipdir=require(_0x73e2('0x1'));var moment=require(_0x73e2('0x2'));var util=require(_0x73e2('0x3'));var path=require(_0x73e2('0x4'));var ejs=require('ejs');var fs=require('fs');var _=require(_0x73e2('0x5'));var Redis=require('ioredis');var interaction=require('../../components/interaction/service');var qs=require(_0x73e2('0x6'));var pdf=require(_0x73e2('0x7'));var logger=require(_0x73e2('0x8'))(_0x73e2('0x9'));var config=require('../../config/environment');var db=require(_0x73e2('0xa'))['db'];config[_0x73e2('0xb')]=_[_0x73e2('0xc')](config[_0x73e2('0xb')],{'host':_0x73e2('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x73e2('0xe'))['register'](socket);function respondWithStatusCode(_0x4d6899,_0x52f5fa){_0x52f5fa=_0x52f5fa||0xcc;return function(_0x454a52){if(_0x454a52){return _0x4d6899[_0x73e2('0xf')](_0x52f5fa);}return _0x4d6899['status'](_0x52f5fa)[_0x73e2('0x10')]();};}function respondWithResult(_0x17dca8,_0x1fce82){_0x1fce82=_0x1fce82||0xc8;return function(_0x37943a){if(_0x37943a){return _0x17dca8[_0x73e2('0x11')](_0x1fce82)[_0x73e2('0x12')](_0x37943a);}};}function respondWithFilteredResult(_0x285631,_0x414048){return function(_0x126361){if(_0x126361){var _0x588629=typeof _0x414048[_0x73e2('0x13')]===_0x73e2('0x14')&&typeof _0x414048[_0x73e2('0x15')]===_0x73e2('0x14');var _0x1d1df4=_0x126361[_0x73e2('0x16')];var _0x569c6b=_0x588629?0x0:_0x414048['offset'];var _0x13207c=_0x588629?_0x126361[_0x73e2('0x16')]:_0x414048[_0x73e2('0x13')]+_0x414048['limit'];var _0xf08f1f;if(_0x13207c>=_0x1d1df4){_0x13207c=_0x1d1df4;_0xf08f1f=0xc8;}else{_0xf08f1f=0xce;}_0x285631[_0x73e2('0x11')](_0xf08f1f);return _0x285631['set'](_0x73e2('0x17'),_0x569c6b+'-'+_0x13207c+'/'+_0x1d1df4)[_0x73e2('0x12')](_0x126361);}return null;};}function saveUpdates(_0x5ab9fb){return function(_0x3ade09){if(_0x3ade09){return _0x3ade09[_0x73e2('0x18')](_0x5ab9fb)[_0x73e2('0x19')](function(_0x3719ba){return _0x3719ba;});}return null;};}function removeEntity(_0x1d6cea){return function(_0x43fab0){if(_0x43fab0){return _0x43fab0[_0x73e2('0x1a')]()[_0x73e2('0x19')](function(){_0x1d6cea[_0x73e2('0x11')](0xcc)[_0x73e2('0x10')]();});}};}function handleEntityNotFound(_0x552a48){return function(_0x34ddae){if(!_0x34ddae){_0x552a48[_0x73e2('0xf')](0x194);}return _0x34ddae;};}function handleError(_0x11dc31,_0x4ec1ac){_0x4ec1ac=_0x4ec1ac||0x1f4;return function(_0x33e178){logger[_0x73e2('0x1b')](_0x33e178[_0x73e2('0x1c')]);if(_0x33e178[_0x73e2('0x1d')]){delete _0x33e178['name'];}_0x11dc31[_0x73e2('0x11')](_0x4ec1ac)[_0x73e2('0x1e')](_0x33e178);};}exports[_0x73e2('0x1f')]=function(_0x98d8f7,_0x1bdc9e){var _0x3cfbb4={};var _0x2ae400=_[_0x73e2('0x20')](db[_0x73e2('0x21')]['rawAttributes'],function(_0x56b88d){return{'name':_0x56b88d['fieldName'],'type':_0x56b88d['type'][_0x73e2('0x22')]};});_0x3cfbb4=qs[_0x73e2('0x23')](_0x2ae400,_0x98d8f7);return interaction[_0x73e2('0x24')](_0x73e2('0x25'),_0x98d8f7[_0x73e2('0x26')],_0x98d8f7['user'],_0x3cfbb4,_0x2ae400)[_0x73e2('0x19')](respondWithFilteredResult(_0x1bdc9e,_0x3cfbb4))[_0x73e2('0x27')](handleError(_0x1bdc9e,null));};exports[_0x73e2('0x28')]=function(_0x1d8b51,_0x44abe8){var _0x2e7721={};if(_0x1d8b51[_0x73e2('0x26')][_0x73e2('0x29')]&&_0x1d8b51['query']['type']===_0x73e2('0x2a')){_0x2e7721['from']=_0x1d8b51[_0x73e2('0x2b')]['id'];}else{_0x2e7721['id']=_0x1d8b51[_0x73e2('0x2b')]['id'];}var _0x10421c={'raw':![],'where':_0x2e7721},_0x26938d={};_0x26938d[_0x73e2('0x2c')]=_['keys'](db[_0x73e2('0x21')][_0x73e2('0x2d')]);_0x26938d[_0x73e2('0x26')]=_[_0x73e2('0x2e')](_0x1d8b51[_0x73e2('0x26')]);_0x26938d[_0x73e2('0x2f')]=_[_0x73e2('0x30')](_0x26938d[_0x73e2('0x2c')],_0x26938d[_0x73e2('0x26')]);_0x10421c[_0x73e2('0x31')]=_[_0x73e2('0x30')](_0x26938d[_0x73e2('0x2c')],qs[_0x73e2('0x32')](_0x1d8b51[_0x73e2('0x26')][_0x73e2('0x32')]));_0x10421c['attributes']=_0x10421c[_0x73e2('0x31')]['length']?_0x10421c[_0x73e2('0x31')]:_0x26938d[_0x73e2('0x2c')];if(_0x1d8b51[_0x73e2('0x26')][_0x73e2('0x33')]){_0x10421c['include']=[{'all':!![]}];}_0x10421c=_['merge']({},_0x10421c,_0x1d8b51['options']);return db[_0x73e2('0x21')][_0x73e2('0x34')](_0x10421c)[_0x73e2('0x19')](handleEntityNotFound(_0x44abe8,null))['then'](respondWithResult(_0x44abe8,null))[_0x73e2('0x27')](handleError(_0x44abe8,null));};exports[_0x73e2('0x35')]=function(_0x29cffd,_0x34c87c){return db['OpenchannelInteraction'][_0x73e2('0x35')](_0x29cffd[_0x73e2('0x36')],{})[_0x73e2('0x19')](respondWithResult(_0x34c87c,0xc9))[_0x73e2('0x27')](handleError(_0x34c87c,null));};exports[_0x73e2('0x18')]=function(_0x439942,_0x403548){if(_0x439942['body']['id']){delete _0x439942[_0x73e2('0x36')]['id'];}return db[_0x73e2('0x21')]['find']({'where':{'id':_0x439942[_0x73e2('0x2b')]['id']}})[_0x73e2('0x19')](handleEntityNotFound(_0x403548,null))[_0x73e2('0x19')](saveUpdates(_0x439942[_0x73e2('0x36')],null))[_0x73e2('0x19')](respondWithResult(_0x403548,null))['catch'](handleError(_0x403548,null));};exports[_0x73e2('0x1a')]=function(_0x1d03ad,_0x1fdb5f){return db[_0x73e2('0x21')]['find']({'where':{'id':_0x1d03ad[_0x73e2('0x2b')]['id']}})['then'](handleEntityNotFound(_0x1fdb5f,null))[_0x73e2('0x19')](removeEntity(_0x1fdb5f,null))[_0x73e2('0x27')](handleError(_0x1fdb5f,null));};exports[_0x73e2('0x37')]=function(_0xdf79be,_0x2420d3){return db[_0x73e2('0x21')][_0x73e2('0x37')]()[_0x73e2('0x19')](respondWithResult(_0x2420d3,null))[_0x73e2('0x27')](handleError(_0x2420d3,null));};exports[_0x73e2('0x38')]=function(_0x400d7,_0x317764){return db[_0x73e2('0x39')][_0x73e2('0x34')]({'where':{'id':_0x400d7[_0x73e2('0x2b')]['id']}})[_0x73e2('0x19')](handleEntityNotFound(_0x317764,null))['then'](function(_0x545830){if(_0x545830){return _0x545830[_0x73e2('0x38')](_0x400d7[_0x73e2('0x36')][_0x73e2('0x3a')],_[_0x73e2('0x3b')](_0x400d7[_0x73e2('0x36')],[_0x73e2('0x3a'),'id'])||{});}})['then'](respondWithResult(_0x317764,null))[_0x73e2('0x27')](handleError(_0x317764,null));};exports[_0x73e2('0x3c')]=function(_0x26f2ed,_0xc6887f){var _0x2a8fee={'raw':![],'where':{}};var _0x3f50c8={};var _0x345651={'count':0x0,'rows':[]};return db['OpenchannelInteraction'][_0x73e2('0x3d')]({'where':{'id':_0x26f2ed[_0x73e2('0x2b')]['id']}})[_0x73e2('0x19')](handleEntityNotFound(_0xc6887f,null))['then'](function(_0x268144){if(_0x268144){_0x3f50c8[_0x73e2('0x2c')]=_['keys'](db[_0x73e2('0x39')][_0x73e2('0x2d')]);_0x3f50c8['query']=_[_0x73e2('0x2e')](_0x26f2ed[_0x73e2('0x26')]);_0x3f50c8[_0x73e2('0x2f')]=_['intersection'](_0x3f50c8[_0x73e2('0x2c')],_0x3f50c8['query']);_0x2a8fee[_0x73e2('0x31')]=_[_0x73e2('0x30')](_0x3f50c8[_0x73e2('0x2c')],qs[_0x73e2('0x32')](_0x26f2ed[_0x73e2('0x26')]['fields']));_0x2a8fee[_0x73e2('0x31')]=_0x2a8fee[_0x73e2('0x31')][_0x73e2('0x3e')]?_0x2a8fee[_0x73e2('0x31')]:_0x3f50c8['model'];if(!_0x26f2ed[_0x73e2('0x26')]['hasOwnProperty']('nolimit')){_0x2a8fee['limit']=qs[_0x73e2('0x15')](_0x26f2ed[_0x73e2('0x26')]['limit']);_0x2a8fee[_0x73e2('0x13')]=qs[_0x73e2('0x13')](_0x26f2ed['query'][_0x73e2('0x13')]);}_0x2a8fee[_0x73e2('0x3f')]=qs['sort'](_0x26f2ed[_0x73e2('0x26')][_0x73e2('0x40')]);_0x2a8fee[_0x73e2('0x41')]=qs['filters'](_['pick'](_0x26f2ed[_0x73e2('0x26')],_0x3f50c8[_0x73e2('0x2f')]));_0x2a8fee[_0x73e2('0x41')][_0x73e2('0x42')]=_0x268144['id'];if(_0x26f2ed[_0x73e2('0x26')][_0x73e2('0x43')]){_0x2a8fee['where']=_[_0x73e2('0x44')](_0x2a8fee[_0x73e2('0x41')],{'$or':_[_0x73e2('0x20')](_0x2a8fee[_0x73e2('0x31')],function(_0x4ba9cf){var _0x5b508d={};_0x5b508d[_0x4ba9cf]={'$like':'%'+_0x26f2ed[_0x73e2('0x26')][_0x73e2('0x43')]+'%'};return _0x5b508d;})});}if(_0x26f2ed[_0x73e2('0x26')][_0x73e2('0x45')]){var _0x1ea140=_0x26f2ed['query']['$gte'][_0x73e2('0x46')](',');var _0x301210={};_0x301210[_0x1ea140[0x0]]={'$gte':moment(_0x1ea140[0x1])['format']('YYYY-MM-DD\x20HH:mm:ss')};_0x2a8fee[_0x73e2('0x41')]=_[_0x73e2('0x44')](_0x2a8fee[_0x73e2('0x41')],_0x301210);}_0x2a8fee=_['merge']({},_0x2a8fee,_0x26f2ed[_0x73e2('0x47')]);return db['OpenchannelMessage'][_0x73e2('0x16')]({'where':_0x2a8fee[_0x73e2('0x41')]})[_0x73e2('0x19')](function(_0x566cbc){_0x345651['count']=_0x566cbc;if(_0x26f2ed['query'][_0x73e2('0x33')]){_0x2a8fee[_0x73e2('0x48')]=[{'all':!![]}];}return db['OpenchannelMessage'][_0x73e2('0x24')](_0x2a8fee);})[_0x73e2('0x19')](function(_0x4254e8){_0x345651[_0x73e2('0x49')]=_0x4254e8;return _0x345651;});}})[_0x73e2('0x19')](respondWithFilteredResult(_0xc6887f,_0x2a8fee))['catch'](handleError(_0xc6887f,null));};exports[_0x73e2('0x4a')]=function(_0x1869cd,_0x3bf074){return db[_0x73e2('0x21')][_0x73e2('0x34')]({'where':{'id':_0x1869cd[_0x73e2('0x2b')]['id']}})[_0x73e2('0x19')](handleEntityNotFound(_0x3bf074,null))[_0x73e2('0x19')](function(_0x7ff27a){if(_0x7ff27a){return _0x7ff27a[_0x73e2('0x4b')](_0x1869cd[_0x73e2('0x36')][_0x73e2('0x3a')],_['omit'](_0x1869cd[_0x73e2('0x36')],[_0x73e2('0x3a'),'id'])||{})[_0x73e2('0x4c')](function(){return db[_0x73e2('0x4d')][_0x73e2('0x24')]({'attributes':['id',_0x73e2('0x1d'),_0x73e2('0x4e')],'where':{'id':_0x1869cd['body'][_0x73e2('0x3a')]}});})[_0x73e2('0x19')](function(_0x392e2f){socket[_0x73e2('0x4f')]('openchannelInteractionTags:save',{'id':Number(_0x1869cd[_0x73e2('0x2b')]['id']),'tags':_0x392e2f||[]});return{'id':Number(_0x1869cd[_0x73e2('0x2b')]['id']),'tags':_0x392e2f||[]};});}})[_0x73e2('0x19')](respondWithResult(_0x3bf074,null))['catch'](handleError(_0x3bf074,null));};exports['removeTags']=function(_0x544266,_0x4e1b7c){return db[_0x73e2('0x21')][_0x73e2('0x34')]({'where':{'id':_0x544266['params']['id']}})[_0x73e2('0x19')](handleEntityNotFound(_0x4e1b7c,null))['then'](function(_0x3416fc){if(_0x3416fc){return _0x3416fc[_0x73e2('0x50')](_0x544266[_0x73e2('0x26')]['ids']);}})['then'](respondWithStatusCode(_0x4e1b7c,null))[_0x73e2('0x27')](handleError(_0x4e1b7c,null));};exports['download']=function(_0x55efb2,_0x3f85c8){var _0x2d4419=moment()[_0x73e2('0x51')]()['toString']();var _0x2a7784=path[_0x73e2('0x52')](config[_0x73e2('0x53')],'server',_0x73e2('0x54'),_0x73e2('0x55'));var _0x3bef3c=path[_0x73e2('0x52')](config[_0x73e2('0x53')],_0x73e2('0x56'),_0x73e2('0x54'),_0x73e2('0x57'));var _0x3a32a9=path[_0x73e2('0x52')](_0x2a7784,_0x2d4419);var _0x50db49=util[_0x73e2('0x58')](_0x73e2('0x59'),_0x55efb2[_0x73e2('0x2b')]['id'],_0x2d4419);var _0x3c53c9=path[_0x73e2('0x52')](_0x2a7784,_0x50db49);var _0x28d7fd=[];_0x28d7fd[_0x73e2('0x5a')]({'model':db['User'],'as':_0x73e2('0x5b'),'attributes':['id',_0x73e2('0x5c')],'raw':!![]});_0x28d7fd[_0x73e2('0x5a')]({'model':db[_0x73e2('0x5d')],'as':_0x73e2('0x5e'),'attributes':['id',_0x73e2('0x5f'),'lastName'],'raw':!![]});if(_0x55efb2['query'][_0x73e2('0x57')]){_0x28d7fd['push']({'model':db[_0x73e2('0x60')],'as':_0x73e2('0x60'),'raw':!![]});}var _0x13a80b=[{'model':db[_0x73e2('0x39')],'as':'Messages','attributes':['id',_0x73e2('0x36'),_0x73e2('0x61'),_0x73e2('0x62'),'secret','read'],'include':_0x28d7fd}];_0x13a80b[_0x73e2('0x5a')]({'model':db[_0x73e2('0x63')],'as':_0x73e2('0x64'),'attributes':['id','name']});_0x13a80b[_0x73e2('0x5a')]({'model':db[_0x73e2('0x5b')],'as':_0x73e2('0x65'),'attributes':['id','fullname']});return db[_0x73e2('0x21')][_0x73e2('0x34')]({'where':{'id':_0x55efb2[_0x73e2('0x2b')]['id']},'include':_0x13a80b})[_0x73e2('0x19')](handleEntityNotFound(_0x3f85c8,null))[_0x73e2('0x19')](function(_0x199202){if(_0x199202){var _0xbbc629=_0x199202[_0x73e2('0x66')]({'plain':!![]});fs[_0x73e2('0x67')](_0x3a32a9);var _0x8f35a7={'channel':_0x73e2('0x68'),'account':_0xbbc629['Account'][_0x73e2('0x1d')],'agent':_0xbbc629[_0x73e2('0x65')]?_0xbbc629[_0x73e2('0x65')][_0x73e2('0x5c')]:_0x73e2('0x69'),'createdAt':moment(_0xbbc629[_0x73e2('0x61')])[_0x73e2('0x58')](_0x73e2('0x6a'))[_0x73e2('0x6b')](),'closedAt':_0xbbc629[_0x73e2('0x6c')]?moment(_0xbbc629['closedAt'])['format'](_0x73e2('0x6a'))['toString']():'','disposition':_0xbbc629[_0x73e2('0x6d')],'visibility':_0xbbc629[_0x73e2('0x6e')]?_0x73e2('0x6f'):'Private','messages':_(_0xbbc629[_0x73e2('0x70')])[_0x73e2('0x43')]({'secret':![]})[_0x73e2('0x20')](function(_0x320e4a){if(_0x320e4a[_0x73e2('0x60')]){var _0x379f75=path[_0x73e2('0x52')](_0x3bef3c,_0x320e4a[_0x73e2('0x60')][_0x73e2('0x71')]);if(fs['existsSync'](_0x379f75)){fs[_0x73e2('0x72')](_0x379f75)['pipe'](fs[_0x73e2('0x73')](path['join'](_0x3a32a9,_0x320e4a[_0x73e2('0x60')][_0x73e2('0x71')])));}}return{'date':moment(_0x320e4a[_0x73e2('0x61')])['format'](_0x73e2('0x6a'))[_0x73e2('0x6b')](),'sender':_0x320e4a[_0x73e2('0x62')]===_0x73e2('0x74')?_0x320e4a[_0x73e2('0x5b')]?_0x320e4a[_0x73e2('0x5b')][_0x73e2('0x5c')]:_0x73e2('0x75'):_0x320e4a[_0x73e2('0x5e')][_0x73e2('0x5f')]+(_0x320e4a[_0x73e2('0x5e')][_0x73e2('0x76')]?'\x20'+_0x320e4a[_0x73e2('0x5e')][_0x73e2('0x76')]:''),'body':_0x320e4a[_0x73e2('0x60')]?_0x320e4a[_0x73e2('0x60')]['basename']:_0x320e4a[_0x73e2('0x36')],'direction':_0x320e4a[_0x73e2('0x62')]===_0x73e2('0x74')?'A':'C','secret':_0x320e4a[_0x73e2('0x77')],'read':_0x320e4a[_0x73e2('0x78')],'attachment':_0x320e4a[_0x73e2('0x60')]};})[_0x73e2('0x79')]()};return ejs[_0x73e2('0x7a')](path[_0x73e2('0x52')](config['root'],'server',_0x73e2('0x7b'),_0x73e2('0x7c')),{'interaction':_0x8f35a7})[_0x73e2('0x19')](function(_0x1560c3){var _0x29d63c=path[_0x73e2('0x52')](_0x3a32a9,_0x73e2('0x7d')+_0xbbc629['id']+'-'+_0x2d4419+_0x73e2('0x7e'));var _0xde0fe3={'path':_0x29d63c,'channel':_0x73e2('0x68'),'interactionId':_0xbbc629['id']};return pdf[_0x73e2('0x7f')](_0x1560c3,_0xde0fe3);})[_0x73e2('0x19')](function(){return new Promise(function(_0x191d45,_0x517d88){zipdir(_0x3a32a9,{'saveTo':_0x3c53c9},function(_0x31e442,_0x2fcb68){if(_0x31e442)return _0x517d88(_0x31e442);return _0x191d45(_0x2fcb68);});})['then'](function(){return new Promise(function(_0x30ee23,_0x297846){rimraf(_0x3a32a9,function(_0x4bd641){if(_0x4bd641)_0x297846(_0x4bd641);return _0x30ee23();});});})[_0x73e2('0x19')](function(){return _0x3f85c8['download'](_0x3c53c9,_0x50db49,function(_0x3f2f68){if(_0x3f2f68){logger['error']('Unable\x20to\x20delete\x20zip\x20file',_0x3f2f68);}else{fs[_0x73e2('0x80')](_0x3c53c9);}});});});}else{return _0x3f85c8[_0x73e2('0xf')](0xc8);}})[_0x73e2('0x27')](handleError(_0x3f85c8,null));};