Built motion from commit (unavailable).|2.5.31
[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 _0x34e8=['zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','undefined','limit','count','offset','set','Content-Range','json','apply','reject','save','update','then','destroy','error','stack','name','map','CmHopper','rawAttributes','fieldName','type','key','model','query','filters','intersection','concat','$and','$or','$gte','$lt','$lte','$ne','$not','$between','$like','$notLike','$iLike','$notILike','$overlap','$contained','attributes','fields','length','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','options','includeAll','include','findAll','rows','catch','show','params','keys','find','create','body','describe','CampaignId','VoiceQueueId','Campaign','omit','dataValues','createdAt','updatedAt','state','statedesc','deleted','campaign','membername','user','UserId','deletedat','format','YYYY-MM-DD\x20HH:mm:ss','calleridnum','phone','campaigntype','queue','ivr','CmContact','firstName','isNil','calleridname','lastName','CmHopperFinal','getPreview','getVoiceQueues','outbound','preview','sequelize','direction','prev','hopperIds','priority','ASC','dialOrderByScheduledAt','DESC','COALESCE(CmHopper.UserId,\x200)\x20ASC','scheduledAt','literal','COALESCE(CmHopper.UserId,\x200)\x20DESC','findOne','Contact','CmCompany','Company','VoiceQueue','Queue','dialActive','getOpenContacts','isNumber','CmHopper,\x20%s,\x20%s,\x20%s','entity\x20not\x20found','eml-format','rimraf'];(function(_0x3ea08d,_0x2c1328){var _0x33befe=function(_0x1233b8){while(--_0x1233b8){_0x3ea08d['push'](_0x3ea08d['shift']());}};_0x33befe(++_0x2c1328);}(_0x34e8,0x12c));var _0x834e=function(_0x5a3460,_0x226dbc){_0x5a3460=_0x5a3460-0x0;var _0x2c3bc3=_0x34e8[_0x5a3460];return _0x2c3bc3;};'use strict';var emlformat=require(_0x834e('0x0'));var rimraf=require(_0x834e('0x1'));var zipdir=require(_0x834e('0x2'));var jsonpatch=require(_0x834e('0x3'));var rp=require('request-promise');var moment=require(_0x834e('0x4'));var BPromise=require(_0x834e('0x5'));var Mustache=require(_0x834e('0x6'));var util=require(_0x834e('0x7'));var path=require(_0x834e('0x8'));var sox=require(_0x834e('0x9'));var csv=require(_0x834e('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x834e('0xb'));var _=require('lodash');var squel=require(_0x834e('0xc'));var crypto=require(_0x834e('0xd'));var jsforce=require(_0x834e('0xe'));var deskjs=require(_0x834e('0xf'));var toCsv=require(_0x834e('0xa'));var querystring=require(_0x834e('0x10'));var Papa=require(_0x834e('0x11'));var Redis=require(_0x834e('0x12'));var authService=require(_0x834e('0x13'));var qs=require(_0x834e('0x14'));var as=require(_0x834e('0x15'));var hardwareService=require(_0x834e('0x16'));var logger=require(_0x834e('0x17'))(_0x834e('0x18'));var utils=require(_0x834e('0x19'));var config=require(_0x834e('0x1a'));var licenseUtil=require(_0x834e('0x1b'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x5e5b6d,_0x6cd9b9){_0x6cd9b9=_0x6cd9b9||0xcc;return function(_0x58a27e){if(_0x58a27e){return _0x5e5b6d[_0x834e('0x1c')](_0x6cd9b9);}return _0x5e5b6d[_0x834e('0x1d')](_0x6cd9b9)[_0x834e('0x1e')]();};}function respondWithResult(_0x21cc0a,_0x50e860){_0x50e860=_0x50e860||0xc8;return function(_0x43156c){if(_0x43156c){return _0x21cc0a[_0x834e('0x1d')](_0x50e860)['json'](_0x43156c);}};}function respondWithFilteredResult(_0x316205,_0x4a9cdc){return function(_0x38a8cd){if(_0x38a8cd){var _0x36d443=typeof _0x4a9cdc['offset']===_0x834e('0x1f')&&typeof _0x4a9cdc[_0x834e('0x20')]===_0x834e('0x1f');var _0x50b3f6=_0x38a8cd[_0x834e('0x21')];var _0x211e9a=_0x36d443?0x0:_0x4a9cdc[_0x834e('0x22')];var _0xb993a1=_0x36d443?_0x38a8cd[_0x834e('0x21')]:_0x4a9cdc[_0x834e('0x22')]+_0x4a9cdc[_0x834e('0x20')];var _0x595515;if(_0xb993a1>=_0x50b3f6){_0xb993a1=_0x50b3f6;_0x595515=0xc8;}else{_0x595515=0xce;}_0x316205[_0x834e('0x1d')](_0x595515);return _0x316205[_0x834e('0x23')](_0x834e('0x24'),_0x211e9a+'-'+_0xb993a1+'/'+_0x50b3f6)[_0x834e('0x25')](_0x38a8cd);}return null;};}function patchUpdates(_0x4ab05d){return function(_0x45a630){try{jsonpatch[_0x834e('0x26')](_0x45a630,_0x4ab05d,!![]);}catch(_0x5a05c0){return BPromise[_0x834e('0x27')](_0x5a05c0);}return _0x45a630[_0x834e('0x28')]();};}function saveUpdates(_0x8d406e,_0x5c55ca){return function(_0x4e3f48){if(_0x4e3f48){return _0x4e3f48[_0x834e('0x29')](_0x8d406e)[_0x834e('0x2a')](function(_0x589dde){return _0x589dde;});}return null;};}function removeEntity(_0x25ee1d,_0x1dc1e0){return function(_0x58f4fd){if(_0x58f4fd){return _0x58f4fd[_0x834e('0x2b')]()[_0x834e('0x2a')](function(){_0x25ee1d[_0x834e('0x1d')](0xcc)['end']();});}};}function handleEntityNotFound(_0x24fcf7,_0x3e310f){return function(_0x5e1cc5){if(!_0x5e1cc5){_0x24fcf7['sendStatus'](0x194);}return _0x5e1cc5;};}function handleError(_0x1e713a,_0x508a1d){_0x508a1d=_0x508a1d||0x1f4;return function(_0x2826ec){logger[_0x834e('0x2c')](_0x2826ec[_0x834e('0x2d')]);if(_0x2826ec[_0x834e('0x2e')]){delete _0x2826ec[_0x834e('0x2e')];}_0x1e713a[_0x834e('0x1d')](_0x508a1d)['send'](_0x2826ec);};}exports['index']=function(_0x4dc64a,_0x58c1d7){var _0x2c7a8d={},_0x567cea={},_0x106d6a={'count':0x0,'rows':[]};var _0x5dacc1=_[_0x834e('0x2f')](db[_0x834e('0x30')][_0x834e('0x31')],function(_0x1e026a){return{'name':_0x1e026a[_0x834e('0x32')],'type':_0x1e026a[_0x834e('0x33')][_0x834e('0x34')]};});_0x567cea[_0x834e('0x35')]=_[_0x834e('0x2f')](_0x5dacc1,'name');_0x567cea[_0x834e('0x36')]=_['keys'](_0x4dc64a[_0x834e('0x36')]);_0x567cea[_0x834e('0x37')]=_[_0x834e('0x38')](_0x567cea[_0x834e('0x35')],_0x567cea[_0x834e('0x36')]);_0x567cea[_0x834e('0x37')]=_[_0x834e('0x39')](_0x567cea[_0x834e('0x37')],[_0x834e('0x3a'),_0x834e('0x3b'),'$gt',_0x834e('0x3c'),_0x834e('0x3d'),_0x834e('0x3e'),_0x834e('0x3f'),'$eq',_0x834e('0x40'),_0x834e('0x41'),'$notBetween','$in','$notIn',_0x834e('0x42'),_0x834e('0x43'),_0x834e('0x44'),_0x834e('0x45'),_0x834e('0x42'),_0x834e('0x46'),'$contains',_0x834e('0x47'),'$any']);_0x2c7a8d[_0x834e('0x48')]=_[_0x834e('0x38')](_0x567cea['model'],qs[_0x834e('0x49')](_0x4dc64a[_0x834e('0x36')]['fields']));_0x2c7a8d['attributes']=_0x2c7a8d[_0x834e('0x48')][_0x834e('0x4a')]?_0x2c7a8d[_0x834e('0x48')]:_0x567cea[_0x834e('0x35')];if(!_0x4dc64a[_0x834e('0x36')]['hasOwnProperty'](_0x834e('0x4b'))){_0x2c7a8d['limit']=qs['limit'](_0x4dc64a[_0x834e('0x36')]['limit']);_0x2c7a8d[_0x834e('0x22')]=qs[_0x834e('0x22')](_0x4dc64a[_0x834e('0x36')][_0x834e('0x22')]);}_0x2c7a8d[_0x834e('0x4c')]=qs['sort'](_0x4dc64a[_0x834e('0x36')][_0x834e('0x4d')]);_0x2c7a8d[_0x834e('0x4e')]=qs['filters'](_[_0x834e('0x4f')](_0x4dc64a[_0x834e('0x36')],_0x567cea['filters']),_0x5dacc1);if(_0x4dc64a[_0x834e('0x36')]['filter']){_0x2c7a8d[_0x834e('0x4e')]=_[_0x834e('0x50')](_0x2c7a8d['where'],{'$or':_['map'](_0x5dacc1,function(_0x22ea21){if(_0x22ea21[_0x834e('0x33')]!==_0x834e('0x51')){var _0xbc1571={};_0xbc1571[_0x22ea21[_0x834e('0x2e')]]={'$like':'%'+_0x4dc64a[_0x834e('0x36')][_0x834e('0x52')]+'%'};return _0xbc1571;}})});}_0x2c7a8d=_['merge']({},_0x2c7a8d,_0x4dc64a[_0x834e('0x53')]);var _0x5abb7a={'where':_0x2c7a8d[_0x834e('0x4e')]};return db['CmHopper'][_0x834e('0x21')](_0x5abb7a)['then'](function(_0x361f60){_0x106d6a[_0x834e('0x21')]=_0x361f60;if(_0x4dc64a['query'][_0x834e('0x54')]){_0x2c7a8d[_0x834e('0x55')]=[{'all':!![]}];}return db[_0x834e('0x30')][_0x834e('0x56')](_0x2c7a8d);})[_0x834e('0x2a')](function(_0x1a7149){_0x106d6a[_0x834e('0x57')]=_0x1a7149;return _0x106d6a;})[_0x834e('0x2a')](respondWithFilteredResult(_0x58c1d7,_0x2c7a8d))[_0x834e('0x58')](handleError(_0x58c1d7,null));};exports[_0x834e('0x59')]=function(_0x5f3943,_0x3124be){var _0x6fff27={'raw':!![],'where':{'id':_0x5f3943[_0x834e('0x5a')]['id']}},_0x47a8a9={};_0x47a8a9[_0x834e('0x35')]=_[_0x834e('0x5b')](db[_0x834e('0x30')][_0x834e('0x31')]);_0x47a8a9[_0x834e('0x36')]=_['keys'](_0x5f3943['query']);_0x47a8a9[_0x834e('0x37')]=_[_0x834e('0x38')](_0x47a8a9[_0x834e('0x35')],_0x47a8a9[_0x834e('0x36')]);_0x6fff27[_0x834e('0x48')]=_[_0x834e('0x38')](_0x47a8a9[_0x834e('0x35')],qs[_0x834e('0x49')](_0x5f3943[_0x834e('0x36')][_0x834e('0x49')]));_0x6fff27[_0x834e('0x48')]=_0x6fff27[_0x834e('0x48')][_0x834e('0x4a')]?_0x6fff27[_0x834e('0x48')]:_0x47a8a9[_0x834e('0x35')];if(_0x5f3943[_0x834e('0x36')][_0x834e('0x54')]){_0x6fff27[_0x834e('0x55')]=[{'all':!![]}];}_0x6fff27=_[_0x834e('0x50')]({},_0x6fff27,_0x5f3943[_0x834e('0x53')]);return db['CmHopper'][_0x834e('0x5c')](_0x6fff27)[_0x834e('0x2a')](handleEntityNotFound(_0x3124be,null))['then'](respondWithResult(_0x3124be,null))[_0x834e('0x58')](handleError(_0x3124be,null));};exports[_0x834e('0x5d')]=function(_0x55d491,_0x3dcca3){return db[_0x834e('0x30')][_0x834e('0x5d')](_0x55d491[_0x834e('0x5e')],{})[_0x834e('0x2a')](respondWithResult(_0x3dcca3,0xc9))[_0x834e('0x58')](handleError(_0x3dcca3,null));};exports[_0x834e('0x29')]=function(_0x4a8b32,_0x1ad7fe){if(_0x4a8b32[_0x834e('0x5e')]['id']){delete _0x4a8b32[_0x834e('0x5e')]['id'];}return db[_0x834e('0x30')][_0x834e('0x5c')]({'where':{'id':_0x4a8b32[_0x834e('0x5a')]['id']}})[_0x834e('0x2a')](handleEntityNotFound(_0x1ad7fe,null))[_0x834e('0x2a')](saveUpdates(_0x4a8b32['body'],null))[_0x834e('0x2a')](respondWithResult(_0x1ad7fe,null))['catch'](handleError(_0x1ad7fe,null));};exports[_0x834e('0x5f')]=function(_0x53a9ee,_0x35b6b8){return db['CmHopper']['describe']()[_0x834e('0x2a')](respondWithResult(_0x35b6b8,null))[_0x834e('0x58')](handleError(_0x35b6b8,null));};exports['destroy']=function(_0x5be43d,_0x2c8155){var _0x2452b4;return db[_0x834e('0x30')][_0x834e('0x5c')]({'where':{'id':_0x5be43d[_0x834e('0x5a')]['id']}})[_0x834e('0x2a')](handleEntityNotFound(_0x2c8155,null))[_0x834e('0x2a')](function(_0x4273f1){if(_0x4273f1){return _0x4273f1['destroy']()[_0x834e('0x2a')](function(_0x3c70bf){return _0x3c70bf;});}})['then'](function(_0x281342){_0x2452b4=_0x281342;if(_0x281342){if(_0x281342['VoiceQueueId']||_0x281342[_0x834e('0x60')]){return db[_0x281342[_0x834e('0x61')]?'VoiceQueue':_0x834e('0x62')][_0x834e('0x5c')]({'where':{'id':_0x281342[_0x834e('0x61')]?_0x281342[_0x834e('0x61')]:_0x281342['CampaignId']},'attributes':['id',_0x834e('0x2e')],'raw':!![]});}}})[_0x834e('0x2a')](function(_0x1dfd5f){var _0x5925ef={};if(_0x1dfd5f){_[_0x834e('0x50')](_0x5925ef,_[_0x834e('0x63')](_0x2452b4[_0x834e('0x64')],[_0x834e('0x65'),_0x834e('0x66'),'id']));_0x5925ef[_0x834e('0x67')]=0x15;_0x5925ef[_0x834e('0x68')]=_0x834e('0x69');_0x5925ef[_0x834e('0x6a')]=_0x1dfd5f[_0x834e('0x2e')];_0x5925ef[_0x834e('0x6b')]=_0x5be43d[_0x834e('0x6c')][_0x834e('0x2e')];_0x5925ef[_0x834e('0x6d')]=_0x5be43d[_0x834e('0x6c')]['id'];_0x5925ef[_0x834e('0x69')]=!![];_0x5925ef[_0x834e('0x6e')]=moment()[_0x834e('0x6f')](_0x834e('0x70'));_0x5925ef[_0x834e('0x71')]=_0x2452b4[_0x834e('0x72')];_0x5925ef[_0x834e('0x73')]=_0x2452b4['VoiceQueueId']?_0x834e('0x74'):_0x834e('0x75');return db[_0x834e('0x76')][_0x834e('0x5c')]({'where':{'id':_0x5925ef['ContactId']},'attributes':[_0x834e('0x77'),'lastName']})['then'](function(_0x2fdb1b){if(!_[_0x834e('0x78')](_0x2c8155)&&!_[_0x834e('0x78')](_0x2fdb1b[_0x834e('0x77')])){_0x5925ef[_0x834e('0x79')]=_0x2fdb1b[_0x834e('0x77')];if(!_[_0x834e('0x78')](_0x2fdb1b[_0x834e('0x7a')])){_0x5925ef['calleridname']+='\x20'+_0x2fdb1b[_0x834e('0x7a')];}}})['finally'](function(){return db[_0x834e('0x7b')][_0x834e('0x5d')](_0x5925ef);});}})['then'](function(){return _0x2c8155['status'](0xcc)[_0x834e('0x1e')]();})[_0x834e('0x58')](handleError(_0x2c8155,null));};exports[_0x834e('0x7c')]=function(_0x2cca07,_0x2c41bd,_0x5a4854){var _0x2b0d93=[];return db[_0x834e('0x76')][_0x834e('0x5f')]()[_0x834e('0x2a')](function(_0x3181af){_0x2b0d93=_[_0x834e('0x5b')](_0x3181af);return _0x2cca07[_0x834e('0x6c')][_0x834e('0x7d')]({'where':{'type':_0x834e('0x7e'),'dialActive':!![],'dialMethod':_0x834e('0x7f')},'attributes':['id','dialOrderByScheduledAt'],'raw':!![]});})[_0x834e('0x2a')](function(_0x2e4d80){if(_0x2e4d80&&_0x2e4d80[_0x834e('0x4a')]){return db[_0x834e('0x80')]['transaction'](function(_0x46fa0d){var _0x4ac5f2={'active':![],'recallme':![],'scheduledAt':{'$lte':moment()['format']('YYYY-MM-DD\x20HH:mm:ss')},'VoiceQueueId':{'$in':_[_0x834e('0x2f')](_0x2e4d80,'id')},'$or':[{'UserId':null},{'UserId':_0x2cca07[_0x834e('0x6c')]['id']}]};var _0x514aac=[];if(_0x2cca07[_0x834e('0x5e')][_0x834e('0x81')]&&_0x2cca07['body'][_0x834e('0x81')]===_0x834e('0x82')){if(!_['isEmpty'](_0x2cca07['body'][_0x834e('0x83')])){_0x4ac5f2['id']={'$in':_0x2cca07[_0x834e('0x5e')][_0x834e('0x83')]};}_0x514aac=[[_0x834e('0x84'),_0x834e('0x85')],['scheduledAt',_0x2e4d80[0x0][_0x834e('0x86')]==='ASC'?_0x834e('0x87'):_0x834e('0x85')],db[_0x834e('0x80')]['literal'](_0x834e('0x88')),['id',_0x834e('0x87')]];}else{if(!_['isEmpty'](_0x2cca07[_0x834e('0x5e')][_0x834e('0x83')])){_0x4ac5f2['id']={'$notIn':_0x2cca07[_0x834e('0x5e')]['hopperIds']};}_0x514aac=[[_0x834e('0x84'),_0x834e('0x87')],[_0x834e('0x89'),_0x2e4d80[0x0][_0x834e('0x86')]],db[_0x834e('0x80')][_0x834e('0x8a')](_0x834e('0x8b')),['id',_0x834e('0x85')]];}return db[_0x834e('0x30')][_0x834e('0x8c')]({'attributes':['id','scheduledat'],'where':_0x4ac5f2,'order':_0x514aac,'transaction':_0x46fa0d,'lock':_0x46fa0d['LOCK']['UPDATE'],'include':[{'model':db[_0x834e('0x76')],'as':_0x834e('0x8d'),'attributes':_0x2b0d93,'include':[{'model':db[_0x834e('0x8e')],'as':_0x834e('0x8f'),'attributes':['id',_0x834e('0x2e')]}]},{'model':db['CmList'],'as':'List','attributes':['id',_0x834e('0x2e')]},{'model':db[_0x834e('0x90')],'as':_0x834e('0x91'),'attributes':['id',_0x834e('0x2e'),_0x834e('0x92')]}]})['then'](function(_0x2df0d5){if(_0x2df0d5){return _0x2df0d5[_0x834e('0x29')]({'UserId':_0x2cca07[_0x834e('0x6c')]['id']},{'transaction':_0x46fa0d});}});});}})['then'](handleEntityNotFound(_0x2c41bd,null))[_0x834e('0x2a')](respondWithResult(_0x2c41bd,null))[_0x834e('0x58')](handleError(_0x2c41bd,null));};exports[_0x834e('0x93')]=function(_0x443633,_0x23bc1e,_0x585d02){return _0x443633['user'][_0x834e('0x7d')]({'where':{'type':_0x834e('0x7e'),'dialActive':!![],'dialMethod':'preview'},'attributes':['id'],'raw':!![]})[_0x834e('0x2a')](function(_0x509427){if(_0x509427&&_0x509427[_0x834e('0x4a')]){return db[_0x834e('0x30')][_0x834e('0x21')]({'where':{'active':![],'recallme':![],'scheduledAt':{'$lte':moment()['format'](_0x834e('0x70'))},'VoiceQueueId':{'$in':_['map'](_0x509427,'id')},'$or':[{'UserId':null},{'UserId':_0x443633['user']['id']}]}});}return 0x0;})['then'](function(_0x6735e6){if(!_[_0x834e('0x78')](_0x6735e6)&&_[_0x834e('0x94')](_0x6735e6)){return _0x23bc1e[_0x834e('0x1d')](0xc8)[_0x834e('0x25')]({'contacts':_0x6735e6});}else{logger[_0x834e('0x2c')](_0x834e('0x95'),_0x834e('0x93'),0x194,_0x834e('0x96'));_0x23bc1e['sendStatus'](0x194);}})[_0x834e('0x58')](handleError(_0x23bc1e,null));};