Built motion from commit (unavailable).|2.3.94
[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 _0xf820=['fast-json-patch','bluebird','mustache','util','path','sox','to-csv','lodash','jsforce','querystring','papaparse','../../components/auth/service','../../config/license/hardware','../../components/parsers/qs','../../config/logger','../../config/utils','status','end','json','count','offset','set','apply','reject','save','then','sendStatus','stack','name','send','index','CmHopper','rawAttributes','model','keys','query','filters','intersection','$and','$or','$gte','$lt','$eq','$not','$between','$notBetween','$in','$notIn','$notLike','$iLike','$notILike','$like','$overlap','$contains','$contained','$any','attributes','fields','hasOwnProperty','nolimit','limit','sort','where','merge','map','key','VIRTUAL','filter','options','includeAll','include','findAll','catch','params','length','find','create','body','describe','destroy','CampaignId','VoiceQueueId','VoiceQueue','Campaign','dataValues','createdAt','updatedAt','state','statedesc','deleted','campaign','membername','user','UserId','deletedat','calleridnum','phone','queue','CmContact','lastName','isNil','firstName','calleridname','finally','CmHopperFinal','getPreview','getVoiceQueues','outbound','dialOrderByScheduledAt','transaction','format','YYYY-MM-DD\x20HH:mm:ss','direction','prev','isEmpty','hopperIds','priority','ASC','sequelize','literal','DESC','scheduledAt','COALESCE(CmHopper.UserId,\x200)\x20DESC','findOne','scheduledat','LOCK','Company','List','Queue','dialActive','update','getOpenContacts','preview','isNumber','error','CmHopper,\x20%s,\x20%s,\x20%s','entity\x20not\x20found','html-pdf','eml-format','zip-dir'];(function(_0x38d977,_0x42be1d){var _0x355379=function(_0x3ad70a){while(--_0x3ad70a){_0x38d977['push'](_0x38d977['shift']());}};_0x355379(++_0x42be1d);}(_0xf820,0x1a1));var _0x0f82=function(_0x3226c4,_0x3e50ad){_0x3226c4=_0x3226c4-0x0;var _0x294d8c=_0xf820[_0x3226c4];return _0x294d8c;};'use strict';var pdf=require(_0x0f82('0x0'));var emlformat=require(_0x0f82('0x1'));var rimraf=require('rimraf');var zipdir=require(_0x0f82('0x2'));var jsonpatch=require(_0x0f82('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x0f82('0x4'));var Mustache=require(_0x0f82('0x5'));var util=require(_0x0f82('0x6'));var path=require(_0x0f82('0x7'));var sox=require(_0x0f82('0x8'));var csv=require(_0x0f82('0x9'));var ejs=require('ejs');var fs=require('fs');var _=require(_0x0f82('0xa'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x0f82('0xb'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x0f82('0xc'));var Papa=require(_0x0f82('0xd'));var authService=require(_0x0f82('0xe'));var hardwareService=require(_0x0f82('0xf'));var Redis=require('ioredis');var qs=require(_0x0f82('0x10'));var logger=require(_0x0f82('0x11'))('api');var utils=require(_0x0f82('0x12'));var config=require('../../config/environment');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x56d892,_0x196de9){_0x196de9=_0x196de9||0xcc;return function(_0xdbfdb7){if(_0xdbfdb7){return _0x56d892['sendStatus'](_0x196de9);}return _0x56d892[_0x0f82('0x13')](_0x196de9)[_0x0f82('0x14')]();};}function respondWithResult(_0x28c85c,_0x12a3c5){_0x12a3c5=_0x12a3c5||0xc8;return function(_0x135f28){if(_0x135f28){return _0x28c85c['status'](_0x12a3c5)[_0x0f82('0x15')](_0x135f28);}};}function respondWithFilteredResult(_0x3605db,_0x20de9d){return function(_0x1865fa){if(_0x1865fa){var _0x1282b9=_0x1865fa[_0x0f82('0x16')],_0x5141e5=_0x20de9d[_0x0f82('0x17')],_0x14ade5=_0x20de9d[_0x0f82('0x17')]+_0x20de9d['limit'],_0x1bb135;if(_0x14ade5>=_0x1282b9){_0x14ade5=_0x1282b9;_0x1bb135=0xc8;}else{_0x1bb135=0xce;}_0x3605db[_0x0f82('0x13')](_0x1bb135);return _0x3605db[_0x0f82('0x18')]('Content-Range',_0x5141e5+'-'+_0x14ade5+'/'+_0x1282b9)[_0x0f82('0x15')](_0x1865fa);}return null;};}function patchUpdates(_0x252b9f){return function(_0x40d7fc){try{jsonpatch[_0x0f82('0x19')](_0x40d7fc,_0x252b9f,!![]);}catch(_0x4adc14){return BPromise[_0x0f82('0x1a')](_0x4adc14);}return _0x40d7fc[_0x0f82('0x1b')]();};}function saveUpdates(_0x485b6e,_0x7b4d07){return function(_0x26e9e7){if(_0x26e9e7){return _0x26e9e7['update'](_0x485b6e)['then'](function(_0x18b467){return _0x18b467;});}return null;};}function removeEntity(_0x41fabf,_0x3a8d6b){return function(_0x5a40bc){if(_0x5a40bc){return _0x5a40bc['destroy']()[_0x0f82('0x1c')](function(){_0x41fabf[_0x0f82('0x13')](0xcc)[_0x0f82('0x14')]();});}};}function handleEntityNotFound(_0x2eac7c,_0x330ff7){return function(_0x3d3425){if(!_0x3d3425){_0x2eac7c[_0x0f82('0x1d')](0x194);}return _0x3d3425;};}function handleError(_0x2f6708,_0x583f53){_0x583f53=_0x583f53||0x1f4;return function(_0x4a7812){logger['error'](_0x4a7812[_0x0f82('0x1e')]);if(_0x4a7812[_0x0f82('0x1f')]){delete _0x4a7812[_0x0f82('0x1f')];}_0x2f6708[_0x0f82('0x13')](_0x583f53)[_0x0f82('0x20')](_0x4a7812);};}exports[_0x0f82('0x21')]=function(_0x14a447,_0x2bbbbd){var _0x5f5680={},_0x207bfd={},_0x430a72={'count':0x0,'rows':[]};var _0x40da21=db[_0x0f82('0x22')][_0x0f82('0x23')];_0x207bfd[_0x0f82('0x24')]=_[_0x0f82('0x25')](_0x40da21);_0x207bfd['query']=_['keys'](_0x14a447[_0x0f82('0x26')]);_0x207bfd[_0x0f82('0x27')]=_[_0x0f82('0x28')](_0x207bfd['model'],_0x207bfd[_0x0f82('0x26')]);_0x207bfd[_0x0f82('0x27')]=_['concat'](_0x207bfd[_0x0f82('0x27')],[_0x0f82('0x29'),_0x0f82('0x2a'),'$gt',_0x0f82('0x2b'),_0x0f82('0x2c'),'$lte','$ne',_0x0f82('0x2d'),_0x0f82('0x2e'),_0x0f82('0x2f'),_0x0f82('0x30'),_0x0f82('0x31'),_0x0f82('0x32'),'$like',_0x0f82('0x33'),_0x0f82('0x34'),_0x0f82('0x35'),_0x0f82('0x36'),_0x0f82('0x37'),_0x0f82('0x38'),_0x0f82('0x39'),_0x0f82('0x3a')]);_0x5f5680[_0x0f82('0x3b')]=_['intersection'](_0x207bfd['model'],qs[_0x0f82('0x3c')](_0x14a447[_0x0f82('0x26')][_0x0f82('0x3c')]));_0x5f5680[_0x0f82('0x3b')]=_0x5f5680[_0x0f82('0x3b')]['length']?_0x5f5680['attributes']:_0x207bfd[_0x0f82('0x24')];if(!_0x14a447[_0x0f82('0x26')][_0x0f82('0x3d')](_0x0f82('0x3e'))){_0x5f5680[_0x0f82('0x3f')]=qs[_0x0f82('0x3f')](_0x14a447[_0x0f82('0x26')][_0x0f82('0x3f')]);_0x5f5680[_0x0f82('0x17')]=qs[_0x0f82('0x17')](_0x14a447[_0x0f82('0x26')][_0x0f82('0x17')]);}_0x5f5680['order']=qs[_0x0f82('0x40')](_0x14a447[_0x0f82('0x26')][_0x0f82('0x40')]);_0x5f5680[_0x0f82('0x41')]=qs[_0x0f82('0x27')](_['pick'](_0x14a447[_0x0f82('0x26')],_0x207bfd[_0x0f82('0x27')]));if(_0x14a447[_0x0f82('0x26')]['filter']){_0x5f5680['where']=_[_0x0f82('0x42')](_0x5f5680[_0x0f82('0x41')],{'$or':_[_0x0f82('0x43')](_0x40da21,function(_0x33dbd2){if(_0x33dbd2['type'][_0x0f82('0x44')]!==_0x0f82('0x45')){var _0x359b07={};_0x359b07[_0x33dbd2['field']]={'$like':'%'+_0x14a447[_0x0f82('0x26')][_0x0f82('0x46')]+'%'};return _0x359b07;}})});}_0x5f5680=_[_0x0f82('0x42')]({},_0x5f5680,_0x14a447[_0x0f82('0x47')]);var _0x2c9fa1={'where':_0x5f5680[_0x0f82('0x41')]};return db[_0x0f82('0x22')][_0x0f82('0x16')](_0x2c9fa1)['then'](function(_0x46b4f0){_0x430a72[_0x0f82('0x16')]=_0x46b4f0;if(_0x14a447['query'][_0x0f82('0x48')]){_0x5f5680[_0x0f82('0x49')]=[{'all':!![]}];}return db[_0x0f82('0x22')][_0x0f82('0x4a')](_0x5f5680);})[_0x0f82('0x1c')](function(_0x56f60e){_0x430a72['rows']=_0x56f60e;return _0x430a72;})[_0x0f82('0x1c')](respondWithFilteredResult(_0x2bbbbd,_0x5f5680))[_0x0f82('0x4b')](handleError(_0x2bbbbd,null));};exports['show']=function(_0xe9d25a,_0x513976){var _0x5dc198={'raw':!![],'where':{'id':_0xe9d25a[_0x0f82('0x4c')]['id']}},_0x5d79ba={};_0x5d79ba[_0x0f82('0x24')]=_['keys'](db['CmHopper'][_0x0f82('0x23')]);_0x5d79ba[_0x0f82('0x26')]=_[_0x0f82('0x25')](_0xe9d25a[_0x0f82('0x26')]);_0x5d79ba[_0x0f82('0x27')]=_['intersection'](_0x5d79ba[_0x0f82('0x24')],_0x5d79ba[_0x0f82('0x26')]);_0x5dc198[_0x0f82('0x3b')]=_[_0x0f82('0x28')](_0x5d79ba[_0x0f82('0x24')],qs[_0x0f82('0x3c')](_0xe9d25a[_0x0f82('0x26')][_0x0f82('0x3c')]));_0x5dc198[_0x0f82('0x3b')]=_0x5dc198[_0x0f82('0x3b')][_0x0f82('0x4d')]?_0x5dc198['attributes']:_0x5d79ba[_0x0f82('0x24')];if(_0xe9d25a['query']['includeAll']){_0x5dc198['include']=[{'all':!![]}];}_0x5dc198=_[_0x0f82('0x42')]({},_0x5dc198,_0xe9d25a[_0x0f82('0x47')]);return db[_0x0f82('0x22')][_0x0f82('0x4e')](_0x5dc198)[_0x0f82('0x1c')](handleEntityNotFound(_0x513976,null))[_0x0f82('0x1c')](respondWithResult(_0x513976,null))[_0x0f82('0x4b')](handleError(_0x513976,null));};exports[_0x0f82('0x4f')]=function(_0x149688,_0x5fb24f){return db[_0x0f82('0x22')][_0x0f82('0x4f')](_0x149688[_0x0f82('0x50')],{})[_0x0f82('0x1c')](respondWithResult(_0x5fb24f,0xc9))[_0x0f82('0x4b')](handleError(_0x5fb24f,null));};exports['update']=function(_0x4fc07d,_0x31134b){if(_0x4fc07d['body']['id']){delete _0x4fc07d[_0x0f82('0x50')]['id'];}return db[_0x0f82('0x22')][_0x0f82('0x4e')]({'where':{'id':_0x4fc07d[_0x0f82('0x4c')]['id']}})[_0x0f82('0x1c')](handleEntityNotFound(_0x31134b,null))[_0x0f82('0x1c')](saveUpdates(_0x4fc07d[_0x0f82('0x50')],null))['then'](respondWithResult(_0x31134b,null))['catch'](handleError(_0x31134b,null));};exports[_0x0f82('0x51')]=function(_0x20e3ff,_0x347a66){return db[_0x0f82('0x22')][_0x0f82('0x51')]()['then'](respondWithResult(_0x347a66,null))[_0x0f82('0x4b')](handleError(_0x347a66,null));};exports['destroy']=function(_0x1a90fd,_0x433510){var _0x43cbf9;return db[_0x0f82('0x22')][_0x0f82('0x4e')]({'where':{'id':_0x1a90fd[_0x0f82('0x4c')]['id']}})[_0x0f82('0x1c')](handleEntityNotFound(_0x433510,null))[_0x0f82('0x1c')](function(_0x1c4029){if(_0x1c4029){return _0x1c4029[_0x0f82('0x52')]()[_0x0f82('0x1c')](function(_0x3bf5d7){return _0x3bf5d7;});}})['then'](function(_0x4a2b61){_0x43cbf9=_0x4a2b61;if(_0x4a2b61){if(_0x4a2b61['VoiceQueueId']||_0x4a2b61[_0x0f82('0x53')]){return db[_0x4a2b61[_0x0f82('0x54')]?_0x0f82('0x55'):_0x0f82('0x56')][_0x0f82('0x4e')]({'where':{'id':_0x4a2b61['VoiceQueueId']?_0x4a2b61[_0x0f82('0x54')]:_0x4a2b61['CampaignId']},'attributes':['id','name'],'raw':!![]});}}})['then'](function(_0x4c2650){var _0x56cbfc={};if(_0x4c2650){_[_0x0f82('0x42')](_0x56cbfc,_['omit'](_0x43cbf9[_0x0f82('0x57')],[_0x0f82('0x58'),_0x0f82('0x59'),'id']));_0x56cbfc[_0x0f82('0x5a')]=0x15;_0x56cbfc[_0x0f82('0x5b')]=_0x0f82('0x5c');_0x56cbfc[_0x0f82('0x5d')]=_0x4c2650['name'];_0x56cbfc[_0x0f82('0x5e')]=_0x1a90fd[_0x0f82('0x5f')][_0x0f82('0x1f')];_0x56cbfc[_0x0f82('0x60')]=_0x1a90fd[_0x0f82('0x5f')]['id'];_0x56cbfc[_0x0f82('0x5c')]=!![];_0x56cbfc[_0x0f82('0x61')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');_0x56cbfc[_0x0f82('0x62')]=_0x43cbf9[_0x0f82('0x63')];_0x56cbfc['campaigntype']=_0x43cbf9[_0x0f82('0x54')]?_0x0f82('0x64'):'ivr';return db[_0x0f82('0x65')][_0x0f82('0x4e')]({'where':{'id':_0x56cbfc['ContactId']},'attributes':['firstName',_0x0f82('0x66')]})[_0x0f82('0x1c')](function(_0x4bfa4b){if(!_[_0x0f82('0x67')](_0x433510)&&!_[_0x0f82('0x67')](_0x4bfa4b[_0x0f82('0x68')])){_0x56cbfc[_0x0f82('0x69')]=_0x4bfa4b[_0x0f82('0x68')];if(!_[_0x0f82('0x67')](_0x4bfa4b['lastName'])){_0x56cbfc[_0x0f82('0x69')]+='\x20'+_0x4bfa4b['lastName'];}}})[_0x0f82('0x6a')](function(){return db[_0x0f82('0x6b')][_0x0f82('0x4f')](_0x56cbfc);});}})['then'](function(){return _0x433510['status'](0xcc)['end']();})[_0x0f82('0x4b')](handleError(_0x433510,null));};exports[_0x0f82('0x6c')]=function(_0x28a2d4,_0x55425b,_0x2c78b0){var _0x3b1467=[];return db[_0x0f82('0x65')][_0x0f82('0x51')]()['then'](function(_0x337e6e){_0x3b1467=_['keys'](_0x337e6e);return _0x28a2d4[_0x0f82('0x5f')][_0x0f82('0x6d')]({'where':{'type':_0x0f82('0x6e'),'dialActive':!![],'dialMethod':'preview'},'attributes':['id',_0x0f82('0x6f')],'raw':!![]});})['then'](function(_0x2ae755){if(_0x2ae755&&_0x2ae755['length']){return db['sequelize'][_0x0f82('0x70')](function(_0x337330){var _0x14ad67={'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0x0f82('0x71')](_0x0f82('0x72'))},'VoiceQueueId':{'$in':_['map'](_0x2ae755,'id')},'$or':[{'UserId':null},{'UserId':_0x28a2d4[_0x0f82('0x5f')]['id']}]};var _0x21f348=[];if(_0x28a2d4['body']['direction']&&_0x28a2d4[_0x0f82('0x50')][_0x0f82('0x73')]===_0x0f82('0x74')){if(!_[_0x0f82('0x75')](_0x28a2d4[_0x0f82('0x50')]['hopperIds'])){_0x14ad67['id']={'$in':_0x28a2d4[_0x0f82('0x50')][_0x0f82('0x76')]};}_0x21f348=[[_0x0f82('0x77'),_0x0f82('0x78')],['scheduledAt',_0x2ae755[0x0][_0x0f82('0x6f')]==='ASC'?'DESC':'ASC'],db[_0x0f82('0x79')][_0x0f82('0x7a')]('COALESCE(CmHopper.UserId,\x200)\x20ASC'),['id',_0x0f82('0x7b')]];}else{if(!_[_0x0f82('0x75')](_0x28a2d4[_0x0f82('0x50')][_0x0f82('0x76')])){_0x14ad67['id']={'$notIn':_0x28a2d4['body']['hopperIds']};}_0x21f348=[[_0x0f82('0x77'),_0x0f82('0x7b')],[_0x0f82('0x7c'),_0x2ae755[0x0][_0x0f82('0x6f')]],db[_0x0f82('0x79')][_0x0f82('0x7a')](_0x0f82('0x7d')),['id',_0x0f82('0x78')]];}return db[_0x0f82('0x22')][_0x0f82('0x7e')]({'attributes':['id',_0x0f82('0x7f')],'where':_0x14ad67,'order':_0x21f348,'transaction':_0x337330,'lock':_0x337330[_0x0f82('0x80')]['UPDATE'],'include':[{'model':db[_0x0f82('0x65')],'as':'Contact','attributes':_0x3b1467,'include':[{'model':db['CmCompany'],'as':_0x0f82('0x81'),'attributes':['id','name']}]},{'model':db['CmList'],'as':_0x0f82('0x82'),'attributes':['id','name']},{'model':db[_0x0f82('0x55')],'as':_0x0f82('0x83'),'attributes':['id','name',_0x0f82('0x84')]}]})[_0x0f82('0x1c')](function(_0x18bcf0){if(_0x18bcf0){return _0x18bcf0[_0x0f82('0x85')]({'UserId':_0x28a2d4[_0x0f82('0x5f')]['id']},{'transaction':_0x337330});}});});}})['then'](handleEntityNotFound(_0x55425b,null))['then'](respondWithResult(_0x55425b,null))['catch'](handleError(_0x55425b,null));};exports[_0x0f82('0x86')]=function(_0x218d70,_0x468b2f,_0x331656){return _0x218d70[_0x0f82('0x5f')][_0x0f82('0x6d')]({'where':{'type':_0x0f82('0x6e'),'dialActive':!![],'dialMethod':_0x0f82('0x87')},'attributes':['id'],'raw':!![]})['then'](function(_0x1fbcd0){if(_0x1fbcd0&&_0x1fbcd0[_0x0f82('0x4d')]){return db[_0x0f82('0x22')][_0x0f82('0x16')]({'where':{'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0x0f82('0x71')](_0x0f82('0x72'))},'VoiceQueueId':{'$in':_[_0x0f82('0x43')](_0x1fbcd0,'id')},'$or':[{'UserId':null},{'UserId':_0x218d70['user']['id']}]}});}return 0x0;})['then'](function(_0x255503){if(!_['isNil'](_0x255503)&&_[_0x0f82('0x88')](_0x255503)){return _0x468b2f[_0x0f82('0x13')](0xc8)[_0x0f82('0x15')]({'contacts':_0x255503});}else{logger[_0x0f82('0x89')](_0x0f82('0x8a'),_0x0f82('0x86'),0x194,_0x0f82('0x8b'));_0x468b2f[_0x0f82('0x1d')](0x194);}})[_0x0f82('0x4b')](handleError(_0x468b2f,null));};