Built motion from commit (unavailable).|2.4.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 _0x0c02=['fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../config/environment','../../mysqldb','sendStatus','status','json','count','offset','limit','apply','reject','save','update','then','destroy','end','error','name','send','index','rawAttributes','model','keys','query','filters','intersection','concat','$and','$or','$gt','$gte','$lt','$lte','$ne','$not','$between','$notBetween','$in','$like','$notLike','$iLike','$notILike','$contains','attributes','fields','nolimit','order','sort','pick','filter','where','merge','type','VIRTUAL','field','CmHopper','includeAll','include','findAll','rows','catch','params','length','options','create','body','describe','find','VoiceQueueId','CampaignId','Campaign','omit','dataValues','createdAt','state','statedesc','deleted','campaign','membername','user','deletedat','YYYY-MM-DD\x20HH:mm:ss','calleridnum','campaigntype','ContactId','firstName','lastName','isNil','calleridname','finally','CmHopperFinal','getPreview','CmContact','getVoiceQueues','outbound','sequelize','format','map','direction','hopperIds','ASC','scheduledAt','dialOrderByScheduledAt','literal','COALESCE(CmHopper.UserId,\x200)\x20ASC','DESC','LOCK','Contact','CmCompany','Company','CmList','List','VoiceQueue','Queue','dialActive','getOpenContacts','preview','CmHopper,\x20%s,\x20%s,\x20%s','eml-format','rimraf'];(function(_0x1a842e,_0x432448){var _0x484d26=function(_0x281e4b){while(--_0x281e4b){_0x1a842e['push'](_0x1a842e['shift']());}};_0x484d26(++_0x432448);}(_0x0c02,0x84));var _0x20c0=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0c02[_0x3dd15e];return _0x231fd0;};'use strict';var pdf=require('html-pdf');var emlformat=require(_0x20c0('0x0'));var rimraf=require(_0x20c0('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x20c0('0x2'));var rp=require(_0x20c0('0x3'));var moment=require(_0x20c0('0x4'));var BPromise=require(_0x20c0('0x5'));var Mustache=require(_0x20c0('0x6'));var util=require(_0x20c0('0x7'));var path=require(_0x20c0('0x8'));var sox=require(_0x20c0('0x9'));var csv=require(_0x20c0('0xa'));var ejs=require(_0x20c0('0xb'));var fs=require('fs');var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x20c0('0xc'));var toCsv=require(_0x20c0('0xa'));var querystring=require(_0x20c0('0xd'));var Papa=require(_0x20c0('0xe'));var Redis=require(_0x20c0('0xf'));var authService=require(_0x20c0('0x10'));var qs=require('../../components/parsers/qs');var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require(_0x20c0('0x11'));var db=require(_0x20c0('0x12'))['db'];function respondWithStatusCode(_0x2ecab9,_0x207b1e){_0x207b1e=_0x207b1e||0xcc;return function(_0x4ed79e){if(_0x4ed79e){return _0x2ecab9[_0x20c0('0x13')](_0x207b1e);}return _0x2ecab9['status'](_0x207b1e)['end']();};}function respondWithResult(_0x34a930,_0xfc2d9c){_0xfc2d9c=_0xfc2d9c||0xc8;return function(_0x42161f){if(_0x42161f){return _0x34a930[_0x20c0('0x14')](_0xfc2d9c)[_0x20c0('0x15')](_0x42161f);}};}function respondWithFilteredResult(_0x1e6662,_0x42fa08){return function(_0x105839){if(_0x105839){var _0x280aff=_0x105839[_0x20c0('0x16')],_0x5a5e25=_0x42fa08[_0x20c0('0x17')],_0xd80b64=_0x42fa08[_0x20c0('0x17')]+_0x42fa08[_0x20c0('0x18')],_0xc78626;if(_0xd80b64>=_0x280aff){_0xd80b64=_0x280aff;_0xc78626=0xc8;}else{_0xc78626=0xce;}_0x1e6662['status'](_0xc78626);return _0x1e6662['set']('Content-Range',_0x5a5e25+'-'+_0xd80b64+'/'+_0x280aff)[_0x20c0('0x15')](_0x105839);}return null;};}function patchUpdates(_0x18904f){return function(_0x2abd80){try{jsonpatch[_0x20c0('0x19')](_0x2abd80,_0x18904f,!![]);}catch(_0x5b3725){return BPromise[_0x20c0('0x1a')](_0x5b3725);}return _0x2abd80[_0x20c0('0x1b')]();};}function saveUpdates(_0x4201f4,_0x5851eb){return function(_0x54bd1e){if(_0x54bd1e){return _0x54bd1e[_0x20c0('0x1c')](_0x4201f4)[_0x20c0('0x1d')](function(_0x1407d3){return _0x1407d3;});}return null;};}function removeEntity(_0x2315dc,_0x36ed49){return function(_0x53d8e8){if(_0x53d8e8){return _0x53d8e8[_0x20c0('0x1e')]()[_0x20c0('0x1d')](function(){_0x2315dc[_0x20c0('0x14')](0xcc)[_0x20c0('0x1f')]();});}};}function handleEntityNotFound(_0x52b8b8,_0xfea1eb){return function(_0x3e545c){if(!_0x3e545c){_0x52b8b8[_0x20c0('0x13')](0x194);}return _0x3e545c;};}function handleError(_0x114ff9,_0x44642a){_0x44642a=_0x44642a||0x1f4;return function(_0x41ab51){logger[_0x20c0('0x20')](_0x41ab51['stack']);if(_0x41ab51[_0x20c0('0x21')]){delete _0x41ab51[_0x20c0('0x21')];}_0x114ff9[_0x20c0('0x14')](_0x44642a)[_0x20c0('0x22')](_0x41ab51);};}exports[_0x20c0('0x23')]=function(_0x14dac3,_0x55684b){var _0x4e0cbb={},_0x3012d5={},_0x198bdd={'count':0x0,'rows':[]};var _0x1e3790=db['CmHopper'][_0x20c0('0x24')];_0x3012d5[_0x20c0('0x25')]=_[_0x20c0('0x26')](_0x1e3790);_0x3012d5[_0x20c0('0x27')]=_['keys'](_0x14dac3['query']);_0x3012d5[_0x20c0('0x28')]=_[_0x20c0('0x29')](_0x3012d5[_0x20c0('0x25')],_0x3012d5[_0x20c0('0x27')]);_0x3012d5[_0x20c0('0x28')]=_[_0x20c0('0x2a')](_0x3012d5[_0x20c0('0x28')],[_0x20c0('0x2b'),_0x20c0('0x2c'),_0x20c0('0x2d'),_0x20c0('0x2e'),_0x20c0('0x2f'),_0x20c0('0x30'),_0x20c0('0x31'),'$eq',_0x20c0('0x32'),_0x20c0('0x33'),_0x20c0('0x34'),_0x20c0('0x35'),'$notIn',_0x20c0('0x36'),_0x20c0('0x37'),_0x20c0('0x38'),_0x20c0('0x39'),_0x20c0('0x36'),'$overlap',_0x20c0('0x3a'),'$contained','$any']);_0x4e0cbb[_0x20c0('0x3b')]=_[_0x20c0('0x29')](_0x3012d5[_0x20c0('0x25')],qs[_0x20c0('0x3c')](_0x14dac3[_0x20c0('0x27')][_0x20c0('0x3c')]));_0x4e0cbb[_0x20c0('0x3b')]=_0x4e0cbb['attributes']['length']?_0x4e0cbb['attributes']:_0x3012d5[_0x20c0('0x25')];if(!_0x14dac3[_0x20c0('0x27')]['hasOwnProperty'](_0x20c0('0x3d'))){_0x4e0cbb[_0x20c0('0x18')]=qs['limit'](_0x14dac3['query'][_0x20c0('0x18')]);_0x4e0cbb[_0x20c0('0x17')]=qs['offset'](_0x14dac3[_0x20c0('0x27')]['offset']);}_0x4e0cbb[_0x20c0('0x3e')]=qs[_0x20c0('0x3f')](_0x14dac3[_0x20c0('0x27')][_0x20c0('0x3f')]);_0x4e0cbb['where']=qs[_0x20c0('0x28')](_[_0x20c0('0x40')](_0x14dac3[_0x20c0('0x27')],_0x3012d5[_0x20c0('0x28')]));if(_0x14dac3[_0x20c0('0x27')][_0x20c0('0x41')]){_0x4e0cbb[_0x20c0('0x42')]=_[_0x20c0('0x43')](_0x4e0cbb['where'],{'$or':_['map'](_0x1e3790,function(_0x581fe4){if(_0x581fe4[_0x20c0('0x44')]['key']!==_0x20c0('0x45')){var _0x460eeb={};_0x460eeb[_0x581fe4[_0x20c0('0x46')]]={'$like':'%'+_0x14dac3[_0x20c0('0x27')]['filter']+'%'};return _0x460eeb;}})});}_0x4e0cbb=_[_0x20c0('0x43')]({},_0x4e0cbb,_0x14dac3['options']);var _0x5f3f56={'where':_0x4e0cbb[_0x20c0('0x42')]};return db[_0x20c0('0x47')][_0x20c0('0x16')](_0x5f3f56)[_0x20c0('0x1d')](function(_0x5c06c4){_0x198bdd[_0x20c0('0x16')]=_0x5c06c4;if(_0x14dac3[_0x20c0('0x27')][_0x20c0('0x48')]){_0x4e0cbb[_0x20c0('0x49')]=[{'all':!![]}];}return db['CmHopper'][_0x20c0('0x4a')](_0x4e0cbb);})[_0x20c0('0x1d')](function(_0x5a924e){_0x198bdd[_0x20c0('0x4b')]=_0x5a924e;return _0x198bdd;})[_0x20c0('0x1d')](respondWithFilteredResult(_0x55684b,_0x4e0cbb))[_0x20c0('0x4c')](handleError(_0x55684b,null));};exports['show']=function(_0x399514,_0x58893f){var _0x5cd683={'raw':!![],'where':{'id':_0x399514[_0x20c0('0x4d')]['id']}},_0x49759b={};_0x49759b['model']=_[_0x20c0('0x26')](db[_0x20c0('0x47')][_0x20c0('0x24')]);_0x49759b[_0x20c0('0x27')]=_[_0x20c0('0x26')](_0x399514[_0x20c0('0x27')]);_0x49759b[_0x20c0('0x28')]=_['intersection'](_0x49759b[_0x20c0('0x25')],_0x49759b[_0x20c0('0x27')]);_0x5cd683[_0x20c0('0x3b')]=_[_0x20c0('0x29')](_0x49759b[_0x20c0('0x25')],qs[_0x20c0('0x3c')](_0x399514['query']['fields']));_0x5cd683[_0x20c0('0x3b')]=_0x5cd683[_0x20c0('0x3b')][_0x20c0('0x4e')]?_0x5cd683['attributes']:_0x49759b['model'];if(_0x399514[_0x20c0('0x27')][_0x20c0('0x48')]){_0x5cd683[_0x20c0('0x49')]=[{'all':!![]}];}_0x5cd683=_['merge']({},_0x5cd683,_0x399514[_0x20c0('0x4f')]);return db[_0x20c0('0x47')]['find'](_0x5cd683)['then'](handleEntityNotFound(_0x58893f,null))[_0x20c0('0x1d')](respondWithResult(_0x58893f,null))['catch'](handleError(_0x58893f,null));};exports[_0x20c0('0x50')]=function(_0x4d0230,_0x1b25d6){return db[_0x20c0('0x47')]['create'](_0x4d0230['body'],{})[_0x20c0('0x1d')](respondWithResult(_0x1b25d6,0xc9))[_0x20c0('0x4c')](handleError(_0x1b25d6,null));};exports[_0x20c0('0x1c')]=function(_0x317a0b,_0x35cc23){if(_0x317a0b[_0x20c0('0x51')]['id']){delete _0x317a0b[_0x20c0('0x51')]['id'];}return db[_0x20c0('0x47')]['find']({'where':{'id':_0x317a0b[_0x20c0('0x4d')]['id']}})[_0x20c0('0x1d')](handleEntityNotFound(_0x35cc23,null))[_0x20c0('0x1d')](saveUpdates(_0x317a0b[_0x20c0('0x51')],null))[_0x20c0('0x1d')](respondWithResult(_0x35cc23,null))['catch'](handleError(_0x35cc23,null));};exports['describe']=function(_0x3cff12,_0xc88aa6){return db[_0x20c0('0x47')][_0x20c0('0x52')]()[_0x20c0('0x1d')](respondWithResult(_0xc88aa6,null))[_0x20c0('0x4c')](handleError(_0xc88aa6,null));};exports[_0x20c0('0x1e')]=function(_0x4ef37b,_0x5d8dd1){var _0x427ab5;return db[_0x20c0('0x47')][_0x20c0('0x53')]({'where':{'id':_0x4ef37b['params']['id']}})[_0x20c0('0x1d')](handleEntityNotFound(_0x5d8dd1,null))['then'](function(_0x139cb0){if(_0x139cb0){return _0x139cb0[_0x20c0('0x1e')]()[_0x20c0('0x1d')](function(_0x52e874){return _0x52e874;});}})[_0x20c0('0x1d')](function(_0x28bc98){_0x427ab5=_0x28bc98;if(_0x28bc98){if(_0x28bc98[_0x20c0('0x54')]||_0x28bc98[_0x20c0('0x55')]){return db[_0x28bc98[_0x20c0('0x54')]?'VoiceQueue':_0x20c0('0x56')][_0x20c0('0x53')]({'where':{'id':_0x28bc98[_0x20c0('0x54')]?_0x28bc98[_0x20c0('0x54')]:_0x28bc98['CampaignId']},'attributes':['id',_0x20c0('0x21')],'raw':!![]});}}})['then'](function(_0x36545c){var _0x5d40c9={};if(_0x36545c){_[_0x20c0('0x43')](_0x5d40c9,_[_0x20c0('0x57')](_0x427ab5[_0x20c0('0x58')],[_0x20c0('0x59'),'updatedAt','id']));_0x5d40c9[_0x20c0('0x5a')]=0x15;_0x5d40c9[_0x20c0('0x5b')]=_0x20c0('0x5c');_0x5d40c9[_0x20c0('0x5d')]=_0x36545c[_0x20c0('0x21')];_0x5d40c9[_0x20c0('0x5e')]=_0x4ef37b[_0x20c0('0x5f')][_0x20c0('0x21')];_0x5d40c9['UserId']=_0x4ef37b[_0x20c0('0x5f')]['id'];_0x5d40c9[_0x20c0('0x5c')]=!![];_0x5d40c9[_0x20c0('0x60')]=moment()['format'](_0x20c0('0x61'));_0x5d40c9[_0x20c0('0x62')]=_0x427ab5['phone'];_0x5d40c9[_0x20c0('0x63')]=_0x427ab5['VoiceQueueId']?'queue':'ivr';return db['CmContact'][_0x20c0('0x53')]({'where':{'id':_0x5d40c9[_0x20c0('0x64')]},'attributes':[_0x20c0('0x65'),_0x20c0('0x66')]})[_0x20c0('0x1d')](function(_0xc34e9f){if(!_[_0x20c0('0x67')](_0x5d8dd1)&&!_[_0x20c0('0x67')](_0xc34e9f[_0x20c0('0x65')])){_0x5d40c9['calleridname']=_0xc34e9f[_0x20c0('0x65')];if(!_[_0x20c0('0x67')](_0xc34e9f[_0x20c0('0x66')])){_0x5d40c9[_0x20c0('0x68')]+='\x20'+_0xc34e9f[_0x20c0('0x66')];}}})[_0x20c0('0x69')](function(){return db[_0x20c0('0x6a')][_0x20c0('0x50')](_0x5d40c9);});}})[_0x20c0('0x1d')](function(){return _0x5d8dd1[_0x20c0('0x14')](0xcc)['end']();})[_0x20c0('0x4c')](handleError(_0x5d8dd1,null));};exports[_0x20c0('0x6b')]=function(_0x1ae801,_0x11511c,_0x5a1f33){var _0x488e79=[];return db[_0x20c0('0x6c')][_0x20c0('0x52')]()['then'](function(_0x2222eb){_0x488e79=_['keys'](_0x2222eb);return _0x1ae801[_0x20c0('0x5f')][_0x20c0('0x6d')]({'where':{'type':_0x20c0('0x6e'),'dialActive':!![],'dialMethod':'preview'},'attributes':['id','dialOrderByScheduledAt'],'raw':!![]});})[_0x20c0('0x1d')](function(_0x9965eb){if(_0x9965eb&&_0x9965eb[_0x20c0('0x4e')]){return db[_0x20c0('0x6f')]['transaction'](function(_0x526bdb){var _0x5aa681={'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0x20c0('0x70')](_0x20c0('0x61'))},'VoiceQueueId':{'$in':_[_0x20c0('0x71')](_0x9965eb,'id')},'$or':[{'UserId':null},{'UserId':_0x1ae801['user']['id']}]};var _0x47b241=[];if(_0x1ae801[_0x20c0('0x51')][_0x20c0('0x72')]&&_0x1ae801['body'][_0x20c0('0x72')]==='prev'){if(!_['isEmpty'](_0x1ae801['body'][_0x20c0('0x73')])){_0x5aa681['id']={'$in':_0x1ae801['body'][_0x20c0('0x73')]};}_0x47b241=[['priority',_0x20c0('0x74')],[_0x20c0('0x75'),_0x9965eb[0x0][_0x20c0('0x76')]==='ASC'?'DESC':_0x20c0('0x74')],db[_0x20c0('0x6f')][_0x20c0('0x77')](_0x20c0('0x78')),['id','DESC']];}else{if(!_['isEmpty'](_0x1ae801[_0x20c0('0x51')][_0x20c0('0x73')])){_0x5aa681['id']={'$notIn':_0x1ae801[_0x20c0('0x51')][_0x20c0('0x73')]};}_0x47b241=[['priority',_0x20c0('0x79')],[_0x20c0('0x75'),_0x9965eb[0x0][_0x20c0('0x76')]],db['sequelize']['literal']('COALESCE(CmHopper.UserId,\x200)\x20DESC'),['id',_0x20c0('0x74')]];}return db[_0x20c0('0x47')]['findOne']({'attributes':['id','scheduledat'],'where':_0x5aa681,'order':_0x47b241,'transaction':_0x526bdb,'lock':_0x526bdb[_0x20c0('0x7a')]['UPDATE'],'include':[{'model':db['CmContact'],'as':_0x20c0('0x7b'),'attributes':_0x488e79,'include':[{'model':db[_0x20c0('0x7c')],'as':_0x20c0('0x7d'),'attributes':['id',_0x20c0('0x21')]}]},{'model':db[_0x20c0('0x7e')],'as':_0x20c0('0x7f'),'attributes':['id',_0x20c0('0x21')]},{'model':db[_0x20c0('0x80')],'as':_0x20c0('0x81'),'attributes':['id',_0x20c0('0x21'),_0x20c0('0x82')]}]})['then'](function(_0x18aac4){if(_0x18aac4){return _0x18aac4[_0x20c0('0x1c')]({'UserId':_0x1ae801[_0x20c0('0x5f')]['id']},{'transaction':_0x526bdb});}});});}})[_0x20c0('0x1d')](handleEntityNotFound(_0x11511c,null))['then'](respondWithResult(_0x11511c,null))[_0x20c0('0x4c')](handleError(_0x11511c,null));};exports[_0x20c0('0x83')]=function(_0x1f64bc,_0x37a649,_0x1761bd){return _0x1f64bc[_0x20c0('0x5f')][_0x20c0('0x6d')]({'where':{'type':_0x20c0('0x6e'),'dialActive':!![],'dialMethod':_0x20c0('0x84')},'attributes':['id'],'raw':!![]})[_0x20c0('0x1d')](function(_0x27fe98){if(_0x27fe98&&_0x27fe98[_0x20c0('0x4e')]){return db[_0x20c0('0x47')][_0x20c0('0x16')]({'where':{'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0x20c0('0x70')](_0x20c0('0x61'))},'VoiceQueueId':{'$in':_[_0x20c0('0x71')](_0x27fe98,'id')},'$or':[{'UserId':null},{'UserId':_0x1f64bc[_0x20c0('0x5f')]['id']}]}});}return 0x0;})[_0x20c0('0x1d')](function(_0x934e07){if(!_[_0x20c0('0x67')](_0x934e07)&&_['isNumber'](_0x934e07)){return _0x37a649['status'](0xc8)[_0x20c0('0x15')]({'contacts':_0x934e07});}else{logger[_0x20c0('0x20')](_0x20c0('0x85'),_0x20c0('0x83'),0x194,'entity\x20not\x20found');_0x37a649[_0x20c0('0x13')](0x194);}})[_0x20c0('0x4c')](handleError(_0x37a649,null));};