f759dabe711ab05e569a65bbcf9859708966466b
[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 _0xdb30=['tmp','format','transcript-%d-%s.zip','push','User','fullname','CmContact','Contact','firstName','lastName','Attachment','Messages','createdAt','direction','secret','read','OpenchannelAccount','Account','Owner','get','mkdirSync','Openchannel','toString','closed','closedAt','disposition','Private','basename','existsSync','createWriteStream','out','System','value','renderFile','views','downloadInteraction.ejs','transcript-','.pdf','createPdfFromHTML','download','Unable\x20to\x20delete\x20zip\x20file','unlinkSync','sendStatus','rimraf','zip-dir','moment','path','ejs','lodash','ioredis','../../components/interaction/service','../../components/parsers/qs','../../components/export/pdf','../../config/logger','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','register','status','end','offset','undefined','limit','count','set','Content-Range','json','update','then','destroy','error','stack','name','index','OpenchannelInteraction','rawAttributes','fieldName','key','getOptions','findAll','openchannel','query','catch','show','type','from','params','model','keys','filters','intersection','attributes','fields','includeAll','include','find','body','describe','addMessage','ids','omit','getMessages','findOne','OpenchannelMessage','hasOwnProperty','sort','where','pick','OpenchannelInteractionId','map','filter','YYYY-MM-DD\x20HH:mm:ss','merge','options','rows','spread','Tag','color','emit','openchannelInteractionTags:save','removeTags','unix','join','root','server','files'];(function(_0x516470,_0x23750b){var _0x32b21a=function(_0x39f742){while(--_0x39f742){_0x516470['push'](_0x516470['shift']());}};_0x32b21a(++_0x23750b);}(_0xdb30,0xac));var _0x0db3=function(_0x6de67d,_0x4d3e54){_0x6de67d=_0x6de67d-0x0;var _0x4789e9=_0xdb30[_0x6de67d];return _0x4789e9;};'use strict';var rimraf=require(_0x0db3('0x0'));var zipdir=require(_0x0db3('0x1'));var moment=require(_0x0db3('0x2'));var util=require('util');var path=require(_0x0db3('0x3'));var ejs=require(_0x0db3('0x4'));var fs=require('fs');var _=require(_0x0db3('0x5'));var Redis=require(_0x0db3('0x6'));var interaction=require(_0x0db3('0x7'));var qs=require(_0x0db3('0x8'));var pdf=require(_0x0db3('0x9'));var logger=require(_0x0db3('0xa'))('api');var config=require(_0x0db3('0xb'));var db=require(_0x0db3('0xc'))['db'];config[_0x0db3('0xd')]=_[_0x0db3('0xe')](config['redis'],{'host':_0x0db3('0xf'),'port':0x18eb});var socket=require(_0x0db3('0x10'))(new Redis(config[_0x0db3('0xd')]));require('./openchannelInteraction.socket')[_0x0db3('0x11')](socket);function respondWithStatusCode(_0x2bcfd1,_0x2d619e){_0x2d619e=_0x2d619e||0xcc;return function(_0xd9129c){if(_0xd9129c){return _0x2bcfd1['sendStatus'](_0x2d619e);}return _0x2bcfd1[_0x0db3('0x12')](_0x2d619e)[_0x0db3('0x13')]();};}function respondWithResult(_0x2de679,_0x54f881){_0x54f881=_0x54f881||0xc8;return function(_0xd51de){if(_0xd51de){return _0x2de679[_0x0db3('0x12')](_0x54f881)['json'](_0xd51de);}};}function respondWithFilteredResult(_0x59dc3f,_0x59676f){return function(_0x5c7040){if(_0x5c7040){var _0x25e424=typeof _0x59676f[_0x0db3('0x14')]===_0x0db3('0x15')&&typeof _0x59676f[_0x0db3('0x16')]===_0x0db3('0x15');var _0x1bca92=_0x5c7040[_0x0db3('0x17')];var _0x22e3d1=_0x25e424?0x0:_0x59676f[_0x0db3('0x14')];var _0xd1f8ed=_0x25e424?_0x5c7040[_0x0db3('0x17')]:_0x59676f[_0x0db3('0x14')]+_0x59676f[_0x0db3('0x16')];var _0x2dadcf;if(_0xd1f8ed>=_0x1bca92){_0xd1f8ed=_0x1bca92;_0x2dadcf=0xc8;}else{_0x2dadcf=0xce;}_0x59dc3f['status'](_0x2dadcf);return _0x59dc3f[_0x0db3('0x18')](_0x0db3('0x19'),_0x22e3d1+'-'+_0xd1f8ed+'/'+_0x1bca92)[_0x0db3('0x1a')](_0x5c7040);}return null;};}function saveUpdates(_0x15bcfe){return function(_0x10b808){if(_0x10b808){return _0x10b808[_0x0db3('0x1b')](_0x15bcfe)[_0x0db3('0x1c')](function(_0x26f2fa){return _0x26f2fa;});}return null;};}function removeEntity(_0x356244){return function(_0x3b4ee0){if(_0x3b4ee0){return _0x3b4ee0[_0x0db3('0x1d')]()[_0x0db3('0x1c')](function(){_0x356244[_0x0db3('0x12')](0xcc)[_0x0db3('0x13')]();});}};}function handleEntityNotFound(_0x4386f6){return function(_0x3c212b){if(!_0x3c212b){_0x4386f6['sendStatus'](0x194);}return _0x3c212b;};}function handleError(_0x4cccc4,_0x5b1dbd){_0x5b1dbd=_0x5b1dbd||0x1f4;return function(_0x4599f9){logger[_0x0db3('0x1e')](_0x4599f9[_0x0db3('0x1f')]);if(_0x4599f9[_0x0db3('0x20')]){delete _0x4599f9[_0x0db3('0x20')];}_0x4cccc4[_0x0db3('0x12')](_0x5b1dbd)['send'](_0x4599f9);};}exports[_0x0db3('0x21')]=function(_0x48cfc5,_0x555436){var _0x5bd7e2={};var _0x1b7cc4=_['map'](db[_0x0db3('0x22')][_0x0db3('0x23')],function(_0x33abf7){return{'name':_0x33abf7[_0x0db3('0x24')],'type':_0x33abf7['type'][_0x0db3('0x25')]};});_0x5bd7e2=qs[_0x0db3('0x26')](_0x1b7cc4,_0x48cfc5);return interaction[_0x0db3('0x27')](_0x0db3('0x28'),_0x48cfc5[_0x0db3('0x29')],_0x48cfc5['user'],_0x5bd7e2,_0x1b7cc4)[_0x0db3('0x1c')](respondWithFilteredResult(_0x555436,_0x5bd7e2))[_0x0db3('0x2a')](handleError(_0x555436,null));};exports[_0x0db3('0x2b')]=function(_0x3e3c11,_0x1c8aae){var _0x4d0d44={};if(_0x3e3c11[_0x0db3('0x29')]['type']&&_0x3e3c11[_0x0db3('0x29')][_0x0db3('0x2c')]===_0x0db3('0x2d')){_0x4d0d44[_0x0db3('0x2d')]=_0x3e3c11[_0x0db3('0x2e')]['id'];}else{_0x4d0d44['id']=_0x3e3c11[_0x0db3('0x2e')]['id'];}var _0x1a0ebe={'raw':![],'where':_0x4d0d44},_0x27cd94={};_0x27cd94[_0x0db3('0x2f')]=_[_0x0db3('0x30')](db[_0x0db3('0x22')][_0x0db3('0x23')]);_0x27cd94[_0x0db3('0x29')]=_[_0x0db3('0x30')](_0x3e3c11['query']);_0x27cd94[_0x0db3('0x31')]=_[_0x0db3('0x32')](_0x27cd94[_0x0db3('0x2f')],_0x27cd94[_0x0db3('0x29')]);_0x1a0ebe[_0x0db3('0x33')]=_[_0x0db3('0x32')](_0x27cd94['model'],qs[_0x0db3('0x34')](_0x3e3c11[_0x0db3('0x29')][_0x0db3('0x34')]));_0x1a0ebe[_0x0db3('0x33')]=_0x1a0ebe[_0x0db3('0x33')]['length']?_0x1a0ebe[_0x0db3('0x33')]:_0x27cd94[_0x0db3('0x2f')];if(_0x3e3c11[_0x0db3('0x29')][_0x0db3('0x35')]){_0x1a0ebe[_0x0db3('0x36')]=[{'all':!![]}];}_0x1a0ebe=_['merge']({},_0x1a0ebe,_0x3e3c11['options']);return db[_0x0db3('0x22')][_0x0db3('0x37')](_0x1a0ebe)['then'](handleEntityNotFound(_0x1c8aae,null))[_0x0db3('0x1c')](respondWithResult(_0x1c8aae,null))['catch'](handleError(_0x1c8aae,null));};exports['create']=function(_0x5a3f2a,_0xf6d680){return db[_0x0db3('0x22')]['create'](_0x5a3f2a[_0x0db3('0x38')],{})['then'](respondWithResult(_0xf6d680,0xc9))[_0x0db3('0x2a')](handleError(_0xf6d680,null));};exports[_0x0db3('0x1b')]=function(_0x58a1f1,_0x1bc39f){if(_0x58a1f1['body']['id']){delete _0x58a1f1[_0x0db3('0x38')]['id'];}return db[_0x0db3('0x22')][_0x0db3('0x37')]({'where':{'id':_0x58a1f1[_0x0db3('0x2e')]['id']}})[_0x0db3('0x1c')](handleEntityNotFound(_0x1bc39f,null))['then'](saveUpdates(_0x58a1f1[_0x0db3('0x38')],null))[_0x0db3('0x1c')](respondWithResult(_0x1bc39f,null))[_0x0db3('0x2a')](handleError(_0x1bc39f,null));};exports['destroy']=function(_0x190c0c,_0x3a5dfa){return db['OpenchannelInteraction'][_0x0db3('0x37')]({'where':{'id':_0x190c0c[_0x0db3('0x2e')]['id']}})[_0x0db3('0x1c')](handleEntityNotFound(_0x3a5dfa,null))[_0x0db3('0x1c')](removeEntity(_0x3a5dfa,null))[_0x0db3('0x2a')](handleError(_0x3a5dfa,null));};exports[_0x0db3('0x39')]=function(_0x1cc5f3,_0x3b4a58){return db['OpenchannelInteraction'][_0x0db3('0x39')]()['then'](respondWithResult(_0x3b4a58,null))['catch'](handleError(_0x3b4a58,null));};exports['addMessage']=function(_0x338ddc,_0x1fa932){return db['OpenchannelMessage'][_0x0db3('0x37')]({'where':{'id':_0x338ddc['params']['id']}})[_0x0db3('0x1c')](handleEntityNotFound(_0x1fa932,null))['then'](function(_0x196d29){if(_0x196d29){return _0x196d29[_0x0db3('0x3a')](_0x338ddc[_0x0db3('0x38')][_0x0db3('0x3b')],_[_0x0db3('0x3c')](_0x338ddc[_0x0db3('0x38')],[_0x0db3('0x3b'),'id'])||{});}})[_0x0db3('0x1c')](respondWithResult(_0x1fa932,null))['catch'](handleError(_0x1fa932,null));};exports[_0x0db3('0x3d')]=function(_0x4d4174,_0x38108d){var _0x2b52b9={'raw':![],'where':{}};var _0x346808={};var _0x11a787={'count':0x0,'rows':[]};return db[_0x0db3('0x22')][_0x0db3('0x3e')]({'where':{'id':_0x4d4174[_0x0db3('0x2e')]['id']}})[_0x0db3('0x1c')](handleEntityNotFound(_0x38108d,null))['then'](function(_0x3fd1c5){if(_0x3fd1c5){_0x346808[_0x0db3('0x2f')]=_[_0x0db3('0x30')](db[_0x0db3('0x3f')][_0x0db3('0x23')]);_0x346808[_0x0db3('0x29')]=_[_0x0db3('0x30')](_0x4d4174[_0x0db3('0x29')]);_0x346808['filters']=_['intersection'](_0x346808['model'],_0x346808[_0x0db3('0x29')]);_0x2b52b9['attributes']=_[_0x0db3('0x32')](_0x346808[_0x0db3('0x2f')],qs[_0x0db3('0x34')](_0x4d4174['query'][_0x0db3('0x34')]));_0x2b52b9[_0x0db3('0x33')]=_0x2b52b9[_0x0db3('0x33')]['length']?_0x2b52b9['attributes']:_0x346808['model'];if(!_0x4d4174['query'][_0x0db3('0x40')]('nolimit')){_0x2b52b9[_0x0db3('0x16')]=qs['limit'](_0x4d4174[_0x0db3('0x29')][_0x0db3('0x16')]);_0x2b52b9[_0x0db3('0x14')]=qs[_0x0db3('0x14')](_0x4d4174['query']['offset']);}_0x2b52b9['order']=qs['sort'](_0x4d4174[_0x0db3('0x29')][_0x0db3('0x41')]);_0x2b52b9[_0x0db3('0x42')]=qs['filters'](_[_0x0db3('0x43')](_0x4d4174[_0x0db3('0x29')],_0x346808[_0x0db3('0x31')]));_0x2b52b9[_0x0db3('0x42')][_0x0db3('0x44')]=_0x3fd1c5['id'];if(_0x4d4174['query']['filter']){_0x2b52b9[_0x0db3('0x42')]=_['merge'](_0x2b52b9[_0x0db3('0x42')],{'$or':_[_0x0db3('0x45')](_0x2b52b9[_0x0db3('0x33')],function(_0x37f00a){var _0x13a14d={};_0x13a14d[_0x37f00a]={'$like':'%'+_0x4d4174['query'][_0x0db3('0x46')]+'%'};return _0x13a14d;})});}if(_0x4d4174[_0x0db3('0x29')]['$gte']){var _0x4b16dc=_0x4d4174[_0x0db3('0x29')]['$gte']['split'](',');var _0x505bee={};_0x505bee[_0x4b16dc[0x0]]={'$gte':moment(_0x4b16dc[0x1])['format'](_0x0db3('0x47'))};_0x2b52b9['where']=_[_0x0db3('0x48')](_0x2b52b9['where'],_0x505bee);}_0x2b52b9=_[_0x0db3('0x48')]({},_0x2b52b9,_0x4d4174[_0x0db3('0x49')]);return db[_0x0db3('0x3f')][_0x0db3('0x17')]({'where':_0x2b52b9[_0x0db3('0x42')]})[_0x0db3('0x1c')](function(_0x1ac5a9){_0x11a787[_0x0db3('0x17')]=_0x1ac5a9;if(_0x4d4174['query'][_0x0db3('0x35')]){_0x2b52b9[_0x0db3('0x36')]=[{'all':!![]}];}return db[_0x0db3('0x3f')]['findAll'](_0x2b52b9);})[_0x0db3('0x1c')](function(_0x9b8939){_0x11a787[_0x0db3('0x4a')]=_0x9b8939;return _0x11a787;});}})['then'](respondWithFilteredResult(_0x38108d,_0x2b52b9))[_0x0db3('0x2a')](handleError(_0x38108d,null));};exports['addTags']=function(_0x5e120b,_0x1b3360){return db[_0x0db3('0x22')][_0x0db3('0x37')]({'where':{'id':_0x5e120b[_0x0db3('0x2e')]['id']}})[_0x0db3('0x1c')](handleEntityNotFound(_0x1b3360,null))[_0x0db3('0x1c')](function(_0x15b907){if(_0x15b907){return _0x15b907['setTags'](_0x5e120b[_0x0db3('0x38')][_0x0db3('0x3b')],_[_0x0db3('0x3c')](_0x5e120b[_0x0db3('0x38')],[_0x0db3('0x3b'),'id'])||{})[_0x0db3('0x4b')](function(){return db[_0x0db3('0x4c')][_0x0db3('0x27')]({'attributes':['id','name',_0x0db3('0x4d')],'where':{'id':_0x5e120b[_0x0db3('0x38')][_0x0db3('0x3b')]}});})[_0x0db3('0x1c')](function(_0xd8cc36){socket[_0x0db3('0x4e')](_0x0db3('0x4f'),{'id':Number(_0x5e120b[_0x0db3('0x2e')]['id']),'tags':_0xd8cc36||[]});return{'id':Number(_0x5e120b[_0x0db3('0x2e')]['id']),'tags':_0xd8cc36||[]};});}})['then'](respondWithResult(_0x1b3360,null))[_0x0db3('0x2a')](handleError(_0x1b3360,null));};exports[_0x0db3('0x50')]=function(_0x5ce920,_0x12a11f){return db['OpenchannelInteraction'][_0x0db3('0x37')]({'where':{'id':_0x5ce920[_0x0db3('0x2e')]['id']}})[_0x0db3('0x1c')](handleEntityNotFound(_0x12a11f,null))['then'](function(_0x2372c0){if(_0x2372c0){return _0x2372c0[_0x0db3('0x50')](_0x5ce920[_0x0db3('0x29')][_0x0db3('0x3b')]);}})['then'](respondWithStatusCode(_0x12a11f,null))['catch'](handleError(_0x12a11f,null));};exports['download']=function(_0x216c58,_0x4c2824){var _0x3c799d=moment()[_0x0db3('0x51')]()['toString']();var _0x3cab7a=path[_0x0db3('0x52')](config[_0x0db3('0x53')],_0x0db3('0x54'),_0x0db3('0x55'),_0x0db3('0x56'));var _0x226cd3=path[_0x0db3('0x52')](config[_0x0db3('0x53')],_0x0db3('0x54'),_0x0db3('0x55'),'attachments');var _0xaedb2c=path[_0x0db3('0x52')](_0x3cab7a,_0x3c799d);var _0x12ddc6=util[_0x0db3('0x57')](_0x0db3('0x58'),_0x216c58[_0x0db3('0x2e')]['id'],_0x3c799d);var _0xa863af=path[_0x0db3('0x52')](_0x3cab7a,_0x12ddc6);var _0x1ed5ca=[];_0x1ed5ca[_0x0db3('0x59')]({'model':db[_0x0db3('0x5a')],'as':_0x0db3('0x5a'),'attributes':['id',_0x0db3('0x5b')],'raw':!![]});_0x1ed5ca['push']({'model':db[_0x0db3('0x5c')],'as':_0x0db3('0x5d'),'attributes':['id',_0x0db3('0x5e'),_0x0db3('0x5f')],'raw':!![]});if(_0x216c58[_0x0db3('0x29')]['attachments']){_0x1ed5ca[_0x0db3('0x59')]({'model':db[_0x0db3('0x60')],'as':_0x0db3('0x60'),'raw':!![]});}var _0x3b2591=[{'model':db[_0x0db3('0x3f')],'as':_0x0db3('0x61'),'attributes':['id',_0x0db3('0x38'),_0x0db3('0x62'),_0x0db3('0x63'),_0x0db3('0x64'),_0x0db3('0x65')],'include':_0x1ed5ca}];_0x3b2591[_0x0db3('0x59')]({'model':db[_0x0db3('0x66')],'as':_0x0db3('0x67'),'attributes':['id',_0x0db3('0x20')]});_0x3b2591[_0x0db3('0x59')]({'model':db['User'],'as':_0x0db3('0x68'),'attributes':['id',_0x0db3('0x5b')]});return db[_0x0db3('0x22')][_0x0db3('0x37')]({'where':{'id':_0x216c58['params']['id']},'include':_0x3b2591})[_0x0db3('0x1c')](handleEntityNotFound(_0x4c2824,null))['then'](function(_0x3f5ef6){if(_0x3f5ef6){var _0x33167e=_0x3f5ef6[_0x0db3('0x69')]({'plain':!![]});fs[_0x0db3('0x6a')](_0xaedb2c);var _0x4e37ba={'channel':_0x0db3('0x6b'),'account':_0x33167e[_0x0db3('0x67')]['name'],'agent':_0x33167e[_0x0db3('0x68')]?_0x33167e[_0x0db3('0x68')]['fullname']:'N.A.','createdAt':moment(_0x33167e[_0x0db3('0x62')])['format'](_0x0db3('0x47'))[_0x0db3('0x6c')](),'closedAt':_0x33167e[_0x0db3('0x6d')]?moment(_0x33167e[_0x0db3('0x6e')])[_0x0db3('0x57')]('YYYY-MM-DD\x20HH:mm:ss')[_0x0db3('0x6c')]():'','disposition':_0x33167e[_0x0db3('0x6f')],'visibility':_0x33167e['threadId']?'Public':_0x0db3('0x70'),'messages':_(_0x33167e[_0x0db3('0x61')])[_0x0db3('0x46')]({'secret':![]})[_0x0db3('0x45')](function(_0x125674){if(_0x125674[_0x0db3('0x60')]){var _0x18b708=path[_0x0db3('0x52')](_0x226cd3,_0x125674[_0x0db3('0x60')][_0x0db3('0x71')]);if(fs[_0x0db3('0x72')](_0x18b708)){fs['createReadStream'](_0x18b708)['pipe'](fs[_0x0db3('0x73')](path['join'](_0xaedb2c,_0x125674['Attachment'][_0x0db3('0x71')])));}}return{'date':moment(_0x125674[_0x0db3('0x62')])['format']('YYYY-MM-DD\x20HH:mm:ss')['toString'](),'sender':_0x125674[_0x0db3('0x63')]===_0x0db3('0x74')?_0x125674[_0x0db3('0x5a')]?_0x125674[_0x0db3('0x5a')]['fullname']:_0x0db3('0x75'):_0x125674[_0x0db3('0x5d')][_0x0db3('0x5e')]+(_0x125674[_0x0db3('0x5d')][_0x0db3('0x5f')]?'\x20'+_0x125674[_0x0db3('0x5d')]['lastName']:''),'body':_0x125674[_0x0db3('0x60')]?_0x125674[_0x0db3('0x60')][_0x0db3('0x71')]:_0x125674[_0x0db3('0x38')],'direction':_0x125674['direction']==='out'?'A':'C','secret':_0x125674['secret'],'read':_0x125674['read'],'attachment':_0x125674[_0x0db3('0x60')]};})[_0x0db3('0x76')]()};return ejs[_0x0db3('0x77')](path[_0x0db3('0x52')](config[_0x0db3('0x53')],_0x0db3('0x54'),_0x0db3('0x78'),_0x0db3('0x79')),{'interaction':_0x4e37ba})['then'](function(_0x41ec20){var _0x19ae9c=path['join'](_0xaedb2c,_0x0db3('0x7a')+_0x33167e['id']+'-'+_0x3c799d+_0x0db3('0x7b'));var _0x1a3f54={'path':_0x19ae9c,'channel':_0x0db3('0x6b'),'interactionId':_0x33167e['id']};return pdf[_0x0db3('0x7c')](_0x41ec20,_0x1a3f54);})[_0x0db3('0x1c')](function(){return new Promise(function(_0x2e5629,_0x4024c7){zipdir(_0xaedb2c,{'saveTo':_0xa863af},function(_0x195d2d,_0x24d2aa){if(_0x195d2d)return _0x4024c7(_0x195d2d);return _0x2e5629(_0x24d2aa);});})[_0x0db3('0x1c')](function(){return new Promise(function(_0x2849a5,_0x3bf2ba){rimraf(_0xaedb2c,function(_0x3b420c){if(_0x3b420c)_0x3bf2ba(_0x3b420c);return _0x2849a5();});});})[_0x0db3('0x1c')](function(){return _0x4c2824[_0x0db3('0x7d')](_0xa863af,_0x12ddc6,function(_0xe889d0){if(_0xe889d0){logger[_0x0db3('0x1e')](_0x0db3('0x7e'),_0xe889d0);}else{fs[_0x0db3('0x7f')](_0xa863af);}});});});}else{return _0x4c2824[_0x0db3('0x80')](0xc8);}})[_0x0db3('0x2a')](handleError(_0x4c2824,null));};