Built motion from commit (unavailable).|2.5.4
[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 _0x1945=['querystring','ioredis','../../components/parsers/advancedSearch','api','../../mysqldb','sendStatus','end','status','json','count','offset','limit','Content-Range','apply','save','destroy','error','stack','name','send','map','CmHopper','key','query','keys','filters','intersection','model','$gte','$ne','$eq','$not','$between','$notIn','$like','$notLike','$iLike','$notILike','$overlap','$contained','$any','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','merge','type','VIRTUAL','options','then','includeAll','findAll','rows','catch','show','params','rawAttributes','include','find','create','body','describe','VoiceQueueId','VoiceQueue','Campaign','omit','createdAt','updatedAt','state','statedesc','deleted','campaign','membername','user','deletedat','format','YYYY-MM-DD\x20HH:mm:ss','calleridnum','phone','campaigntype','queue','CmContact','ContactId','firstName','isNil','calleridname','lastName','finally','CmHopperFinal','outbound','sequelize','direction','priority','scheduledAt','dialOrderByScheduledAt','ASC','literal','COALESCE(CmHopper.UserId,\x200)\x20ASC','DESC','isEmpty','findOne','scheduledat','LOCK','Contact','CmCompany','Company','CmList','List','dialActive','update','getVoiceQueues','preview','CmHopper,\x20%s,\x20%s,\x20%s','getOpenContacts','entity\x20not\x20found','eml-format','rimraf','zip-dir','request-promise','moment','mustache','util','path','sox','ejs','lodash','jsforce','to-csv'];(function(_0x49f3a9,_0x53a198){var _0x5a4f20=function(_0x4007b0){while(--_0x4007b0){_0x49f3a9['push'](_0x49f3a9['shift']());}};_0x5a4f20(++_0x53a198);}(_0x1945,0xfd));var _0x5194=function(_0xa1e3e3,_0x29fe0e){_0xa1e3e3=_0xa1e3e3-0x0;var _0xc980e9=_0x1945[_0xa1e3e3];return _0xc980e9;};'use strict';var pdf=require('html-pdf');var emlformat=require(_0x5194('0x0'));var rimraf=require(_0x5194('0x1'));var zipdir=require(_0x5194('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x5194('0x3'));var moment=require(_0x5194('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x5194('0x5'));var util=require(_0x5194('0x6'));var path=require(_0x5194('0x7'));var sox=require(_0x5194('0x8'));var csv=require('to-csv');var ejs=require(_0x5194('0x9'));var fs=require('fs');var _=require(_0x5194('0xa'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x5194('0xb'));var deskjs=require('desk.js');var toCsv=require(_0x5194('0xc'));var querystring=require(_0x5194('0xd'));var Papa=require('papaparse');var Redis=require(_0x5194('0xe'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x5194('0xf'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x5194('0x10'));var utils=require('../../config/utils');var config=require('../../config/environment');var db=require(_0x5194('0x11'))['db'];function respondWithStatusCode(_0x2d0569,_0x4990f1){_0x4990f1=_0x4990f1||0xcc;return function(_0xbdbb2e){if(_0xbdbb2e){return _0x2d0569[_0x5194('0x12')](_0x4990f1);}return _0x2d0569['status'](_0x4990f1)[_0x5194('0x13')]();};}function respondWithResult(_0x829748,_0x392a0d){_0x392a0d=_0x392a0d||0xc8;return function(_0x1b4891){if(_0x1b4891){return _0x829748[_0x5194('0x14')](_0x392a0d)[_0x5194('0x15')](_0x1b4891);}};}function respondWithFilteredResult(_0x18fbea,_0x18b26c){return function(_0x20d312){if(_0x20d312){var _0x4e3aa0=_0x20d312[_0x5194('0x16')],_0x25a9a1=_0x18b26c['offset'],_0x21b579=_0x18b26c[_0x5194('0x17')]+_0x18b26c[_0x5194('0x18')],_0x5970b6;if(_0x21b579>=_0x4e3aa0){_0x21b579=_0x4e3aa0;_0x5970b6=0xc8;}else{_0x5970b6=0xce;}_0x18fbea[_0x5194('0x14')](_0x5970b6);return _0x18fbea['set'](_0x5194('0x19'),_0x25a9a1+'-'+_0x21b579+'/'+_0x4e3aa0)['json'](_0x20d312);}return null;};}function patchUpdates(_0x368292){return function(_0x2d43a5){try{jsonpatch[_0x5194('0x1a')](_0x2d43a5,_0x368292,!![]);}catch(_0x383e11){return BPromise['reject'](_0x383e11);}return _0x2d43a5[_0x5194('0x1b')]();};}function saveUpdates(_0xaf517f,_0x32c699){return function(_0x3bf3f4){if(_0x3bf3f4){return _0x3bf3f4['update'](_0xaf517f)['then'](function(_0x10c4aa){return _0x10c4aa;});}return null;};}function removeEntity(_0x237ab5,_0x2cc740){return function(_0x1b96fe){if(_0x1b96fe){return _0x1b96fe[_0x5194('0x1c')]()['then'](function(){_0x237ab5[_0x5194('0x14')](0xcc)[_0x5194('0x13')]();});}};}function handleEntityNotFound(_0x5ccdf0,_0x3a084a){return function(_0x46c88c){if(!_0x46c88c){_0x5ccdf0['sendStatus'](0x194);}return _0x46c88c;};}function handleError(_0x53189d,_0x115040){_0x115040=_0x115040||0x1f4;return function(_0x3e7aff){logger[_0x5194('0x1d')](_0x3e7aff[_0x5194('0x1e')]);if(_0x3e7aff['name']){delete _0x3e7aff[_0x5194('0x1f')];}_0x53189d[_0x5194('0x14')](_0x115040)[_0x5194('0x20')](_0x3e7aff);};}exports['index']=function(_0x30f0b7,_0x59bde5){var _0x180874={},_0x203561={},_0x568d07={'count':0x0,'rows':[]};var _0x9a1123=_[_0x5194('0x21')](db[_0x5194('0x22')]['rawAttributes'],function(_0x25b01d){return{'name':_0x25b01d['fieldName'],'type':_0x25b01d['type'][_0x5194('0x23')]};});_0x203561['model']=_[_0x5194('0x21')](_0x9a1123,_0x5194('0x1f'));_0x203561[_0x5194('0x24')]=_[_0x5194('0x25')](_0x30f0b7[_0x5194('0x24')]);_0x203561[_0x5194('0x26')]=_[_0x5194('0x27')](_0x203561[_0x5194('0x28')],_0x203561[_0x5194('0x24')]);_0x203561[_0x5194('0x26')]=_['concat'](_0x203561[_0x5194('0x26')],['$and','$or','$gt',_0x5194('0x29'),'$lt','$lte',_0x5194('0x2a'),_0x5194('0x2b'),_0x5194('0x2c'),_0x5194('0x2d'),'$notBetween','$in',_0x5194('0x2e'),_0x5194('0x2f'),_0x5194('0x30'),_0x5194('0x31'),_0x5194('0x32'),_0x5194('0x2f'),_0x5194('0x33'),'$contains',_0x5194('0x34'),_0x5194('0x35')]);_0x180874[_0x5194('0x36')]=_[_0x5194('0x27')](_0x203561[_0x5194('0x28')],qs['fields'](_0x30f0b7['query'][_0x5194('0x37')]));_0x180874['attributes']=_0x180874[_0x5194('0x36')][_0x5194('0x38')]?_0x180874[_0x5194('0x36')]:_0x203561['model'];if(!_0x30f0b7[_0x5194('0x24')][_0x5194('0x39')]('nolimit')){_0x180874[_0x5194('0x18')]=qs[_0x5194('0x18')](_0x30f0b7[_0x5194('0x24')][_0x5194('0x18')]);_0x180874[_0x5194('0x17')]=qs[_0x5194('0x17')](_0x30f0b7[_0x5194('0x24')][_0x5194('0x17')]);}_0x180874[_0x5194('0x3a')]=qs[_0x5194('0x3b')](_0x30f0b7[_0x5194('0x24')][_0x5194('0x3b')]);_0x180874[_0x5194('0x3c')]=qs[_0x5194('0x26')](_[_0x5194('0x3d')](_0x30f0b7['query'],_0x203561[_0x5194('0x26')]),_0x9a1123);if(_0x30f0b7[_0x5194('0x24')][_0x5194('0x3e')]){_0x180874[_0x5194('0x3c')]=_[_0x5194('0x3f')](_0x180874[_0x5194('0x3c')],{'$or':_[_0x5194('0x21')](_0x9a1123,function(_0xa54eb){if(_0xa54eb[_0x5194('0x40')]!==_0x5194('0x41')){var _0x42d0fd={};_0x42d0fd[_0xa54eb['name']]={'$like':'%'+_0x30f0b7[_0x5194('0x24')]['filter']+'%'};return _0x42d0fd;}})});}_0x180874=_[_0x5194('0x3f')]({},_0x180874,_0x30f0b7[_0x5194('0x42')]);var _0xad54d={'where':_0x180874[_0x5194('0x3c')]};return db[_0x5194('0x22')][_0x5194('0x16')](_0xad54d)[_0x5194('0x43')](function(_0x346531){_0x568d07['count']=_0x346531;if(_0x30f0b7[_0x5194('0x24')][_0x5194('0x44')]){_0x180874['include']=[{'all':!![]}];}return db[_0x5194('0x22')][_0x5194('0x45')](_0x180874);})[_0x5194('0x43')](function(_0x33a45c){_0x568d07[_0x5194('0x46')]=_0x33a45c;return _0x568d07;})[_0x5194('0x43')](respondWithFilteredResult(_0x59bde5,_0x180874))[_0x5194('0x47')](handleError(_0x59bde5,null));};exports[_0x5194('0x48')]=function(_0x5862fc,_0x41145a){var _0x475fea={'raw':!![],'where':{'id':_0x5862fc[_0x5194('0x49')]['id']}},_0x221f64={};_0x221f64[_0x5194('0x28')]=_[_0x5194('0x25')](db[_0x5194('0x22')][_0x5194('0x4a')]);_0x221f64['query']=_[_0x5194('0x25')](_0x5862fc[_0x5194('0x24')]);_0x221f64[_0x5194('0x26')]=_['intersection'](_0x221f64[_0x5194('0x28')],_0x221f64[_0x5194('0x24')]);_0x475fea[_0x5194('0x36')]=_[_0x5194('0x27')](_0x221f64[_0x5194('0x28')],qs['fields'](_0x5862fc[_0x5194('0x24')][_0x5194('0x37')]));_0x475fea[_0x5194('0x36')]=_0x475fea['attributes'][_0x5194('0x38')]?_0x475fea[_0x5194('0x36')]:_0x221f64[_0x5194('0x28')];if(_0x5862fc[_0x5194('0x24')]['includeAll']){_0x475fea[_0x5194('0x4b')]=[{'all':!![]}];}_0x475fea=_[_0x5194('0x3f')]({},_0x475fea,_0x5862fc[_0x5194('0x42')]);return db[_0x5194('0x22')][_0x5194('0x4c')](_0x475fea)['then'](handleEntityNotFound(_0x41145a,null))[_0x5194('0x43')](respondWithResult(_0x41145a,null))['catch'](handleError(_0x41145a,null));};exports[_0x5194('0x4d')]=function(_0x104f2c,_0x55ca25){return db[_0x5194('0x22')][_0x5194('0x4d')](_0x104f2c[_0x5194('0x4e')],{})[_0x5194('0x43')](respondWithResult(_0x55ca25,0xc9))['catch'](handleError(_0x55ca25,null));};exports['update']=function(_0x2cf477,_0xaa47ab){if(_0x2cf477[_0x5194('0x4e')]['id']){delete _0x2cf477[_0x5194('0x4e')]['id'];}return db[_0x5194('0x22')]['find']({'where':{'id':_0x2cf477[_0x5194('0x49')]['id']}})[_0x5194('0x43')](handleEntityNotFound(_0xaa47ab,null))[_0x5194('0x43')](saveUpdates(_0x2cf477[_0x5194('0x4e')],null))[_0x5194('0x43')](respondWithResult(_0xaa47ab,null))[_0x5194('0x47')](handleError(_0xaa47ab,null));};exports[_0x5194('0x4f')]=function(_0x2654a9,_0x1fd268){return db['CmHopper'][_0x5194('0x4f')]()[_0x5194('0x43')](respondWithResult(_0x1fd268,null))[_0x5194('0x47')](handleError(_0x1fd268,null));};exports[_0x5194('0x1c')]=function(_0x1395e6,_0x20792f){var _0x5d16fb;return db[_0x5194('0x22')][_0x5194('0x4c')]({'where':{'id':_0x1395e6[_0x5194('0x49')]['id']}})[_0x5194('0x43')](handleEntityNotFound(_0x20792f,null))['then'](function(_0x4af5fa){if(_0x4af5fa){return _0x4af5fa[_0x5194('0x1c')]()[_0x5194('0x43')](function(_0x18f7e6){return _0x18f7e6;});}})[_0x5194('0x43')](function(_0x22bdb8){_0x5d16fb=_0x22bdb8;if(_0x22bdb8){if(_0x22bdb8['VoiceQueueId']||_0x22bdb8['CampaignId']){return db[_0x22bdb8[_0x5194('0x50')]?_0x5194('0x51'):_0x5194('0x52')][_0x5194('0x4c')]({'where':{'id':_0x22bdb8[_0x5194('0x50')]?_0x22bdb8['VoiceQueueId']:_0x22bdb8['CampaignId']},'attributes':['id',_0x5194('0x1f')],'raw':!![]});}}})[_0x5194('0x43')](function(_0x46cfb8){var _0x2e04c8={};if(_0x46cfb8){_['merge'](_0x2e04c8,_[_0x5194('0x53')](_0x5d16fb['dataValues'],[_0x5194('0x54'),_0x5194('0x55'),'id']));_0x2e04c8[_0x5194('0x56')]=0x15;_0x2e04c8[_0x5194('0x57')]=_0x5194('0x58');_0x2e04c8[_0x5194('0x59')]=_0x46cfb8[_0x5194('0x1f')];_0x2e04c8[_0x5194('0x5a')]=_0x1395e6['user'][_0x5194('0x1f')];_0x2e04c8['UserId']=_0x1395e6[_0x5194('0x5b')]['id'];_0x2e04c8[_0x5194('0x58')]=!![];_0x2e04c8[_0x5194('0x5c')]=moment()[_0x5194('0x5d')](_0x5194('0x5e'));_0x2e04c8[_0x5194('0x5f')]=_0x5d16fb[_0x5194('0x60')];_0x2e04c8[_0x5194('0x61')]=_0x5d16fb[_0x5194('0x50')]?_0x5194('0x62'):'ivr';return db[_0x5194('0x63')][_0x5194('0x4c')]({'where':{'id':_0x2e04c8[_0x5194('0x64')]},'attributes':[_0x5194('0x65'),'lastName']})[_0x5194('0x43')](function(_0x4cd924){if(!_[_0x5194('0x66')](_0x20792f)&&!_[_0x5194('0x66')](_0x4cd924[_0x5194('0x65')])){_0x2e04c8[_0x5194('0x67')]=_0x4cd924['firstName'];if(!_[_0x5194('0x66')](_0x4cd924[_0x5194('0x68')])){_0x2e04c8['calleridname']+='\x20'+_0x4cd924[_0x5194('0x68')];}}})[_0x5194('0x69')](function(){return db[_0x5194('0x6a')][_0x5194('0x4d')](_0x2e04c8);});}})[_0x5194('0x43')](function(){return _0x20792f['status'](0xcc)[_0x5194('0x13')]();})[_0x5194('0x47')](handleError(_0x20792f,null));};exports['getPreview']=function(_0x4db0df,_0x3db033,_0x353306){var _0x43845d=[];return db[_0x5194('0x63')][_0x5194('0x4f')]()[_0x5194('0x43')](function(_0x935c69){_0x43845d=_[_0x5194('0x25')](_0x935c69);return _0x4db0df[_0x5194('0x5b')]['getVoiceQueues']({'where':{'type':_0x5194('0x6b'),'dialActive':!![],'dialMethod':'preview'},'attributes':['id','dialOrderByScheduledAt'],'raw':!![]});})[_0x5194('0x43')](function(_0xa92648){if(_0xa92648&&_0xa92648[_0x5194('0x38')]){return db[_0x5194('0x6c')]['transaction'](function(_0x5da3a2){var _0x510117={'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0x5194('0x5d')](_0x5194('0x5e'))},'VoiceQueueId':{'$in':_[_0x5194('0x21')](_0xa92648,'id')},'$or':[{'UserId':null},{'UserId':_0x4db0df['user']['id']}]};var _0x20d530=[];if(_0x4db0df[_0x5194('0x4e')]['direction']&&_0x4db0df['body'][_0x5194('0x6d')]==='prev'){if(!_['isEmpty'](_0x4db0df[_0x5194('0x4e')]['hopperIds'])){_0x510117['id']={'$in':_0x4db0df[_0x5194('0x4e')]['hopperIds']};}_0x20d530=[[_0x5194('0x6e'),'ASC'],[_0x5194('0x6f'),_0xa92648[0x0][_0x5194('0x70')]===_0x5194('0x71')?'DESC':_0x5194('0x71')],db[_0x5194('0x6c')][_0x5194('0x72')](_0x5194('0x73')),['id',_0x5194('0x74')]];}else{if(!_[_0x5194('0x75')](_0x4db0df[_0x5194('0x4e')]['hopperIds'])){_0x510117['id']={'$notIn':_0x4db0df[_0x5194('0x4e')]['hopperIds']};}_0x20d530=[[_0x5194('0x6e'),_0x5194('0x74')],[_0x5194('0x6f'),_0xa92648[0x0]['dialOrderByScheduledAt']],db[_0x5194('0x6c')][_0x5194('0x72')]('COALESCE(CmHopper.UserId,\x200)\x20DESC'),['id',_0x5194('0x71')]];}return db['CmHopper'][_0x5194('0x76')]({'attributes':['id',_0x5194('0x77')],'where':_0x510117,'order':_0x20d530,'transaction':_0x5da3a2,'lock':_0x5da3a2[_0x5194('0x78')]['UPDATE'],'include':[{'model':db['CmContact'],'as':_0x5194('0x79'),'attributes':_0x43845d,'include':[{'model':db[_0x5194('0x7a')],'as':_0x5194('0x7b'),'attributes':['id',_0x5194('0x1f')]}]},{'model':db[_0x5194('0x7c')],'as':_0x5194('0x7d'),'attributes':['id','name']},{'model':db[_0x5194('0x51')],'as':'Queue','attributes':['id',_0x5194('0x1f'),_0x5194('0x7e')]}]})[_0x5194('0x43')](function(_0x4e96ce){if(_0x4e96ce){return _0x4e96ce[_0x5194('0x7f')]({'UserId':_0x4db0df[_0x5194('0x5b')]['id']},{'transaction':_0x5da3a2});}});});}})[_0x5194('0x43')](handleEntityNotFound(_0x3db033,null))[_0x5194('0x43')](respondWithResult(_0x3db033,null))['catch'](handleError(_0x3db033,null));};exports['getOpenContacts']=function(_0x285b45,_0x1069b7,_0x22e1f4){return _0x285b45[_0x5194('0x5b')][_0x5194('0x80')]({'where':{'type':_0x5194('0x6b'),'dialActive':!![],'dialMethod':_0x5194('0x81')},'attributes':['id'],'raw':!![]})['then'](function(_0x1f7313){if(_0x1f7313&&_0x1f7313[_0x5194('0x38')]){return db[_0x5194('0x22')][_0x5194('0x16')]({'where':{'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0x5194('0x5d')](_0x5194('0x5e'))},'VoiceQueueId':{'$in':_[_0x5194('0x21')](_0x1f7313,'id')},'$or':[{'UserId':null},{'UserId':_0x285b45[_0x5194('0x5b')]['id']}]}});}return 0x0;})[_0x5194('0x43')](function(_0x55de88){if(!_['isNil'](_0x55de88)&&_['isNumber'](_0x55de88)){return _0x1069b7[_0x5194('0x14')](0xc8)[_0x5194('0x15')]({'contacts':_0x55de88});}else{logger[_0x5194('0x1d')](_0x5194('0x82'),_0x5194('0x83'),0x194,_0x5194('0x84'));_0x1069b7[_0x5194('0x12')](0x194);}})['catch'](handleError(_0x1069b7,null));};