cb03c3f4e2fb4b80ec2f12cef06336b469eb8a82
[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 _0x5eea=['rows','addTags','setTags','ids','spread','Tag','emit','openchannelInteractionTags:save','removeTags','download','toString','join','root','server','files','tmp','attachments','transcript-%d-%s.zip','push','User','CmContact','Contact','firstName','lastName','Attachment','Messages','createdAt','direction','secret','read','OpenchannelAccount','Owner','fullname','mkdirSync','Openchannel','closedAt','disposition','map','basename','createReadStream','pipe','createWriteStream','out','renderFile','views','downloadInteraction.ejs','transcript-','createPdfFromHTML','error','Unable\x20to\x20delete\x20zip\x20file','unlinkSync','rimraf','zip-dir','util','path','ejs','lodash','ioredis','../../components/export/pdf','../../config/logger','api','../../config/environment','../../mysqldb','defaults','redis','localhost','socket.io-emitter','./openchannelInteraction.socket','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','update','then','stack','name','OpenchannelInteraction','type','key','getOptions','findAll','openchannel','query','user','catch','from','params','model','keys','filters','intersection','attributes','fields','merge','options','find','create','body','describe','addMessage','omit','getMessages','findOne','OpenchannelMessage','rawAttributes','hasOwnProperty','nolimit','sort','where','pick','OpenchannelInteractionId','filter','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','includeAll','include'];(function(_0xf83277,_0x55487e){var _0x361e0e=function(_0xa2b602){while(--_0xa2b602){_0xf83277['push'](_0xf83277['shift']());}};_0x361e0e(++_0x55487e);}(_0x5eea,0x1a7));var _0xa5ee=function(_0x213ecd,_0x5aa5a2){_0x213ecd=_0x213ecd-0x0;var _0x3974c0=_0x5eea[_0x213ecd];return _0x3974c0;};'use strict';var rimraf=require(_0xa5ee('0x0'));var zipdir=require(_0xa5ee('0x1'));var moment=require('moment');var util=require(_0xa5ee('0x2'));var path=require(_0xa5ee('0x3'));var ejs=require(_0xa5ee('0x4'));var fs=require('fs');var _=require(_0xa5ee('0x5'));var Redis=require(_0xa5ee('0x6'));var interaction=require('../../components/interaction/service');var qs=require('../../components/parsers/qs');var pdf=require(_0xa5ee('0x7'));var logger=require(_0xa5ee('0x8'))(_0xa5ee('0x9'));var config=require(_0xa5ee('0xa'));var db=require(_0xa5ee('0xb'))['db'];config['redis']=_[_0xa5ee('0xc')](config[_0xa5ee('0xd')],{'host':_0xa5ee('0xe'),'port':0x18eb});var socket=require(_0xa5ee('0xf'))(new Redis(config[_0xa5ee('0xd')]));require(_0xa5ee('0x10'))['register'](socket);function respondWithStatusCode(_0xd6cdd8,_0x505266){_0x505266=_0x505266||0xcc;return function(_0x5cbbac){if(_0x5cbbac){return _0xd6cdd8[_0xa5ee('0x11')](_0x505266);}return _0xd6cdd8[_0xa5ee('0x12')](_0x505266)[_0xa5ee('0x13')]();};}function respondWithResult(_0x45a186,_0x316aed){_0x316aed=_0x316aed||0xc8;return function(_0x5b4322){if(_0x5b4322){return _0x45a186[_0xa5ee('0x12')](_0x316aed)[_0xa5ee('0x14')](_0x5b4322);}};}function respondWithFilteredResult(_0x33f069,_0x976df5){return function(_0x4c0d58){if(_0x4c0d58){var _0x467468=typeof _0x976df5[_0xa5ee('0x15')]===_0xa5ee('0x16')&&typeof _0x976df5['limit']===_0xa5ee('0x16');var _0x3729cc=_0x4c0d58[_0xa5ee('0x17')];var _0x168d13=_0x467468?0x0:_0x976df5['offset'];var _0x382c76=_0x467468?_0x4c0d58[_0xa5ee('0x17')]:_0x976df5['offset']+_0x976df5[_0xa5ee('0x18')];var _0x3663bc;if(_0x382c76>=_0x3729cc){_0x382c76=_0x3729cc;_0x3663bc=0xc8;}else{_0x3663bc=0xce;}_0x33f069['status'](_0x3663bc);return _0x33f069[_0xa5ee('0x19')](_0xa5ee('0x1a'),_0x168d13+'-'+_0x382c76+'/'+_0x3729cc)[_0xa5ee('0x14')](_0x4c0d58);}return null;};}function saveUpdates(_0x358d18){return function(_0xa9a89d){if(_0xa9a89d){return _0xa9a89d[_0xa5ee('0x1b')](_0x358d18)['then'](function(_0x4d273f){return _0x4d273f;});}return null;};}function removeEntity(_0xe47ab9){return function(_0x57220f){if(_0x57220f){return _0x57220f['destroy']()[_0xa5ee('0x1c')](function(){_0xe47ab9[_0xa5ee('0x12')](0xcc)[_0xa5ee('0x13')]();});}};}function handleEntityNotFound(_0x5a0b90){return function(_0x5dcc17){if(!_0x5dcc17){_0x5a0b90[_0xa5ee('0x11')](0x194);}return _0x5dcc17;};}function handleError(_0x138ae6,_0x137b5f){_0x137b5f=_0x137b5f||0x1f4;return function(_0x3eb9d1){logger['error'](_0x3eb9d1[_0xa5ee('0x1d')]);if(_0x3eb9d1[_0xa5ee('0x1e')]){delete _0x3eb9d1[_0xa5ee('0x1e')];}_0x138ae6[_0xa5ee('0x12')](_0x137b5f)['send'](_0x3eb9d1);};}exports['index']=function(_0x508590,_0x1d06f6){var _0x3250b5={};var _0x447606=_['map'](db[_0xa5ee('0x1f')]['rawAttributes'],function(_0x52b5ef){return{'name':_0x52b5ef['fieldName'],'type':_0x52b5ef[_0xa5ee('0x20')][_0xa5ee('0x21')]};});_0x3250b5=qs[_0xa5ee('0x22')](_0x447606,_0x508590);return interaction[_0xa5ee('0x23')](_0xa5ee('0x24'),_0x508590[_0xa5ee('0x25')],_0x508590[_0xa5ee('0x26')],_0x3250b5,_0x447606)[_0xa5ee('0x1c')](respondWithFilteredResult(_0x1d06f6,_0x3250b5))[_0xa5ee('0x27')](handleError(_0x1d06f6,null));};exports['show']=function(_0xfbb30d,_0x121b19){var _0x4e7352={};if(_0xfbb30d[_0xa5ee('0x25')][_0xa5ee('0x20')]&&_0xfbb30d[_0xa5ee('0x25')][_0xa5ee('0x20')]===_0xa5ee('0x28')){_0x4e7352['from']=_0xfbb30d['params']['id'];}else{_0x4e7352['id']=_0xfbb30d[_0xa5ee('0x29')]['id'];}var _0x1bb45b={'raw':![],'where':_0x4e7352},_0xd5b981={};_0xd5b981[_0xa5ee('0x2a')]=_['keys'](db[_0xa5ee('0x1f')]['rawAttributes']);_0xd5b981[_0xa5ee('0x25')]=_[_0xa5ee('0x2b')](_0xfbb30d[_0xa5ee('0x25')]);_0xd5b981[_0xa5ee('0x2c')]=_[_0xa5ee('0x2d')](_0xd5b981[_0xa5ee('0x2a')],_0xd5b981[_0xa5ee('0x25')]);_0x1bb45b[_0xa5ee('0x2e')]=_[_0xa5ee('0x2d')](_0xd5b981[_0xa5ee('0x2a')],qs['fields'](_0xfbb30d[_0xa5ee('0x25')][_0xa5ee('0x2f')]));_0x1bb45b[_0xa5ee('0x2e')]=_0x1bb45b[_0xa5ee('0x2e')]['length']?_0x1bb45b['attributes']:_0xd5b981[_0xa5ee('0x2a')];if(_0xfbb30d[_0xa5ee('0x25')]['includeAll']){_0x1bb45b['include']=[{'all':!![]}];}_0x1bb45b=_[_0xa5ee('0x30')]({},_0x1bb45b,_0xfbb30d[_0xa5ee('0x31')]);return db[_0xa5ee('0x1f')][_0xa5ee('0x32')](_0x1bb45b)[_0xa5ee('0x1c')](handleEntityNotFound(_0x121b19,null))['then'](respondWithResult(_0x121b19,null))[_0xa5ee('0x27')](handleError(_0x121b19,null));};exports[_0xa5ee('0x33')]=function(_0x2c34ce,_0x1b0553){return db[_0xa5ee('0x1f')][_0xa5ee('0x33')](_0x2c34ce[_0xa5ee('0x34')],{})[_0xa5ee('0x1c')](respondWithResult(_0x1b0553,0xc9))['catch'](handleError(_0x1b0553,null));};exports[_0xa5ee('0x1b')]=function(_0x47c04d,_0x3d7c56){if(_0x47c04d[_0xa5ee('0x34')]['id']){delete _0x47c04d[_0xa5ee('0x34')]['id'];}return db['OpenchannelInteraction'][_0xa5ee('0x32')]({'where':{'id':_0x47c04d[_0xa5ee('0x29')]['id']}})[_0xa5ee('0x1c')](handleEntityNotFound(_0x3d7c56,null))['then'](saveUpdates(_0x47c04d[_0xa5ee('0x34')],null))[_0xa5ee('0x1c')](respondWithResult(_0x3d7c56,null))[_0xa5ee('0x27')](handleError(_0x3d7c56,null));};exports['destroy']=function(_0x50a4df,_0x16e702){return db[_0xa5ee('0x1f')][_0xa5ee('0x32')]({'where':{'id':_0x50a4df[_0xa5ee('0x29')]['id']}})[_0xa5ee('0x1c')](handleEntityNotFound(_0x16e702,null))[_0xa5ee('0x1c')](removeEntity(_0x16e702,null))['catch'](handleError(_0x16e702,null));};exports[_0xa5ee('0x35')]=function(_0x4e78c0,_0x2b79e6){return db['OpenchannelInteraction'][_0xa5ee('0x35')]()['then'](respondWithResult(_0x2b79e6,null))[_0xa5ee('0x27')](handleError(_0x2b79e6,null));};exports['addMessage']=function(_0x17c5cb,_0x511764){return db['OpenchannelMessage']['find']({'where':{'id':_0x17c5cb[_0xa5ee('0x29')]['id']}})['then'](handleEntityNotFound(_0x511764,null))[_0xa5ee('0x1c')](function(_0x337970){if(_0x337970){return _0x337970[_0xa5ee('0x36')](_0x17c5cb[_0xa5ee('0x34')]['ids'],_[_0xa5ee('0x37')](_0x17c5cb[_0xa5ee('0x34')],['ids','id'])||{});}})[_0xa5ee('0x1c')](respondWithResult(_0x511764,null))[_0xa5ee('0x27')](handleError(_0x511764,null));};exports[_0xa5ee('0x38')]=function(_0x561498,_0x15c8b6){var _0x586c28={'raw':![],'where':{}};var _0x537e63={};var _0x296702={'count':0x0,'rows':[]};return db[_0xa5ee('0x1f')][_0xa5ee('0x39')]({'where':{'id':_0x561498['params']['id']}})[_0xa5ee('0x1c')](handleEntityNotFound(_0x15c8b6,null))[_0xa5ee('0x1c')](function(_0x5a48d7){if(_0x5a48d7){_0x537e63[_0xa5ee('0x2a')]=_['keys'](db[_0xa5ee('0x3a')][_0xa5ee('0x3b')]);_0x537e63[_0xa5ee('0x25')]=_[_0xa5ee('0x2b')](_0x561498[_0xa5ee('0x25')]);_0x537e63[_0xa5ee('0x2c')]=_['intersection'](_0x537e63[_0xa5ee('0x2a')],_0x537e63[_0xa5ee('0x25')]);_0x586c28[_0xa5ee('0x2e')]=_[_0xa5ee('0x2d')](_0x537e63[_0xa5ee('0x2a')],qs[_0xa5ee('0x2f')](_0x561498[_0xa5ee('0x25')]['fields']));_0x586c28[_0xa5ee('0x2e')]=_0x586c28[_0xa5ee('0x2e')]['length']?_0x586c28[_0xa5ee('0x2e')]:_0x537e63[_0xa5ee('0x2a')];if(!_0x561498[_0xa5ee('0x25')][_0xa5ee('0x3c')](_0xa5ee('0x3d'))){_0x586c28[_0xa5ee('0x18')]=qs['limit'](_0x561498['query'][_0xa5ee('0x18')]);_0x586c28['offset']=qs[_0xa5ee('0x15')](_0x561498[_0xa5ee('0x25')][_0xa5ee('0x15')]);}_0x586c28['order']=qs['sort'](_0x561498[_0xa5ee('0x25')][_0xa5ee('0x3e')]);_0x586c28[_0xa5ee('0x3f')]=qs[_0xa5ee('0x2c')](_[_0xa5ee('0x40')](_0x561498[_0xa5ee('0x25')],_0x537e63['filters']));_0x586c28[_0xa5ee('0x3f')][_0xa5ee('0x41')]=_0x5a48d7['id'];if(_0x561498[_0xa5ee('0x25')][_0xa5ee('0x42')]){_0x586c28[_0xa5ee('0x3f')]=_[_0xa5ee('0x30')](_0x586c28[_0xa5ee('0x3f')],{'$or':_['map'](_0x586c28['attributes'],function(_0x2c5187){var _0x4a7fdf={};_0x4a7fdf[_0x2c5187]={'$like':'%'+_0x561498[_0xa5ee('0x25')][_0xa5ee('0x42')]+'%'};return _0x4a7fdf;})});}if(_0x561498[_0xa5ee('0x25')]['$gte']){var _0x50b9f5=_0x561498[_0xa5ee('0x25')][_0xa5ee('0x43')][_0xa5ee('0x44')](',');var _0x207da7={};_0x207da7[_0x50b9f5[0x0]]={'$gte':moment(_0x50b9f5[0x1])[_0xa5ee('0x45')](_0xa5ee('0x46'))};_0x586c28[_0xa5ee('0x3f')]=_['merge'](_0x586c28['where'],_0x207da7);}_0x586c28=_['merge']({},_0x586c28,_0x561498['options']);return db[_0xa5ee('0x3a')]['count']({'where':_0x586c28['where']})['then'](function(_0x4cf8dd){_0x296702['count']=_0x4cf8dd;if(_0x561498['query'][_0xa5ee('0x47')]){_0x586c28[_0xa5ee('0x48')]=[{'all':!![]}];}return db['OpenchannelMessage'][_0xa5ee('0x23')](_0x586c28);})[_0xa5ee('0x1c')](function(_0x32f558){_0x296702[_0xa5ee('0x49')]=_0x32f558;return _0x296702;});}})[_0xa5ee('0x1c')](respondWithFilteredResult(_0x15c8b6,_0x586c28))['catch'](handleError(_0x15c8b6,null));};exports[_0xa5ee('0x4a')]=function(_0x2e1c43,_0x72d14b){return db['OpenchannelInteraction']['find']({'where':{'id':_0x2e1c43[_0xa5ee('0x29')]['id']}})[_0xa5ee('0x1c')](handleEntityNotFound(_0x72d14b,null))[_0xa5ee('0x1c')](function(_0x349fb0){if(_0x349fb0){return _0x349fb0[_0xa5ee('0x4b')](_0x2e1c43['body'][_0xa5ee('0x4c')],_[_0xa5ee('0x37')](_0x2e1c43[_0xa5ee('0x34')],[_0xa5ee('0x4c'),'id'])||{})[_0xa5ee('0x4d')](function(){return db[_0xa5ee('0x4e')]['findAll']({'attributes':['id',_0xa5ee('0x1e'),'color'],'where':{'id':_0x2e1c43[_0xa5ee('0x34')][_0xa5ee('0x4c')]}});})['then'](function(_0x362c24){socket[_0xa5ee('0x4f')](_0xa5ee('0x50'),{'id':Number(_0x2e1c43[_0xa5ee('0x29')]['id']),'tags':_0x362c24||[]});return{'id':Number(_0x2e1c43['params']['id']),'tags':_0x362c24||[]};});}})['then'](respondWithResult(_0x72d14b,null))['catch'](handleError(_0x72d14b,null));};exports[_0xa5ee('0x51')]=function(_0x28651d,_0x31ee7b){return db[_0xa5ee('0x1f')][_0xa5ee('0x32')]({'where':{'id':_0x28651d[_0xa5ee('0x29')]['id']}})['then'](handleEntityNotFound(_0x31ee7b,null))[_0xa5ee('0x1c')](function(_0x467aa3){if(_0x467aa3){return _0x467aa3[_0xa5ee('0x51')](_0x28651d[_0xa5ee('0x25')][_0xa5ee('0x4c')]);}})[_0xa5ee('0x1c')](respondWithStatusCode(_0x31ee7b,null))['catch'](handleError(_0x31ee7b,null));};exports[_0xa5ee('0x52')]=function(_0x3988c4,_0x557c78){var _0x52e764=moment()['unix']()[_0xa5ee('0x53')]();var _0x1006f8=path[_0xa5ee('0x54')](config[_0xa5ee('0x55')],_0xa5ee('0x56'),_0xa5ee('0x57'),_0xa5ee('0x58'));var _0x33dfa3=path[_0xa5ee('0x54')](config[_0xa5ee('0x55')],_0xa5ee('0x56'),_0xa5ee('0x57'),_0xa5ee('0x59'));var _0x1f15db=path['join'](_0x1006f8,_0x52e764);var _0x49ed1d=util['format'](_0xa5ee('0x5a'),_0x3988c4[_0xa5ee('0x29')]['id'],_0x52e764);var _0x383072=path[_0xa5ee('0x54')](_0x1006f8,_0x49ed1d);var _0x17b560=[];_0x17b560[_0xa5ee('0x5b')]({'model':db['User'],'as':_0xa5ee('0x5c'),'attributes':['id','fullname'],'raw':!![]});_0x17b560[_0xa5ee('0x5b')]({'model':db[_0xa5ee('0x5d')],'as':_0xa5ee('0x5e'),'attributes':['id',_0xa5ee('0x5f'),_0xa5ee('0x60')],'raw':!![]});if(_0x3988c4[_0xa5ee('0x25')]['attachments']){_0x17b560[_0xa5ee('0x5b')]({'model':db[_0xa5ee('0x61')],'as':_0xa5ee('0x61'),'raw':!![]});}var _0x228fe0=[{'model':db[_0xa5ee('0x3a')],'as':_0xa5ee('0x62'),'attributes':['id','body',_0xa5ee('0x63'),_0xa5ee('0x64'),_0xa5ee('0x65'),_0xa5ee('0x66')],'include':_0x17b560}];_0x228fe0[_0xa5ee('0x5b')]({'model':db[_0xa5ee('0x67')],'as':'Account','attributes':['id','name']});_0x228fe0['push']({'model':db[_0xa5ee('0x5c')],'as':_0xa5ee('0x68'),'attributes':['id',_0xa5ee('0x69')]});return db[_0xa5ee('0x1f')][_0xa5ee('0x32')]({'where':{'id':_0x3988c4[_0xa5ee('0x29')]['id']},'include':_0x228fe0})[_0xa5ee('0x1c')](handleEntityNotFound(_0x557c78,null))[_0xa5ee('0x1c')](function(_0x2e3073){if(_0x2e3073){var _0x293b07=_0x2e3073['get']({'plain':!![]});fs[_0xa5ee('0x6a')](_0x1f15db);var _0x5d749e={'channel':_0xa5ee('0x6b'),'account':_0x293b07['Account'][_0xa5ee('0x1e')],'agent':_0x293b07[_0xa5ee('0x68')]?_0x293b07[_0xa5ee('0x68')][_0xa5ee('0x69')]:'N.A.','createdAt':moment(_0x293b07[_0xa5ee('0x63')])[_0xa5ee('0x45')](_0xa5ee('0x46'))[_0xa5ee('0x53')](),'closedAt':_0x293b07['closed']?moment(_0x293b07[_0xa5ee('0x6c')])['format']('YYYY-MM-DD\x20HH:mm:ss')[_0xa5ee('0x53')]():'','disposition':_0x293b07[_0xa5ee('0x6d')],'visibility':_0x293b07['threadId']?'Public':'Private','messages':_(_0x293b07[_0xa5ee('0x62')])['filter']({'secret':![]})[_0xa5ee('0x6e')](function(_0x51d53a){if(_0x51d53a['Attachment']){var _0x3a7ab8=path[_0xa5ee('0x54')](_0x33dfa3,_0x51d53a['Attachment'][_0xa5ee('0x6f')]);if(fs['existsSync'](_0x3a7ab8)){fs[_0xa5ee('0x70')](_0x3a7ab8)[_0xa5ee('0x71')](fs[_0xa5ee('0x72')](path['join'](_0x1f15db,_0x51d53a[_0xa5ee('0x61')]['basename'])));}}return{'date':moment(_0x51d53a[_0xa5ee('0x63')])[_0xa5ee('0x45')]('YYYY-MM-DD\x20HH:mm:ss')[_0xa5ee('0x53')](),'sender':_0x51d53a[_0xa5ee('0x64')]===_0xa5ee('0x73')?_0x51d53a[_0xa5ee('0x5c')]?_0x51d53a[_0xa5ee('0x5c')][_0xa5ee('0x69')]:'System':_0x51d53a[_0xa5ee('0x5e')][_0xa5ee('0x5f')]+(_0x51d53a[_0xa5ee('0x5e')][_0xa5ee('0x60')]?'\x20'+_0x51d53a['Contact'][_0xa5ee('0x60')]:''),'body':_0x51d53a[_0xa5ee('0x61')]?_0x51d53a['Attachment'][_0xa5ee('0x6f')]:_0x51d53a[_0xa5ee('0x34')],'direction':_0x51d53a[_0xa5ee('0x64')]===_0xa5ee('0x73')?'A':'C','secret':_0x51d53a[_0xa5ee('0x65')],'read':_0x51d53a['read'],'attachment':_0x51d53a[_0xa5ee('0x61')]};})['value']()};return ejs[_0xa5ee('0x74')](path[_0xa5ee('0x54')](config[_0xa5ee('0x55')],'server',_0xa5ee('0x75'),_0xa5ee('0x76')),{'interaction':_0x5d749e})['then'](function(_0xc0db3b){var _0x1d1e8b=path['join'](_0x1f15db,_0xa5ee('0x77')+_0x293b07['id']+'-'+_0x52e764+'.pdf');var _0x4bc682={'path':_0x1d1e8b,'channel':_0xa5ee('0x6b'),'interactionId':_0x293b07['id']};return pdf[_0xa5ee('0x78')](_0xc0db3b,_0x4bc682);})[_0xa5ee('0x1c')](function(){return new Promise(function(_0x9e6ceb,_0x4ec526){zipdir(_0x1f15db,{'saveTo':_0x383072},function(_0x55713b,_0x29196e){if(_0x55713b)return _0x4ec526(_0x55713b);return _0x9e6ceb(_0x29196e);});})['then'](function(){return new Promise(function(_0x500c63,_0x42f172){rimraf(_0x1f15db,function(_0x5831d8){if(_0x5831d8)_0x42f172(_0x5831d8);return _0x500c63();});});})['then'](function(){return _0x557c78['download'](_0x383072,_0x49ed1d,function(_0x548c9a){if(_0x548c9a){logger[_0xa5ee('0x79')](_0xa5ee('0x7a'),_0x548c9a);}else{fs[_0xa5ee('0x7b')](_0x383072);}});});});}else{return _0x557c78[_0xa5ee('0x11')](0xc8);}})[_0xa5ee('0x27')](handleError(_0x557c78,null));};