Built motion from commit 9d1906d1.|2.5.40
[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 _0xae13=['firstName','lastName','isNil','calleridname','finally','CmHopperFinal','getVoiceQueues','outbound','dialOrderByScheduledAt','dialPreviewAutoRecallMe','sequelize','transaction','value','direction','prev','hopperIds','priority','ASC','scheduledAt','literal','DESC','isEmpty','recallme','Contact','CmCompany','Company','CmList','List','Queue','dialActive','getOpenContacts','format','YYYY-MM-DD\x20HH:mm:ss','isNumber','error','entity\x20not\x20found','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','limit','count','set','Content-Range','reject','save','update','then','destroy','end','stack','name','send','index','CmHopper','rawAttributes','fieldName','key','model','map','keys','query','filters','intersection','concat','$and','$or','$gt','$lt','$lte','$between','$notBetween','$notIn','$notLike','$iLike','$notILike','$like','$overlap','$contains','$contained','$any','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','type','VIRTUAL','merge','options','include','rows','catch','show','params','includeAll','find','create','body','describe','VoiceQueueId','CampaignId','VoiceQueue','Campaign','omit','dataValues','createdAt','updatedAt','state','statedesc','deleted','campaign','membername','user','phone','queue','ivr','CmContact','ContactId'];(function(_0x2f7d2d,_0x1c0980){var _0x2d5848=function(_0x234121){while(--_0x234121){_0x2f7d2d['push'](_0x2f7d2d['shift']());}};_0x2d5848(++_0x1c0980);}(_0xae13,0x154));var _0x3ae1=function(_0x279925,_0x18dd26){_0x279925=_0x279925-0x0;var _0x4b7f4e=_0xae13[_0x279925];return _0x4b7f4e;};'use strict';var emlformat=require(_0x3ae1('0x0'));var rimraf=require(_0x3ae1('0x1'));var zipdir=require(_0x3ae1('0x2'));var jsonpatch=require(_0x3ae1('0x3'));var rp=require(_0x3ae1('0x4'));var moment=require(_0x3ae1('0x5'));var BPromise=require(_0x3ae1('0x6'));var Mustache=require(_0x3ae1('0x7'));var util=require(_0x3ae1('0x8'));var path=require(_0x3ae1('0x9'));var sox=require(_0x3ae1('0xa'));var csv=require(_0x3ae1('0xb'));var ejs=require(_0x3ae1('0xc'));var fs=require('fs');var fs_extra=require(_0x3ae1('0xd'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x3ae1('0xe'));var jsforce=require(_0x3ae1('0xf'));var deskjs=require(_0x3ae1('0x10'));var toCsv=require(_0x3ae1('0xb'));var querystring=require(_0x3ae1('0x11'));var Papa=require(_0x3ae1('0x12'));var Redis=require(_0x3ae1('0x13'));var authService=require(_0x3ae1('0x14'));var qs=require(_0x3ae1('0x15'));var as=require(_0x3ae1('0x16'));var hardwareService=require(_0x3ae1('0x17'));var logger=require('../../config/logger')(_0x3ae1('0x18'));var utils=require(_0x3ae1('0x19'));var config=require(_0x3ae1('0x1a'));var licenseUtil=require(_0x3ae1('0x1b'));var db=require(_0x3ae1('0x1c'))['db'];function respondWithStatusCode(_0x1fa77a,_0x47a02a){_0x47a02a=_0x47a02a||0xcc;return function(_0x143308){if(_0x143308){return _0x1fa77a[_0x3ae1('0x1d')](_0x47a02a);}return _0x1fa77a[_0x3ae1('0x1e')](_0x47a02a)['end']();};}function respondWithResult(_0x4f5ccf,_0x6c1dd0){_0x6c1dd0=_0x6c1dd0||0xc8;return function(_0x4844da){if(_0x4844da){return _0x4f5ccf[_0x3ae1('0x1e')](_0x6c1dd0)[_0x3ae1('0x1f')](_0x4844da);}};}function respondWithFilteredResult(_0x2570d3,_0x2c0c09){return function(_0x3eb083){if(_0x3eb083){var _0x21f9fa=typeof _0x2c0c09[_0x3ae1('0x20')]==='undefined'&&typeof _0x2c0c09[_0x3ae1('0x21')]==='undefined';var _0x19085e=_0x3eb083[_0x3ae1('0x22')];var _0x1ac16d=_0x21f9fa?0x0:_0x2c0c09[_0x3ae1('0x20')];var _0x1b1ab6=_0x21f9fa?_0x3eb083['count']:_0x2c0c09[_0x3ae1('0x20')]+_0x2c0c09[_0x3ae1('0x21')];var _0x268a31;if(_0x1b1ab6>=_0x19085e){_0x1b1ab6=_0x19085e;_0x268a31=0xc8;}else{_0x268a31=0xce;}_0x2570d3[_0x3ae1('0x1e')](_0x268a31);return _0x2570d3[_0x3ae1('0x23')](_0x3ae1('0x24'),_0x1ac16d+'-'+_0x1b1ab6+'/'+_0x19085e)[_0x3ae1('0x1f')](_0x3eb083);}return null;};}function patchUpdates(_0x348179){return function(_0x130a49){try{jsonpatch['apply'](_0x130a49,_0x348179,!![]);}catch(_0x49a695){return BPromise[_0x3ae1('0x25')](_0x49a695);}return _0x130a49[_0x3ae1('0x26')]();};}function saveUpdates(_0x30e05c,_0x4e0097){return function(_0x13c9e4){if(_0x13c9e4){return _0x13c9e4[_0x3ae1('0x27')](_0x30e05c)[_0x3ae1('0x28')](function(_0x21d11d){return _0x21d11d;});}return null;};}function removeEntity(_0x3afa6a,_0x1fcd14){return function(_0x575cc2){if(_0x575cc2){return _0x575cc2[_0x3ae1('0x29')]()['then'](function(){_0x3afa6a['status'](0xcc)[_0x3ae1('0x2a')]();});}};}function handleEntityNotFound(_0x1a7187,_0x108b2e){return function(_0x4bee12){if(!_0x4bee12){_0x1a7187[_0x3ae1('0x1d')](0x194);}return _0x4bee12;};}function handleError(_0x207d0c,_0x443194){_0x443194=_0x443194||0x1f4;return function(_0x18f4b0){logger['error'](_0x18f4b0[_0x3ae1('0x2b')]);if(_0x18f4b0[_0x3ae1('0x2c')]){delete _0x18f4b0['name'];}_0x207d0c[_0x3ae1('0x1e')](_0x443194)[_0x3ae1('0x2d')](_0x18f4b0);};}exports[_0x3ae1('0x2e')]=function(_0x2ecf67,_0x1713d0){var _0x52b3c5={},_0xf4f0dc={},_0x431e51={'count':0x0,'rows':[]};var _0x1de6ba=_['map'](db[_0x3ae1('0x2f')][_0x3ae1('0x30')],function(_0x47f1a3){return{'name':_0x47f1a3[_0x3ae1('0x31')],'type':_0x47f1a3['type'][_0x3ae1('0x32')]};});_0xf4f0dc[_0x3ae1('0x33')]=_[_0x3ae1('0x34')](_0x1de6ba,_0x3ae1('0x2c'));_0xf4f0dc['query']=_[_0x3ae1('0x35')](_0x2ecf67[_0x3ae1('0x36')]);_0xf4f0dc[_0x3ae1('0x37')]=_[_0x3ae1('0x38')](_0xf4f0dc['model'],_0xf4f0dc[_0x3ae1('0x36')]);_0xf4f0dc[_0x3ae1('0x37')]=_[_0x3ae1('0x39')](_0xf4f0dc[_0x3ae1('0x37')],[_0x3ae1('0x3a'),_0x3ae1('0x3b'),_0x3ae1('0x3c'),'$gte',_0x3ae1('0x3d'),_0x3ae1('0x3e'),'$ne','$eq','$not',_0x3ae1('0x3f'),_0x3ae1('0x40'),'$in',_0x3ae1('0x41'),'$like',_0x3ae1('0x42'),_0x3ae1('0x43'),_0x3ae1('0x44'),_0x3ae1('0x45'),_0x3ae1('0x46'),_0x3ae1('0x47'),_0x3ae1('0x48'),_0x3ae1('0x49')]);_0x52b3c5[_0x3ae1('0x4a')]=_[_0x3ae1('0x38')](_0xf4f0dc[_0x3ae1('0x33')],qs['fields'](_0x2ecf67[_0x3ae1('0x36')][_0x3ae1('0x4b')]));_0x52b3c5[_0x3ae1('0x4a')]=_0x52b3c5[_0x3ae1('0x4a')][_0x3ae1('0x4c')]?_0x52b3c5[_0x3ae1('0x4a')]:_0xf4f0dc[_0x3ae1('0x33')];if(!_0x2ecf67[_0x3ae1('0x36')][_0x3ae1('0x4d')](_0x3ae1('0x4e'))){_0x52b3c5['limit']=qs[_0x3ae1('0x21')](_0x2ecf67[_0x3ae1('0x36')]['limit']);_0x52b3c5[_0x3ae1('0x20')]=qs[_0x3ae1('0x20')](_0x2ecf67[_0x3ae1('0x36')]['offset']);}_0x52b3c5[_0x3ae1('0x4f')]=qs['sort'](_0x2ecf67[_0x3ae1('0x36')][_0x3ae1('0x50')]);_0x52b3c5[_0x3ae1('0x51')]=qs[_0x3ae1('0x37')](_['pick'](_0x2ecf67[_0x3ae1('0x36')],_0xf4f0dc[_0x3ae1('0x37')]),_0x1de6ba);if(_0x2ecf67['query'][_0x3ae1('0x52')]){_0x52b3c5[_0x3ae1('0x51')]=_['merge'](_0x52b3c5[_0x3ae1('0x51')],{'$or':_[_0x3ae1('0x34')](_0x1de6ba,function(_0x5777f3){if(_0x5777f3[_0x3ae1('0x53')]!==_0x3ae1('0x54')){var _0x59121b={};_0x59121b[_0x5777f3[_0x3ae1('0x2c')]]={'$like':'%'+_0x2ecf67[_0x3ae1('0x36')][_0x3ae1('0x52')]+'%'};return _0x59121b;}})});}_0x52b3c5=_[_0x3ae1('0x55')]({},_0x52b3c5,_0x2ecf67[_0x3ae1('0x56')]);var _0x2c60cf={'where':_0x52b3c5[_0x3ae1('0x51')]};return db['CmHopper'][_0x3ae1('0x22')](_0x2c60cf)[_0x3ae1('0x28')](function(_0x5bc088){_0x431e51['count']=_0x5bc088;if(_0x2ecf67[_0x3ae1('0x36')]['includeAll']){_0x52b3c5[_0x3ae1('0x57')]=[{'all':!![]}];}return db[_0x3ae1('0x2f')]['findAll'](_0x52b3c5);})[_0x3ae1('0x28')](function(_0x739edb){_0x431e51[_0x3ae1('0x58')]=_0x739edb;return _0x431e51;})[_0x3ae1('0x28')](respondWithFilteredResult(_0x1713d0,_0x52b3c5))[_0x3ae1('0x59')](handleError(_0x1713d0,null));};exports[_0x3ae1('0x5a')]=function(_0xac800,_0x47ae90){var _0x32547e={'raw':!![],'where':{'id':_0xac800[_0x3ae1('0x5b')]['id']}},_0x907938={};_0x907938['model']=_['keys'](db['CmHopper'][_0x3ae1('0x30')]);_0x907938[_0x3ae1('0x36')]=_[_0x3ae1('0x35')](_0xac800[_0x3ae1('0x36')]);_0x907938[_0x3ae1('0x37')]=_[_0x3ae1('0x38')](_0x907938[_0x3ae1('0x33')],_0x907938[_0x3ae1('0x36')]);_0x32547e[_0x3ae1('0x4a')]=_[_0x3ae1('0x38')](_0x907938[_0x3ae1('0x33')],qs['fields'](_0xac800[_0x3ae1('0x36')]['fields']));_0x32547e[_0x3ae1('0x4a')]=_0x32547e[_0x3ae1('0x4a')][_0x3ae1('0x4c')]?_0x32547e['attributes']:_0x907938[_0x3ae1('0x33')];if(_0xac800[_0x3ae1('0x36')][_0x3ae1('0x5c')]){_0x32547e['include']=[{'all':!![]}];}_0x32547e=_['merge']({},_0x32547e,_0xac800[_0x3ae1('0x56')]);return db['CmHopper'][_0x3ae1('0x5d')](_0x32547e)[_0x3ae1('0x28')](handleEntityNotFound(_0x47ae90,null))['then'](respondWithResult(_0x47ae90,null))[_0x3ae1('0x59')](handleError(_0x47ae90,null));};exports[_0x3ae1('0x5e')]=function(_0x5f1884,_0x4f448c){return db['CmHopper']['create'](_0x5f1884[_0x3ae1('0x5f')],{})[_0x3ae1('0x28')](respondWithResult(_0x4f448c,0xc9))[_0x3ae1('0x59')](handleError(_0x4f448c,null));};exports[_0x3ae1('0x27')]=function(_0x26ea58,_0x513a51){if(_0x26ea58[_0x3ae1('0x5f')]['id']){delete _0x26ea58['body']['id'];}return db['CmHopper'][_0x3ae1('0x5d')]({'where':{'id':_0x26ea58['params']['id']}})[_0x3ae1('0x28')](handleEntityNotFound(_0x513a51,null))[_0x3ae1('0x28')](saveUpdates(_0x26ea58[_0x3ae1('0x5f')],null))[_0x3ae1('0x28')](respondWithResult(_0x513a51,null))[_0x3ae1('0x59')](handleError(_0x513a51,null));};exports[_0x3ae1('0x60')]=function(_0x1aa98c,_0x128c8d){return db['CmHopper'][_0x3ae1('0x60')]()[_0x3ae1('0x28')](respondWithResult(_0x128c8d,null))[_0x3ae1('0x59')](handleError(_0x128c8d,null));};exports[_0x3ae1('0x29')]=function(_0x46bb06,_0x1c0dc5){var _0x44d863;return db[_0x3ae1('0x2f')][_0x3ae1('0x5d')]({'where':{'id':_0x46bb06[_0x3ae1('0x5b')]['id']}})[_0x3ae1('0x28')](handleEntityNotFound(_0x1c0dc5,null))[_0x3ae1('0x28')](function(_0x38bff3){if(_0x38bff3){return _0x38bff3[_0x3ae1('0x29')]()[_0x3ae1('0x28')](function(_0x7451bc){return _0x7451bc;});}})['then'](function(_0x20a503){_0x44d863=_0x20a503;if(_0x20a503){if(_0x20a503[_0x3ae1('0x61')]||_0x20a503[_0x3ae1('0x62')]){return db[_0x20a503[_0x3ae1('0x61')]?_0x3ae1('0x63'):_0x3ae1('0x64')][_0x3ae1('0x5d')]({'where':{'id':_0x20a503[_0x3ae1('0x61')]?_0x20a503[_0x3ae1('0x61')]:_0x20a503[_0x3ae1('0x62')]},'attributes':['id',_0x3ae1('0x2c')],'raw':!![]});}}})[_0x3ae1('0x28')](function(_0x1b8a62){var _0x2c52bd={};if(_0x1b8a62){_[_0x3ae1('0x55')](_0x2c52bd,_[_0x3ae1('0x65')](_0x44d863[_0x3ae1('0x66')],[_0x3ae1('0x67'),_0x3ae1('0x68'),'id']));_0x2c52bd[_0x3ae1('0x69')]=0x15;_0x2c52bd[_0x3ae1('0x6a')]=_0x3ae1('0x6b');_0x2c52bd[_0x3ae1('0x6c')]=_0x1b8a62[_0x3ae1('0x2c')];_0x2c52bd[_0x3ae1('0x6d')]=_0x46bb06[_0x3ae1('0x6e')]['name'];_0x2c52bd['UserId']=_0x46bb06[_0x3ae1('0x6e')]['id'];_0x2c52bd[_0x3ae1('0x6b')]=!![];_0x2c52bd['deletedat']=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');_0x2c52bd['calleridnum']=_0x44d863[_0x3ae1('0x6f')];_0x2c52bd['campaigntype']=_0x44d863[_0x3ae1('0x61')]?_0x3ae1('0x70'):_0x3ae1('0x71');return db[_0x3ae1('0x72')][_0x3ae1('0x5d')]({'where':{'id':_0x2c52bd[_0x3ae1('0x73')]},'attributes':[_0x3ae1('0x74'),_0x3ae1('0x75')]})[_0x3ae1('0x28')](function(_0xefedea){if(!_[_0x3ae1('0x76')](_0x1c0dc5)&&!_['isNil'](_0xefedea['firstName'])){_0x2c52bd[_0x3ae1('0x77')]=_0xefedea[_0x3ae1('0x74')];if(!_[_0x3ae1('0x76')](_0xefedea[_0x3ae1('0x75')])){_0x2c52bd['calleridname']+='\x20'+_0xefedea[_0x3ae1('0x75')];}}})[_0x3ae1('0x78')](function(){return db[_0x3ae1('0x79')][_0x3ae1('0x5e')](_0x2c52bd);});}})['then'](function(){return _0x1c0dc5[_0x3ae1('0x1e')](0xcc)[_0x3ae1('0x2a')]();})[_0x3ae1('0x59')](handleError(_0x1c0dc5,null));};exports['getPreview']=function(_0xa710a5,_0x523f1d,_0x40946a){var _0x55e752=[];return db[_0x3ae1('0x72')][_0x3ae1('0x60')]()['then'](function(_0x2ebe7e){_0x55e752=_[_0x3ae1('0x35')](_0x2ebe7e);return _0xa710a5[_0x3ae1('0x6e')][_0x3ae1('0x7a')]({'where':{'type':_0x3ae1('0x7b'),'dialActive':!![],'dialMethod':'preview'},'attributes':['id',_0x3ae1('0x7c'),_0x3ae1('0x7d')],'raw':!![]});})['then'](function(_0x36f48c){if(_0x36f48c&&_0x36f48c[_0x3ae1('0x4c')]){return db[_0x3ae1('0x7e')][_0x3ae1('0x7f')](function(_0x1fbfeb){var _0x170482={'active':![],'recallme':![],'scheduledAt':{'$lte':moment()['format']('YYYY-MM-DD\x20HH:mm:ss')},'VoiceQueueId':{'$in':_[_0x3ae1('0x34')](_0x36f48c,'id')},'$or':[{'UserId':null},{'UserId':_0xa710a5[_0x3ae1('0x6e')]['id']}]};var _0x497f7d={'active':![],'recallme':!![],'VoiceQueueId':{'$in':_(_0x36f48c)['filter']([_0x3ae1('0x7d'),0x0])[_0x3ae1('0x34')]('id')[_0x3ae1('0x80')]()},'$or':[{'UserId':null},{'UserId':_0xa710a5['user']['id']}]};var _0x1c18cd={'$or':[_0x170482,_0x497f7d]};var _0x220164=[];if(_0xa710a5[_0x3ae1('0x5f')][_0x3ae1('0x81')]&&_0xa710a5['body'][_0x3ae1('0x81')]===_0x3ae1('0x82')){if(!_['isEmpty'](_0xa710a5[_0x3ae1('0x5f')][_0x3ae1('0x83')])){_0x1c18cd['id']={'$in':_0xa710a5[_0x3ae1('0x5f')][_0x3ae1('0x83')]};}_0x220164=[[_0x3ae1('0x84'),_0x3ae1('0x85')],[_0x3ae1('0x86'),_0x36f48c[0x0][_0x3ae1('0x7c')]==='ASC'?'DESC':'ASC'],db[_0x3ae1('0x7e')][_0x3ae1('0x87')]('COALESCE(CmHopper.UserId,\x200)\x20ASC'),['id',_0x3ae1('0x88')]];}else{if(!_[_0x3ae1('0x89')](_0xa710a5[_0x3ae1('0x5f')][_0x3ae1('0x83')])){_0x1c18cd['id']={'$notIn':_0xa710a5['body'][_0x3ae1('0x83')]};}_0x220164=[[_0x3ae1('0x84'),_0x3ae1('0x88')],[_0x3ae1('0x86'),_0x36f48c[0x0][_0x3ae1('0x7c')]],db['sequelize'][_0x3ae1('0x87')]('COALESCE(CmHopper.UserId,\x200)\x20DESC'),['id',_0x3ae1('0x85')]];}return db[_0x3ae1('0x2f')]['findOne']({'attributes':['id','scheduledat',_0x3ae1('0x8a')],'where':_0x1c18cd,'order':_0x220164,'transaction':_0x1fbfeb,'lock':_0x1fbfeb['LOCK']['UPDATE'],'include':[{'model':db[_0x3ae1('0x72')],'as':_0x3ae1('0x8b'),'attributes':_0x55e752,'include':[{'model':db[_0x3ae1('0x8c')],'as':_0x3ae1('0x8d'),'attributes':['id','name']}]},{'model':db[_0x3ae1('0x8e')],'as':_0x3ae1('0x8f'),'attributes':['id','name']},{'model':db[_0x3ae1('0x63')],'as':_0x3ae1('0x90'),'attributes':['id',_0x3ae1('0x2c'),_0x3ae1('0x91')]}]})[_0x3ae1('0x28')](function(_0x5da5a2){if(_0x5da5a2){return _0x5da5a2['update']({'UserId':_0xa710a5['user']['id']},{'transaction':_0x1fbfeb});}});});}})[_0x3ae1('0x28')](handleEntityNotFound(_0x523f1d,null))[_0x3ae1('0x28')](respondWithResult(_0x523f1d,null))[_0x3ae1('0x59')](handleError(_0x523f1d,null));};exports[_0x3ae1('0x92')]=function(_0x589dca,_0x584e40,_0x6c0ade){return _0x589dca[_0x3ae1('0x6e')][_0x3ae1('0x7a')]({'where':{'type':'outbound','dialActive':!![],'dialMethod':'preview'},'attributes':['id'],'raw':!![]})[_0x3ae1('0x28')](function(_0x27494f){if(_0x27494f&&_0x27494f[_0x3ae1('0x4c')]){return db[_0x3ae1('0x2f')]['count']({'where':{'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0x3ae1('0x93')](_0x3ae1('0x94'))},'VoiceQueueId':{'$in':_['map'](_0x27494f,'id')},'$or':[{'UserId':null},{'UserId':_0x589dca[_0x3ae1('0x6e')]['id']}]}});}return 0x0;})[_0x3ae1('0x28')](function(_0x39a22b){if(!_[_0x3ae1('0x76')](_0x39a22b)&&_[_0x3ae1('0x95')](_0x39a22b)){return _0x584e40['status'](0xc8)['json']({'contacts':_0x39a22b});}else{logger[_0x3ae1('0x96')]('CmHopper,\x20%s,\x20%s,\x20%s',_0x3ae1('0x92'),0x194,_0x3ae1('0x97'));_0x584e40[_0x3ae1('0x1d')](0x194);}})[_0x3ae1('0x59')](handleError(_0x584e40,null));};