231651de474a99056bea6a0d1ee35d0e8f187ba7
[motion2.git] / server / api / cmHopper / cmHopper.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 _0xb62e=['prev','isEmpty','hopperIds','ASC','literal','COALESCE(CmHopper.UserId,\x200)\x20ASC','DESC','priority','scheduledAt','findOne','scheduledat','LOCK','UPDATE','Contact','Company','CmList','List','Queue','dialActive','getOpenContacts','preview','isNumber','error','CmHopper,\x20%s,\x20%s,\x20%s','entity\x20not\x20found','html-pdf','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','lodash','crypto','jsforce','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','end','status','json','count','offset','limit','set','Content-Range','apply','reject','save','then','stack','name','send','CmHopper','rawAttributes','fieldName','type','key','model','map','keys','query','filters','intersection','$gt','$gte','$lte','$eq','$not','$notBetween','$in','$like','$notLike','$iLike','$notILike','$overlap','$contains','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','includeAll','include','findAll','show','params','options','find','catch','create','body','update','describe','destroy','CampaignId','VoiceQueueId','VoiceQueue','Campaign','omit','dataValues','createdAt','updatedAt','state','statedesc','deleted','campaign','membername','user','deletedat','YYYY-MM-DD\x20HH:mm:ss','calleridnum','phone','campaigntype','queue','ivr','CmContact','ContactId','lastName','isNil','firstName','calleridname','finally','CmHopperFinal','getPreview','getVoiceQueues','outbound','dialOrderByScheduledAt','sequelize','transaction','format','direction'];(function(_0x3c8b46,_0x34e053){var _0x4bf0a8=function(_0x4fd53f){while(--_0x4fd53f){_0x3c8b46['push'](_0x3c8b46['shift']());}};_0x4bf0a8(++_0x34e053);}(_0xb62e,0x1de));var _0xeb62=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0xb62e[_0x5b644e];return _0x49c6bf;};'use strict';var pdf=require(_0xeb62('0x0'));var emlformat=require(_0xeb62('0x1'));var rimraf=require(_0xeb62('0x2'));var zipdir=require(_0xeb62('0x3'));var jsonpatch=require('fast-json-patch');var rp=require(_0xeb62('0x4'));var moment=require(_0xeb62('0x5'));var BPromise=require(_0xeb62('0x6'));var Mustache=require(_0xeb62('0x7'));var util=require(_0xeb62('0x8'));var path=require(_0xeb62('0x9'));var sox=require('sox');var csv=require(_0xeb62('0xa'));var ejs=require(_0xeb62('0xb'));var fs=require('fs');var _=require(_0xeb62('0xc'));var squel=require('squel');var crypto=require(_0xeb62('0xd'));var jsforce=require(_0xeb62('0xe'));var deskjs=require(_0xeb62('0xf'));var toCsv=require(_0xeb62('0xa'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xeb62('0x10'));var authService=require(_0xeb62('0x11'));var qs=require(_0xeb62('0x12'));var as=require(_0xeb62('0x13'));var hardwareService=require(_0xeb62('0x14'));var logger=require(_0xeb62('0x15'))(_0xeb62('0x16'));var utils=require(_0xeb62('0x17'));var config=require(_0xeb62('0x18'));var licenseUtil=require(_0xeb62('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x422daf,_0xcc11c4){_0xcc11c4=_0xcc11c4||0xcc;return function(_0x27671e){if(_0x27671e){return _0x422daf[_0xeb62('0x1a')](_0xcc11c4);}return _0x422daf['status'](_0xcc11c4)[_0xeb62('0x1b')]();};}function respondWithResult(_0x2fbad2,_0x23fb15){_0x23fb15=_0x23fb15||0xc8;return function(_0x4da178){if(_0x4da178){return _0x2fbad2[_0xeb62('0x1c')](_0x23fb15)[_0xeb62('0x1d')](_0x4da178);}};}function respondWithFilteredResult(_0x2fd4c7,_0x4ce9fa){return function(_0x1f6a1f){if(_0x1f6a1f){var _0x15b3e8=_0x1f6a1f[_0xeb62('0x1e')],_0x184106=_0x4ce9fa[_0xeb62('0x1f')],_0x353e2c=_0x4ce9fa[_0xeb62('0x1f')]+_0x4ce9fa[_0xeb62('0x20')],_0x3fb280;if(_0x353e2c>=_0x15b3e8){_0x353e2c=_0x15b3e8;_0x3fb280=0xc8;}else{_0x3fb280=0xce;}_0x2fd4c7[_0xeb62('0x1c')](_0x3fb280);return _0x2fd4c7[_0xeb62('0x21')](_0xeb62('0x22'),_0x184106+'-'+_0x353e2c+'/'+_0x15b3e8)[_0xeb62('0x1d')](_0x1f6a1f);}return null;};}function patchUpdates(_0x5a07bb){return function(_0x38c5e4){try{jsonpatch[_0xeb62('0x23')](_0x38c5e4,_0x5a07bb,!![]);}catch(_0x332396){return BPromise[_0xeb62('0x24')](_0x332396);}return _0x38c5e4[_0xeb62('0x25')]();};}function saveUpdates(_0x24cbf3,_0x2ed96d){return function(_0x589bf2){if(_0x589bf2){return _0x589bf2['update'](_0x24cbf3)[_0xeb62('0x26')](function(_0x154451){return _0x154451;});}return null;};}function removeEntity(_0x11ed9c,_0x13243f){return function(_0x122b15){if(_0x122b15){return _0x122b15['destroy']()['then'](function(){_0x11ed9c[_0xeb62('0x1c')](0xcc)[_0xeb62('0x1b')]();});}};}function handleEntityNotFound(_0x182781,_0x395b70){return function(_0x55a169){if(!_0x55a169){_0x182781['sendStatus'](0x194);}return _0x55a169;};}function handleError(_0x3ef988,_0x4dbc2c){_0x4dbc2c=_0x4dbc2c||0x1f4;return function(_0x448327){logger['error'](_0x448327[_0xeb62('0x27')]);if(_0x448327['name']){delete _0x448327[_0xeb62('0x28')];}_0x3ef988[_0xeb62('0x1c')](_0x4dbc2c)[_0xeb62('0x29')](_0x448327);};}exports['index']=function(_0x3ef784,_0x3ae031){var _0x5222f4={},_0xe8872c={},_0x42f486={'count':0x0,'rows':[]};var _0x360efd=_['map'](db[_0xeb62('0x2a')][_0xeb62('0x2b')],function(_0x57169a){return{'name':_0x57169a[_0xeb62('0x2c')],'type':_0x57169a[_0xeb62('0x2d')][_0xeb62('0x2e')]};});_0xe8872c[_0xeb62('0x2f')]=_[_0xeb62('0x30')](_0x360efd,'name');_0xe8872c['query']=_[_0xeb62('0x31')](_0x3ef784[_0xeb62('0x32')]);_0xe8872c[_0xeb62('0x33')]=_[_0xeb62('0x34')](_0xe8872c[_0xeb62('0x2f')],_0xe8872c[_0xeb62('0x32')]);_0xe8872c[_0xeb62('0x33')]=_['concat'](_0xe8872c[_0xeb62('0x33')],['$and','$or',_0xeb62('0x35'),_0xeb62('0x36'),'$lt',_0xeb62('0x37'),'$ne',_0xeb62('0x38'),_0xeb62('0x39'),'$between',_0xeb62('0x3a'),_0xeb62('0x3b'),'$notIn',_0xeb62('0x3c'),_0xeb62('0x3d'),_0xeb62('0x3e'),_0xeb62('0x3f'),'$like',_0xeb62('0x40'),_0xeb62('0x41'),'$contained','$any']);_0x5222f4[_0xeb62('0x42')]=_[_0xeb62('0x34')](_0xe8872c['model'],qs[_0xeb62('0x43')](_0x3ef784[_0xeb62('0x32')][_0xeb62('0x43')]));_0x5222f4[_0xeb62('0x42')]=_0x5222f4[_0xeb62('0x42')][_0xeb62('0x44')]?_0x5222f4[_0xeb62('0x42')]:_0xe8872c['model'];if(!_0x3ef784['query'][_0xeb62('0x45')](_0xeb62('0x46'))){_0x5222f4[_0xeb62('0x20')]=qs[_0xeb62('0x20')](_0x3ef784['query'][_0xeb62('0x20')]);_0x5222f4['offset']=qs[_0xeb62('0x1f')](_0x3ef784[_0xeb62('0x32')][_0xeb62('0x1f')]);}_0x5222f4[_0xeb62('0x47')]=qs[_0xeb62('0x48')](_0x3ef784[_0xeb62('0x32')][_0xeb62('0x48')]);_0x5222f4[_0xeb62('0x49')]=qs['filters'](_[_0xeb62('0x4a')](_0x3ef784[_0xeb62('0x32')],_0xe8872c[_0xeb62('0x33')]),_0x360efd);if(_0x3ef784[_0xeb62('0x32')]['filter']){_0x5222f4['where']=_[_0xeb62('0x4b')](_0x5222f4[_0xeb62('0x49')],{'$or':_['map'](_0x360efd,function(_0x1f7036){if(_0x1f7036[_0xeb62('0x2d')]!=='VIRTUAL'){var _0x25e9f0={};_0x25e9f0[_0x1f7036['name']]={'$like':'%'+_0x3ef784[_0xeb62('0x32')]['filter']+'%'};return _0x25e9f0;}})});}_0x5222f4=_[_0xeb62('0x4b')]({},_0x5222f4,_0x3ef784['options']);var _0x2bf77f={'where':_0x5222f4[_0xeb62('0x49')]};return db[_0xeb62('0x2a')]['count'](_0x2bf77f)['then'](function(_0x3148e7){_0x42f486[_0xeb62('0x1e')]=_0x3148e7;if(_0x3ef784[_0xeb62('0x32')][_0xeb62('0x4c')]){_0x5222f4[_0xeb62('0x4d')]=[{'all':!![]}];}return db['CmHopper'][_0xeb62('0x4e')](_0x5222f4);})['then'](function(_0x195f00){_0x42f486['rows']=_0x195f00;return _0x42f486;})[_0xeb62('0x26')](respondWithFilteredResult(_0x3ae031,_0x5222f4))['catch'](handleError(_0x3ae031,null));};exports[_0xeb62('0x4f')]=function(_0x4dbcac,_0x2f04ce){var _0x4624e7={'raw':!![],'where':{'id':_0x4dbcac[_0xeb62('0x50')]['id']}},_0x1aba15={};_0x1aba15[_0xeb62('0x2f')]=_[_0xeb62('0x31')](db['CmHopper'][_0xeb62('0x2b')]);_0x1aba15[_0xeb62('0x32')]=_['keys'](_0x4dbcac['query']);_0x1aba15['filters']=_['intersection'](_0x1aba15[_0xeb62('0x2f')],_0x1aba15[_0xeb62('0x32')]);_0x4624e7['attributes']=_[_0xeb62('0x34')](_0x1aba15[_0xeb62('0x2f')],qs[_0xeb62('0x43')](_0x4dbcac[_0xeb62('0x32')][_0xeb62('0x43')]));_0x4624e7['attributes']=_0x4624e7[_0xeb62('0x42')]['length']?_0x4624e7[_0xeb62('0x42')]:_0x1aba15[_0xeb62('0x2f')];if(_0x4dbcac[_0xeb62('0x32')][_0xeb62('0x4c')]){_0x4624e7[_0xeb62('0x4d')]=[{'all':!![]}];}_0x4624e7=_[_0xeb62('0x4b')]({},_0x4624e7,_0x4dbcac[_0xeb62('0x51')]);return db[_0xeb62('0x2a')][_0xeb62('0x52')](_0x4624e7)[_0xeb62('0x26')](handleEntityNotFound(_0x2f04ce,null))[_0xeb62('0x26')](respondWithResult(_0x2f04ce,null))[_0xeb62('0x53')](handleError(_0x2f04ce,null));};exports['create']=function(_0x29773c,_0x50bfec){return db['CmHopper'][_0xeb62('0x54')](_0x29773c[_0xeb62('0x55')],{})['then'](respondWithResult(_0x50bfec,0xc9))[_0xeb62('0x53')](handleError(_0x50bfec,null));};exports[_0xeb62('0x56')]=function(_0x5c8cb5,_0x11297d){if(_0x5c8cb5[_0xeb62('0x55')]['id']){delete _0x5c8cb5[_0xeb62('0x55')]['id'];}return db[_0xeb62('0x2a')][_0xeb62('0x52')]({'where':{'id':_0x5c8cb5[_0xeb62('0x50')]['id']}})[_0xeb62('0x26')](handleEntityNotFound(_0x11297d,null))[_0xeb62('0x26')](saveUpdates(_0x5c8cb5['body'],null))[_0xeb62('0x26')](respondWithResult(_0x11297d,null))['catch'](handleError(_0x11297d,null));};exports[_0xeb62('0x57')]=function(_0x39f88d,_0x9be47c){return db[_0xeb62('0x2a')][_0xeb62('0x57')]()[_0xeb62('0x26')](respondWithResult(_0x9be47c,null))[_0xeb62('0x53')](handleError(_0x9be47c,null));};exports[_0xeb62('0x58')]=function(_0x595d58,_0x4d31a1){var _0x50ed53;return db['CmHopper'][_0xeb62('0x52')]({'where':{'id':_0x595d58['params']['id']}})[_0xeb62('0x26')](handleEntityNotFound(_0x4d31a1,null))['then'](function(_0x1cd951){if(_0x1cd951){return _0x1cd951[_0xeb62('0x58')]()[_0xeb62('0x26')](function(_0x595797){return _0x595797;});}})[_0xeb62('0x26')](function(_0x1486a6){_0x50ed53=_0x1486a6;if(_0x1486a6){if(_0x1486a6['VoiceQueueId']||_0x1486a6[_0xeb62('0x59')]){return db[_0x1486a6[_0xeb62('0x5a')]?_0xeb62('0x5b'):_0xeb62('0x5c')]['find']({'where':{'id':_0x1486a6[_0xeb62('0x5a')]?_0x1486a6[_0xeb62('0x5a')]:_0x1486a6['CampaignId']},'attributes':['id',_0xeb62('0x28')],'raw':!![]});}}})[_0xeb62('0x26')](function(_0x10b1ef){var _0x466c3c={};if(_0x10b1ef){_[_0xeb62('0x4b')](_0x466c3c,_[_0xeb62('0x5d')](_0x50ed53[_0xeb62('0x5e')],[_0xeb62('0x5f'),_0xeb62('0x60'),'id']));_0x466c3c[_0xeb62('0x61')]=0x15;_0x466c3c[_0xeb62('0x62')]=_0xeb62('0x63');_0x466c3c[_0xeb62('0x64')]=_0x10b1ef[_0xeb62('0x28')];_0x466c3c[_0xeb62('0x65')]=_0x595d58[_0xeb62('0x66')]['name'];_0x466c3c['UserId']=_0x595d58['user']['id'];_0x466c3c['deleted']=!![];_0x466c3c[_0xeb62('0x67')]=moment()['format'](_0xeb62('0x68'));_0x466c3c[_0xeb62('0x69')]=_0x50ed53[_0xeb62('0x6a')];_0x466c3c[_0xeb62('0x6b')]=_0x50ed53[_0xeb62('0x5a')]?_0xeb62('0x6c'):_0xeb62('0x6d');return db[_0xeb62('0x6e')][_0xeb62('0x52')]({'where':{'id':_0x466c3c[_0xeb62('0x6f')]},'attributes':['firstName',_0xeb62('0x70')]})[_0xeb62('0x26')](function(_0x42e992){if(!_[_0xeb62('0x71')](_0x4d31a1)&&!_['isNil'](_0x42e992[_0xeb62('0x72')])){_0x466c3c[_0xeb62('0x73')]=_0x42e992[_0xeb62('0x72')];if(!_[_0xeb62('0x71')](_0x42e992[_0xeb62('0x70')])){_0x466c3c[_0xeb62('0x73')]+='\x20'+_0x42e992[_0xeb62('0x70')];}}})[_0xeb62('0x74')](function(){return db[_0xeb62('0x75')][_0xeb62('0x54')](_0x466c3c);});}})[_0xeb62('0x26')](function(){return _0x4d31a1['status'](0xcc)[_0xeb62('0x1b')]();})[_0xeb62('0x53')](handleError(_0x4d31a1,null));};exports[_0xeb62('0x76')]=function(_0x403b50,_0x250294,_0x4363c2){var _0x388b31=[];return db[_0xeb62('0x6e')][_0xeb62('0x57')]()[_0xeb62('0x26')](function(_0x556cae){_0x388b31=_[_0xeb62('0x31')](_0x556cae);return _0x403b50[_0xeb62('0x66')][_0xeb62('0x77')]({'where':{'type':_0xeb62('0x78'),'dialActive':!![],'dialMethod':'preview'},'attributes':['id',_0xeb62('0x79')],'raw':!![]});})[_0xeb62('0x26')](function(_0x3f7dc8){if(_0x3f7dc8&&_0x3f7dc8[_0xeb62('0x44')]){return db[_0xeb62('0x7a')][_0xeb62('0x7b')](function(_0x48488c){var _0x18a348={'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0xeb62('0x7c')](_0xeb62('0x68'))},'VoiceQueueId':{'$in':_[_0xeb62('0x30')](_0x3f7dc8,'id')},'$or':[{'UserId':null},{'UserId':_0x403b50[_0xeb62('0x66')]['id']}]};var _0x28d0ff=[];if(_0x403b50[_0xeb62('0x55')][_0xeb62('0x7d')]&&_0x403b50[_0xeb62('0x55')][_0xeb62('0x7d')]===_0xeb62('0x7e')){if(!_[_0xeb62('0x7f')](_0x403b50[_0xeb62('0x55')][_0xeb62('0x80')])){_0x18a348['id']={'$in':_0x403b50[_0xeb62('0x55')][_0xeb62('0x80')]};}_0x28d0ff=[['priority',_0xeb62('0x81')],['scheduledAt',_0x3f7dc8[0x0][_0xeb62('0x79')]===_0xeb62('0x81')?'DESC':_0xeb62('0x81')],db[_0xeb62('0x7a')][_0xeb62('0x82')](_0xeb62('0x83')),['id',_0xeb62('0x84')]];}else{if(!_[_0xeb62('0x7f')](_0x403b50[_0xeb62('0x55')][_0xeb62('0x80')])){_0x18a348['id']={'$notIn':_0x403b50[_0xeb62('0x55')][_0xeb62('0x80')]};}_0x28d0ff=[[_0xeb62('0x85'),_0xeb62('0x84')],[_0xeb62('0x86'),_0x3f7dc8[0x0]['dialOrderByScheduledAt']],db[_0xeb62('0x7a')][_0xeb62('0x82')]('COALESCE(CmHopper.UserId,\x200)\x20DESC'),['id',_0xeb62('0x81')]];}return db['CmHopper'][_0xeb62('0x87')]({'attributes':['id',_0xeb62('0x88')],'where':_0x18a348,'order':_0x28d0ff,'transaction':_0x48488c,'lock':_0x48488c[_0xeb62('0x89')][_0xeb62('0x8a')],'include':[{'model':db[_0xeb62('0x6e')],'as':_0xeb62('0x8b'),'attributes':_0x388b31,'include':[{'model':db['CmCompany'],'as':_0xeb62('0x8c'),'attributes':['id','name']}]},{'model':db[_0xeb62('0x8d')],'as':_0xeb62('0x8e'),'attributes':['id',_0xeb62('0x28')]},{'model':db[_0xeb62('0x5b')],'as':_0xeb62('0x8f'),'attributes':['id','name',_0xeb62('0x90')]}]})[_0xeb62('0x26')](function(_0x404297){if(_0x404297){return _0x404297['update']({'UserId':_0x403b50[_0xeb62('0x66')]['id']},{'transaction':_0x48488c});}});});}})[_0xeb62('0x26')](handleEntityNotFound(_0x250294,null))[_0xeb62('0x26')](respondWithResult(_0x250294,null))[_0xeb62('0x53')](handleError(_0x250294,null));};exports[_0xeb62('0x91')]=function(_0x31f999,_0x5c82e6,_0x5cb634){return _0x31f999['user']['getVoiceQueues']({'where':{'type':'outbound','dialActive':!![],'dialMethod':_0xeb62('0x92')},'attributes':['id'],'raw':!![]})[_0xeb62('0x26')](function(_0x1eac2f){if(_0x1eac2f&&_0x1eac2f[_0xeb62('0x44')]){return db[_0xeb62('0x2a')][_0xeb62('0x1e')]({'where':{'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0xeb62('0x7c')](_0xeb62('0x68'))},'VoiceQueueId':{'$in':_[_0xeb62('0x30')](_0x1eac2f,'id')},'$or':[{'UserId':null},{'UserId':_0x31f999[_0xeb62('0x66')]['id']}]}});}return 0x0;})[_0xeb62('0x26')](function(_0x3fad85){if(!_['isNil'](_0x3fad85)&&_[_0xeb62('0x93')](_0x3fad85)){return _0x5c82e6[_0xeb62('0x1c')](0xc8)[_0xeb62('0x1d')]({'contacts':_0x3fad85});}else{logger[_0xeb62('0x94')](_0xeb62('0x95'),_0xeb62('0x91'),0x194,_0xeb62('0x96'));_0x5c82e6[_0xeb62('0x1a')](0x194);}})[_0xeb62('0x53')](handleError(_0x5c82e6,null));};