0792591e9610b4afff37ba0a4b5e96595008f381
[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 _0xda21=['calleridname','CmHopperFinal','getPreview','getVoiceQueues','outbound','preview','dialOrderByScheduledAt','sequelize','transaction','direction','prev','hopperIds','priority','ASC','DESC','literal','COALESCE(CmHopper.UserId,\x200)\x20ASC','isEmpty','scheduledAt','findOne','UPDATE','Contact','CmCompany','Company','CmList','List','Queue','dialActive','getOpenContacts','isNumber','entity\x20not\x20found','html-pdf','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','util','path','to-csv','ejs','lodash','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','end','status','json','count','offset','limit','Content-Range','apply','reject','save','update','then','destroy','sendStatus','error','name','send','index','map','rawAttributes','fieldName','key','model','query','filters','concat','$and','$or','$gt','$gte','$lt','$lte','$eq','$not','$between','$notBetween','$notIn','$like','$notILike','$contains','$any','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','include','CmHopper','findAll','rows','catch','params','keys','includeAll','find','create','body','describe','VoiceQueueId','CampaignId','VoiceQueue','Campaign','omit','dataValues','createdAt','updatedAt','statedesc','deleted','membername','user','UserId','deletedat','format','YYYY-MM-DD\x20HH:mm:ss','calleridnum','phone','campaigntype','queue','ivr','CmContact','ContactId','firstName','lastName','isNil'];(function(_0x54b617,_0x41a196){var _0x294435=function(_0x1213bf){while(--_0x1213bf){_0x54b617['push'](_0x54b617['shift']());}};_0x294435(++_0x41a196);}(_0xda21,0x141));var _0x1da2=function(_0x10814f,_0x43bfc0){_0x10814f=_0x10814f-0x0;var _0x47e19a=_0xda21[_0x10814f];return _0x47e19a;};'use strict';var pdf=require(_0x1da2('0x0'));var emlformat=require(_0x1da2('0x1'));var rimraf=require(_0x1da2('0x2'));var zipdir=require(_0x1da2('0x3'));var jsonpatch=require(_0x1da2('0x4'));var rp=require(_0x1da2('0x5'));var moment=require(_0x1da2('0x6'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x1da2('0x7'));var path=require(_0x1da2('0x8'));var sox=require('sox');var csv=require(_0x1da2('0x9'));var ejs=require(_0x1da2('0xa'));var fs=require('fs');var _=require(_0x1da2('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x1da2('0xc'));var toCsv=require(_0x1da2('0x9'));var querystring=require('querystring');var Papa=require(_0x1da2('0xd'));var Redis=require('ioredis');var authService=require(_0x1da2('0xe'));var qs=require(_0x1da2('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x1da2('0x10'));var logger=require(_0x1da2('0x11'))('api');var utils=require(_0x1da2('0x12'));var config=require(_0x1da2('0x13'));var db=require(_0x1da2('0x14'))['db'];function respondWithStatusCode(_0x5dac5f,_0xa4e361){_0xa4e361=_0xa4e361||0xcc;return function(_0x453afd){if(_0x453afd){return _0x5dac5f['sendStatus'](_0xa4e361);}return _0x5dac5f['status'](_0xa4e361)[_0x1da2('0x15')]();};}function respondWithResult(_0x3058fa,_0x3fe990){_0x3fe990=_0x3fe990||0xc8;return function(_0x1d74e3){if(_0x1d74e3){return _0x3058fa[_0x1da2('0x16')](_0x3fe990)[_0x1da2('0x17')](_0x1d74e3);}};}function respondWithFilteredResult(_0x138962,_0x15fb7){return function(_0x40ba13){if(_0x40ba13){var _0x4d534d=_0x40ba13[_0x1da2('0x18')],_0x594ffb=_0x15fb7[_0x1da2('0x19')],_0x3ff197=_0x15fb7[_0x1da2('0x19')]+_0x15fb7[_0x1da2('0x1a')],_0x518d77;if(_0x3ff197>=_0x4d534d){_0x3ff197=_0x4d534d;_0x518d77=0xc8;}else{_0x518d77=0xce;}_0x138962[_0x1da2('0x16')](_0x518d77);return _0x138962['set'](_0x1da2('0x1b'),_0x594ffb+'-'+_0x3ff197+'/'+_0x4d534d)[_0x1da2('0x17')](_0x40ba13);}return null;};}function patchUpdates(_0x30d154){return function(_0x250bc8){try{jsonpatch[_0x1da2('0x1c')](_0x250bc8,_0x30d154,!![]);}catch(_0x63b41e){return BPromise[_0x1da2('0x1d')](_0x63b41e);}return _0x250bc8[_0x1da2('0x1e')]();};}function saveUpdates(_0x31f5da,_0x4c2fc1){return function(_0x4141bb){if(_0x4141bb){return _0x4141bb[_0x1da2('0x1f')](_0x31f5da)[_0x1da2('0x20')](function(_0x379673){return _0x379673;});}return null;};}function removeEntity(_0x251f34,_0x37b1ea){return function(_0x3083db){if(_0x3083db){return _0x3083db[_0x1da2('0x21')]()[_0x1da2('0x20')](function(){_0x251f34[_0x1da2('0x16')](0xcc)[_0x1da2('0x15')]();});}};}function handleEntityNotFound(_0xbf3c4a,_0x2984fc){return function(_0x341220){if(!_0x341220){_0xbf3c4a[_0x1da2('0x22')](0x194);}return _0x341220;};}function handleError(_0x5b9fe6,_0x4105d3){_0x4105d3=_0x4105d3||0x1f4;return function(_0x1d9236){logger[_0x1da2('0x23')](_0x1d9236['stack']);if(_0x1d9236[_0x1da2('0x24')]){delete _0x1d9236[_0x1da2('0x24')];}_0x5b9fe6[_0x1da2('0x16')](_0x4105d3)[_0x1da2('0x25')](_0x1d9236);};}exports[_0x1da2('0x26')]=function(_0x250eba,_0xe00933){var _0xe6896d={},_0x235f5e={},_0xcb5e0d={'count':0x0,'rows':[]};var _0x2408a8=_[_0x1da2('0x27')](db['CmHopper'][_0x1da2('0x28')],function(_0x4fa4c0){return{'name':_0x4fa4c0[_0x1da2('0x29')],'type':_0x4fa4c0['type'][_0x1da2('0x2a')]};});_0x235f5e[_0x1da2('0x2b')]=_[_0x1da2('0x27')](_0x2408a8,_0x1da2('0x24'));_0x235f5e[_0x1da2('0x2c')]=_['keys'](_0x250eba['query']);_0x235f5e['filters']=_['intersection'](_0x235f5e['model'],_0x235f5e[_0x1da2('0x2c')]);_0x235f5e[_0x1da2('0x2d')]=_[_0x1da2('0x2e')](_0x235f5e['filters'],[_0x1da2('0x2f'),_0x1da2('0x30'),_0x1da2('0x31'),_0x1da2('0x32'),_0x1da2('0x33'),_0x1da2('0x34'),'$ne',_0x1da2('0x35'),_0x1da2('0x36'),_0x1da2('0x37'),_0x1da2('0x38'),'$in',_0x1da2('0x39'),_0x1da2('0x3a'),'$notLike','$iLike',_0x1da2('0x3b'),'$like','$overlap',_0x1da2('0x3c'),'$contained',_0x1da2('0x3d')]);_0xe6896d['attributes']=_[_0x1da2('0x3e')](_0x235f5e['model'],qs[_0x1da2('0x3f')](_0x250eba[_0x1da2('0x2c')][_0x1da2('0x3f')]));_0xe6896d[_0x1da2('0x40')]=_0xe6896d[_0x1da2('0x40')][_0x1da2('0x41')]?_0xe6896d[_0x1da2('0x40')]:_0x235f5e[_0x1da2('0x2b')];if(!_0x250eba['query'][_0x1da2('0x42')](_0x1da2('0x43'))){_0xe6896d['limit']=qs[_0x1da2('0x1a')](_0x250eba[_0x1da2('0x2c')]['limit']);_0xe6896d[_0x1da2('0x19')]=qs[_0x1da2('0x19')](_0x250eba[_0x1da2('0x2c')]['offset']);}_0xe6896d[_0x1da2('0x44')]=qs[_0x1da2('0x45')](_0x250eba[_0x1da2('0x2c')][_0x1da2('0x45')]);_0xe6896d[_0x1da2('0x46')]=qs['filters'](_[_0x1da2('0x47')](_0x250eba[_0x1da2('0x2c')],_0x235f5e[_0x1da2('0x2d')]),_0x2408a8);if(_0x250eba[_0x1da2('0x2c')][_0x1da2('0x48')]){_0xe6896d[_0x1da2('0x46')]=_[_0x1da2('0x49')](_0xe6896d[_0x1da2('0x46')],{'$or':_[_0x1da2('0x27')](_0x2408a8,function(_0x1cea16){if(_0x1cea16['type']!==_0x1da2('0x4a')){var _0x46b1b3={};_0x46b1b3[_0x1cea16[_0x1da2('0x24')]]={'$like':'%'+_0x250eba[_0x1da2('0x2c')][_0x1da2('0x48')]+'%'};return _0x46b1b3;}})});}_0xe6896d=_[_0x1da2('0x49')]({},_0xe6896d,_0x250eba[_0x1da2('0x4b')]);var _0x1124c9={'where':_0xe6896d[_0x1da2('0x46')]};return db['CmHopper'][_0x1da2('0x18')](_0x1124c9)[_0x1da2('0x20')](function(_0xf3f127){_0xcb5e0d[_0x1da2('0x18')]=_0xf3f127;if(_0x250eba[_0x1da2('0x2c')]['includeAll']){_0xe6896d[_0x1da2('0x4c')]=[{'all':!![]}];}return db[_0x1da2('0x4d')][_0x1da2('0x4e')](_0xe6896d);})['then'](function(_0x5be36e){_0xcb5e0d[_0x1da2('0x4f')]=_0x5be36e;return _0xcb5e0d;})[_0x1da2('0x20')](respondWithFilteredResult(_0xe00933,_0xe6896d))[_0x1da2('0x50')](handleError(_0xe00933,null));};exports['show']=function(_0x1b5006,_0x1be812){var _0x32e6f1={'raw':!![],'where':{'id':_0x1b5006[_0x1da2('0x51')]['id']}},_0xfbf33c={};_0xfbf33c[_0x1da2('0x2b')]=_[_0x1da2('0x52')](db['CmHopper'][_0x1da2('0x28')]);_0xfbf33c[_0x1da2('0x2c')]=_['keys'](_0x1b5006[_0x1da2('0x2c')]);_0xfbf33c[_0x1da2('0x2d')]=_[_0x1da2('0x3e')](_0xfbf33c[_0x1da2('0x2b')],_0xfbf33c[_0x1da2('0x2c')]);_0x32e6f1['attributes']=_[_0x1da2('0x3e')](_0xfbf33c['model'],qs[_0x1da2('0x3f')](_0x1b5006[_0x1da2('0x2c')]['fields']));_0x32e6f1[_0x1da2('0x40')]=_0x32e6f1[_0x1da2('0x40')][_0x1da2('0x41')]?_0x32e6f1['attributes']:_0xfbf33c['model'];if(_0x1b5006[_0x1da2('0x2c')][_0x1da2('0x53')]){_0x32e6f1[_0x1da2('0x4c')]=[{'all':!![]}];}_0x32e6f1=_[_0x1da2('0x49')]({},_0x32e6f1,_0x1b5006['options']);return db[_0x1da2('0x4d')][_0x1da2('0x54')](_0x32e6f1)['then'](handleEntityNotFound(_0x1be812,null))[_0x1da2('0x20')](respondWithResult(_0x1be812,null))[_0x1da2('0x50')](handleError(_0x1be812,null));};exports[_0x1da2('0x55')]=function(_0x4e71f6,_0x5bc29a){return db[_0x1da2('0x4d')][_0x1da2('0x55')](_0x4e71f6['body'],{})['then'](respondWithResult(_0x5bc29a,0xc9))['catch'](handleError(_0x5bc29a,null));};exports[_0x1da2('0x1f')]=function(_0x88a5a3,_0x40cc78){if(_0x88a5a3[_0x1da2('0x56')]['id']){delete _0x88a5a3[_0x1da2('0x56')]['id'];}return db[_0x1da2('0x4d')][_0x1da2('0x54')]({'where':{'id':_0x88a5a3[_0x1da2('0x51')]['id']}})['then'](handleEntityNotFound(_0x40cc78,null))[_0x1da2('0x20')](saveUpdates(_0x88a5a3[_0x1da2('0x56')],null))['then'](respondWithResult(_0x40cc78,null))['catch'](handleError(_0x40cc78,null));};exports[_0x1da2('0x57')]=function(_0x247ee6,_0x4b1a0d){return db[_0x1da2('0x4d')][_0x1da2('0x57')]()[_0x1da2('0x20')](respondWithResult(_0x4b1a0d,null))[_0x1da2('0x50')](handleError(_0x4b1a0d,null));};exports['destroy']=function(_0x33ddb8,_0x4a8977){var _0x3411e2;return db[_0x1da2('0x4d')][_0x1da2('0x54')]({'where':{'id':_0x33ddb8[_0x1da2('0x51')]['id']}})[_0x1da2('0x20')](handleEntityNotFound(_0x4a8977,null))[_0x1da2('0x20')](function(_0x5ec86a){if(_0x5ec86a){return _0x5ec86a[_0x1da2('0x21')]()[_0x1da2('0x20')](function(_0x4eed28){return _0x4eed28;});}})[_0x1da2('0x20')](function(_0x41fc4a){_0x3411e2=_0x41fc4a;if(_0x41fc4a){if(_0x41fc4a[_0x1da2('0x58')]||_0x41fc4a[_0x1da2('0x59')]){return db[_0x41fc4a[_0x1da2('0x58')]?_0x1da2('0x5a'):_0x1da2('0x5b')]['find']({'where':{'id':_0x41fc4a[_0x1da2('0x58')]?_0x41fc4a[_0x1da2('0x58')]:_0x41fc4a[_0x1da2('0x59')]},'attributes':['id',_0x1da2('0x24')],'raw':!![]});}}})['then'](function(_0x2db1cf){var _0x398e51={};if(_0x2db1cf){_['merge'](_0x398e51,_[_0x1da2('0x5c')](_0x3411e2[_0x1da2('0x5d')],[_0x1da2('0x5e'),_0x1da2('0x5f'),'id']));_0x398e51['state']=0x15;_0x398e51[_0x1da2('0x60')]=_0x1da2('0x61');_0x398e51['campaign']=_0x2db1cf['name'];_0x398e51[_0x1da2('0x62')]=_0x33ddb8[_0x1da2('0x63')][_0x1da2('0x24')];_0x398e51[_0x1da2('0x64')]=_0x33ddb8['user']['id'];_0x398e51[_0x1da2('0x61')]=!![];_0x398e51[_0x1da2('0x65')]=moment()[_0x1da2('0x66')](_0x1da2('0x67'));_0x398e51[_0x1da2('0x68')]=_0x3411e2[_0x1da2('0x69')];_0x398e51[_0x1da2('0x6a')]=_0x3411e2['VoiceQueueId']?_0x1da2('0x6b'):_0x1da2('0x6c');return db[_0x1da2('0x6d')]['find']({'where':{'id':_0x398e51[_0x1da2('0x6e')]},'attributes':[_0x1da2('0x6f'),_0x1da2('0x70')]})[_0x1da2('0x20')](function(_0x333538){if(!_[_0x1da2('0x71')](_0x4a8977)&&!_['isNil'](_0x333538[_0x1da2('0x6f')])){_0x398e51[_0x1da2('0x72')]=_0x333538[_0x1da2('0x6f')];if(!_['isNil'](_0x333538[_0x1da2('0x70')])){_0x398e51[_0x1da2('0x72')]+='\x20'+_0x333538['lastName'];}}})['finally'](function(){return db[_0x1da2('0x73')][_0x1da2('0x55')](_0x398e51);});}})[_0x1da2('0x20')](function(){return _0x4a8977[_0x1da2('0x16')](0xcc)[_0x1da2('0x15')]();})[_0x1da2('0x50')](handleError(_0x4a8977,null));};exports[_0x1da2('0x74')]=function(_0x4e83a5,_0x12e4bf,_0x37153a){var _0x194898=[];return db[_0x1da2('0x6d')][_0x1da2('0x57')]()['then'](function(_0x10aa69){_0x194898=_[_0x1da2('0x52')](_0x10aa69);return _0x4e83a5['user'][_0x1da2('0x75')]({'where':{'type':_0x1da2('0x76'),'dialActive':!![],'dialMethod':_0x1da2('0x77')},'attributes':['id',_0x1da2('0x78')],'raw':!![]});})[_0x1da2('0x20')](function(_0x16748e){if(_0x16748e&&_0x16748e[_0x1da2('0x41')]){return db[_0x1da2('0x79')][_0x1da2('0x7a')](function(_0xda6584){var _0x249e95={'active':![],'recallme':![],'scheduledAt':{'$lte':moment()['format'](_0x1da2('0x67'))},'VoiceQueueId':{'$in':_[_0x1da2('0x27')](_0x16748e,'id')},'$or':[{'UserId':null},{'UserId':_0x4e83a5[_0x1da2('0x63')]['id']}]};var _0x45ca09=[];if(_0x4e83a5['body']['direction']&&_0x4e83a5[_0x1da2('0x56')][_0x1da2('0x7b')]===_0x1da2('0x7c')){if(!_['isEmpty'](_0x4e83a5[_0x1da2('0x56')]['hopperIds'])){_0x249e95['id']={'$in':_0x4e83a5['body'][_0x1da2('0x7d')]};}_0x45ca09=[[_0x1da2('0x7e'),_0x1da2('0x7f')],['scheduledAt',_0x16748e[0x0][_0x1da2('0x78')]===_0x1da2('0x7f')?_0x1da2('0x80'):_0x1da2('0x7f')],db[_0x1da2('0x79')][_0x1da2('0x81')](_0x1da2('0x82')),['id',_0x1da2('0x80')]];}else{if(!_[_0x1da2('0x83')](_0x4e83a5[_0x1da2('0x56')][_0x1da2('0x7d')])){_0x249e95['id']={'$notIn':_0x4e83a5[_0x1da2('0x56')][_0x1da2('0x7d')]};}_0x45ca09=[['priority','DESC'],[_0x1da2('0x84'),_0x16748e[0x0]['dialOrderByScheduledAt']],db[_0x1da2('0x79')][_0x1da2('0x81')]('COALESCE(CmHopper.UserId,\x200)\x20DESC'),['id','ASC']];}return db[_0x1da2('0x4d')][_0x1da2('0x85')]({'attributes':['id','scheduledat'],'where':_0x249e95,'order':_0x45ca09,'transaction':_0xda6584,'lock':_0xda6584['LOCK'][_0x1da2('0x86')],'include':[{'model':db[_0x1da2('0x6d')],'as':_0x1da2('0x87'),'attributes':_0x194898,'include':[{'model':db[_0x1da2('0x88')],'as':_0x1da2('0x89'),'attributes':['id','name']}]},{'model':db[_0x1da2('0x8a')],'as':_0x1da2('0x8b'),'attributes':['id',_0x1da2('0x24')]},{'model':db[_0x1da2('0x5a')],'as':_0x1da2('0x8c'),'attributes':['id',_0x1da2('0x24'),_0x1da2('0x8d')]}]})[_0x1da2('0x20')](function(_0x131ad1){if(_0x131ad1){return _0x131ad1[_0x1da2('0x1f')]({'UserId':_0x4e83a5[_0x1da2('0x63')]['id']},{'transaction':_0xda6584});}});});}})[_0x1da2('0x20')](handleEntityNotFound(_0x12e4bf,null))[_0x1da2('0x20')](respondWithResult(_0x12e4bf,null))[_0x1da2('0x50')](handleError(_0x12e4bf,null));};exports[_0x1da2('0x8e')]=function(_0x2f4db3,_0x369cf0,_0x68e29e){return _0x2f4db3[_0x1da2('0x63')][_0x1da2('0x75')]({'where':{'type':_0x1da2('0x76'),'dialActive':!![],'dialMethod':_0x1da2('0x77')},'attributes':['id'],'raw':!![]})[_0x1da2('0x20')](function(_0x1945db){if(_0x1945db&&_0x1945db['length']){return db[_0x1da2('0x4d')][_0x1da2('0x18')]({'where':{'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0x1da2('0x66')](_0x1da2('0x67'))},'VoiceQueueId':{'$in':_[_0x1da2('0x27')](_0x1945db,'id')},'$or':[{'UserId':null},{'UserId':_0x2f4db3[_0x1da2('0x63')]['id']}]}});}return 0x0;})[_0x1da2('0x20')](function(_0x2c9cc3){if(!_[_0x1da2('0x71')](_0x2c9cc3)&&_[_0x1da2('0x8f')](_0x2c9cc3)){return _0x369cf0[_0x1da2('0x16')](0xc8)['json']({'contacts':_0x2c9cc3});}else{logger[_0x1da2('0x23')]('CmHopper,\x20%s,\x20%s,\x20%s',_0x1da2('0x8e'),0x194,_0x1da2('0x90'));_0x369cf0[_0x1da2('0x22')](0x194);}})[_0x1da2('0x50')](handleError(_0x369cf0,null));};