Built motion from commit (unavailable).|2.5.14
[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 _0x065e=['crypto','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../mysqldb','sendStatus','status','end','json','count','offset','limit','set','Content-Range','apply','reject','save','update','then','destroy','stack','name','send','index','map','CmHopper','key','model','query','filters','intersection','$and','$gt','$lt','$ne','$eq','$not','$between','$in','$notIn','$like','$notLike','$iLike','$notILike','$overlap','$contains','$any','attributes','fields','hasOwnProperty','nolimit','order','sort','where','filter','merge','type','VIRTUAL','options','include','findAll','rows','catch','show','keys','rawAttributes','length','includeAll','find','create','body','params','describe','VoiceQueueId','VoiceQueue','Campaign','CampaignId','omit','dataValues','createdAt','deleted','campaign','membername','user','UserId','deletedat','format','phone','campaigntype','queue','ContactId','firstName','lastName','isNil','calleridname','finally','CmHopperFinal','CmContact','preview','dialOrderByScheduledAt','sequelize','transaction','YYYY-MM-DD\x20HH:mm:ss','direction','prev','isEmpty','hopperIds','priority','ASC','scheduledAt','DESC','literal','COALESCE(CmHopper.UserId,\x200)\x20ASC','COALESCE(CmHopper.UserId,\x200)\x20DESC','findOne','scheduledat','CmCompany','CmList','List','Queue','dialActive','getOpenContacts','getVoiceQueues','outbound','isNumber','error','CmHopper,\x20%s,\x20%s,\x20%s','entity\x20not\x20found','html-pdf','fast-json-patch','request-promise','moment','util','path','to-csv','ejs','lodash'];(function(_0x1220dc,_0x448145){var _0x264ada=function(_0x171972){while(--_0x171972){_0x1220dc['push'](_0x1220dc['shift']());}};_0x264ada(++_0x448145);}(_0x065e,0x1a7));var _0xe065=function(_0x6edc85,_0x2c7710){_0x6edc85=_0x6edc85-0x0;var _0x4631a9=_0x065e[_0x6edc85];return _0x4631a9;};'use strict';var pdf=require(_0xe065('0x0'));var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xe065('0x1'));var rp=require(_0xe065('0x2'));var moment=require(_0xe065('0x3'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xe065('0x4'));var path=require(_0xe065('0x5'));var sox=require('sox');var csv=require(_0xe065('0x6'));var ejs=require(_0xe065('0x7'));var fs=require('fs');var _=require(_0xe065('0x8'));var squel=require('squel');var crypto=require(_0xe065('0x9'));var jsforce=require('jsforce');var deskjs=require(_0xe065('0xa'));var toCsv=require(_0xe065('0x6'));var querystring=require(_0xe065('0xb'));var Papa=require(_0xe065('0xc'));var Redis=require(_0xe065('0xd'));var authService=require('../../components/auth/service');var qs=require(_0xe065('0xe'));var as=require(_0xe065('0xf'));var hardwareService=require(_0xe065('0x10'));var logger=require(_0xe065('0x11'))(_0xe065('0x12'));var utils=require(_0xe065('0x13'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xe065('0x14'))['db'];function respondWithStatusCode(_0x13b697,_0xf5ab44){_0xf5ab44=_0xf5ab44||0xcc;return function(_0x5bd30f){if(_0x5bd30f){return _0x13b697[_0xe065('0x15')](_0xf5ab44);}return _0x13b697[_0xe065('0x16')](_0xf5ab44)[_0xe065('0x17')]();};}function respondWithResult(_0x2e9480,_0x29297b){_0x29297b=_0x29297b||0xc8;return function(_0x541985){if(_0x541985){return _0x2e9480[_0xe065('0x16')](_0x29297b)[_0xe065('0x18')](_0x541985);}};}function respondWithFilteredResult(_0x15d365,_0xc5ef4f){return function(_0x434e07){if(_0x434e07){var _0x352206=_0x434e07[_0xe065('0x19')],_0x2e5feb=_0xc5ef4f['offset'],_0x545100=_0xc5ef4f[_0xe065('0x1a')]+_0xc5ef4f[_0xe065('0x1b')],_0x1ba88d;if(_0x545100>=_0x352206){_0x545100=_0x352206;_0x1ba88d=0xc8;}else{_0x1ba88d=0xce;}_0x15d365[_0xe065('0x16')](_0x1ba88d);return _0x15d365[_0xe065('0x1c')](_0xe065('0x1d'),_0x2e5feb+'-'+_0x545100+'/'+_0x352206)[_0xe065('0x18')](_0x434e07);}return null;};}function patchUpdates(_0x2ab8ae){return function(_0x5000e1){try{jsonpatch[_0xe065('0x1e')](_0x5000e1,_0x2ab8ae,!![]);}catch(_0x52e9b2){return BPromise[_0xe065('0x1f')](_0x52e9b2);}return _0x5000e1[_0xe065('0x20')]();};}function saveUpdates(_0x55f55c,_0x1c6567){return function(_0x587d47){if(_0x587d47){return _0x587d47[_0xe065('0x21')](_0x55f55c)[_0xe065('0x22')](function(_0x216f26){return _0x216f26;});}return null;};}function removeEntity(_0x110556,_0x3ecd13){return function(_0x105cb2){if(_0x105cb2){return _0x105cb2[_0xe065('0x23')]()[_0xe065('0x22')](function(){_0x110556[_0xe065('0x16')](0xcc)['end']();});}};}function handleEntityNotFound(_0x7208af,_0x43b712){return function(_0x44ec95){if(!_0x44ec95){_0x7208af[_0xe065('0x15')](0x194);}return _0x44ec95;};}function handleError(_0x5e8b60,_0x517d53){_0x517d53=_0x517d53||0x1f4;return function(_0x164965){logger['error'](_0x164965[_0xe065('0x24')]);if(_0x164965[_0xe065('0x25')]){delete _0x164965[_0xe065('0x25')];}_0x5e8b60[_0xe065('0x16')](_0x517d53)[_0xe065('0x26')](_0x164965);};}exports[_0xe065('0x27')]=function(_0x3b1caf,_0x26a159){var _0x52cd9c={},_0x58bbd2={},_0x14de01={'count':0x0,'rows':[]};var _0x10e6ba=_[_0xe065('0x28')](db[_0xe065('0x29')]['rawAttributes'],function(_0x23f573){return{'name':_0x23f573['fieldName'],'type':_0x23f573['type'][_0xe065('0x2a')]};});_0x58bbd2[_0xe065('0x2b')]=_[_0xe065('0x28')](_0x10e6ba,'name');_0x58bbd2[_0xe065('0x2c')]=_['keys'](_0x3b1caf[_0xe065('0x2c')]);_0x58bbd2[_0xe065('0x2d')]=_[_0xe065('0x2e')](_0x58bbd2[_0xe065('0x2b')],_0x58bbd2['query']);_0x58bbd2[_0xe065('0x2d')]=_['concat'](_0x58bbd2[_0xe065('0x2d')],[_0xe065('0x2f'),'$or',_0xe065('0x30'),'$gte',_0xe065('0x31'),'$lte',_0xe065('0x32'),_0xe065('0x33'),_0xe065('0x34'),_0xe065('0x35'),'$notBetween',_0xe065('0x36'),_0xe065('0x37'),_0xe065('0x38'),_0xe065('0x39'),_0xe065('0x3a'),_0xe065('0x3b'),'$like',_0xe065('0x3c'),_0xe065('0x3d'),'$contained',_0xe065('0x3e')]);_0x52cd9c[_0xe065('0x3f')]=_[_0xe065('0x2e')](_0x58bbd2[_0xe065('0x2b')],qs[_0xe065('0x40')](_0x3b1caf[_0xe065('0x2c')][_0xe065('0x40')]));_0x52cd9c['attributes']=_0x52cd9c[_0xe065('0x3f')]['length']?_0x52cd9c[_0xe065('0x3f')]:_0x58bbd2[_0xe065('0x2b')];if(!_0x3b1caf[_0xe065('0x2c')][_0xe065('0x41')](_0xe065('0x42'))){_0x52cd9c[_0xe065('0x1b')]=qs['limit'](_0x3b1caf[_0xe065('0x2c')][_0xe065('0x1b')]);_0x52cd9c[_0xe065('0x1a')]=qs['offset'](_0x3b1caf[_0xe065('0x2c')][_0xe065('0x1a')]);}_0x52cd9c[_0xe065('0x43')]=qs[_0xe065('0x44')](_0x3b1caf[_0xe065('0x2c')]['sort']);_0x52cd9c[_0xe065('0x45')]=qs[_0xe065('0x2d')](_['pick'](_0x3b1caf[_0xe065('0x2c')],_0x58bbd2['filters']),_0x10e6ba);if(_0x3b1caf[_0xe065('0x2c')][_0xe065('0x46')]){_0x52cd9c['where']=_[_0xe065('0x47')](_0x52cd9c[_0xe065('0x45')],{'$or':_['map'](_0x10e6ba,function(_0x16b5da){if(_0x16b5da[_0xe065('0x48')]!==_0xe065('0x49')){var _0x44a3f6={};_0x44a3f6[_0x16b5da[_0xe065('0x25')]]={'$like':'%'+_0x3b1caf[_0xe065('0x2c')][_0xe065('0x46')]+'%'};return _0x44a3f6;}})});}_0x52cd9c=_[_0xe065('0x47')]({},_0x52cd9c,_0x3b1caf[_0xe065('0x4a')]);var _0x445738={'where':_0x52cd9c[_0xe065('0x45')]};return db[_0xe065('0x29')][_0xe065('0x19')](_0x445738)['then'](function(_0x5b617a){_0x14de01[_0xe065('0x19')]=_0x5b617a;if(_0x3b1caf[_0xe065('0x2c')]['includeAll']){_0x52cd9c[_0xe065('0x4b')]=[{'all':!![]}];}return db[_0xe065('0x29')][_0xe065('0x4c')](_0x52cd9c);})[_0xe065('0x22')](function(_0x41f123){_0x14de01[_0xe065('0x4d')]=_0x41f123;return _0x14de01;})[_0xe065('0x22')](respondWithFilteredResult(_0x26a159,_0x52cd9c))[_0xe065('0x4e')](handleError(_0x26a159,null));};exports[_0xe065('0x4f')]=function(_0x52073d,_0x2451d4){var _0x161849={'raw':!![],'where':{'id':_0x52073d['params']['id']}},_0x299f96={};_0x299f96[_0xe065('0x2b')]=_[_0xe065('0x50')](db[_0xe065('0x29')][_0xe065('0x51')]);_0x299f96['query']=_[_0xe065('0x50')](_0x52073d[_0xe065('0x2c')]);_0x299f96[_0xe065('0x2d')]=_[_0xe065('0x2e')](_0x299f96[_0xe065('0x2b')],_0x299f96[_0xe065('0x2c')]);_0x161849[_0xe065('0x3f')]=_['intersection'](_0x299f96[_0xe065('0x2b')],qs[_0xe065('0x40')](_0x52073d[_0xe065('0x2c')][_0xe065('0x40')]));_0x161849[_0xe065('0x3f')]=_0x161849[_0xe065('0x3f')][_0xe065('0x52')]?_0x161849['attributes']:_0x299f96[_0xe065('0x2b')];if(_0x52073d['query'][_0xe065('0x53')]){_0x161849[_0xe065('0x4b')]=[{'all':!![]}];}_0x161849=_[_0xe065('0x47')]({},_0x161849,_0x52073d['options']);return db[_0xe065('0x29')][_0xe065('0x54')](_0x161849)[_0xe065('0x22')](handleEntityNotFound(_0x2451d4,null))[_0xe065('0x22')](respondWithResult(_0x2451d4,null))[_0xe065('0x4e')](handleError(_0x2451d4,null));};exports[_0xe065('0x55')]=function(_0x310d28,_0x16335a){return db[_0xe065('0x29')][_0xe065('0x55')](_0x310d28[_0xe065('0x56')],{})[_0xe065('0x22')](respondWithResult(_0x16335a,0xc9))[_0xe065('0x4e')](handleError(_0x16335a,null));};exports['update']=function(_0x4aeea2,_0x584201){if(_0x4aeea2[_0xe065('0x56')]['id']){delete _0x4aeea2['body']['id'];}return db[_0xe065('0x29')][_0xe065('0x54')]({'where':{'id':_0x4aeea2[_0xe065('0x57')]['id']}})['then'](handleEntityNotFound(_0x584201,null))[_0xe065('0x22')](saveUpdates(_0x4aeea2[_0xe065('0x56')],null))['then'](respondWithResult(_0x584201,null))[_0xe065('0x4e')](handleError(_0x584201,null));};exports[_0xe065('0x58')]=function(_0x18c7de,_0x15d40f){return db[_0xe065('0x29')][_0xe065('0x58')]()[_0xe065('0x22')](respondWithResult(_0x15d40f,null))[_0xe065('0x4e')](handleError(_0x15d40f,null));};exports[_0xe065('0x23')]=function(_0x26a770,_0x49a367){var _0x19007e;return db[_0xe065('0x29')][_0xe065('0x54')]({'where':{'id':_0x26a770[_0xe065('0x57')]['id']}})['then'](handleEntityNotFound(_0x49a367,null))[_0xe065('0x22')](function(_0x217309){if(_0x217309){return _0x217309[_0xe065('0x23')]()[_0xe065('0x22')](function(_0x4b2d0a){return _0x4b2d0a;});}})[_0xe065('0x22')](function(_0x38da45){_0x19007e=_0x38da45;if(_0x38da45){if(_0x38da45[_0xe065('0x59')]||_0x38da45['CampaignId']){return db[_0x38da45[_0xe065('0x59')]?_0xe065('0x5a'):_0xe065('0x5b')][_0xe065('0x54')]({'where':{'id':_0x38da45[_0xe065('0x59')]?_0x38da45[_0xe065('0x59')]:_0x38da45[_0xe065('0x5c')]},'attributes':['id',_0xe065('0x25')],'raw':!![]});}}})[_0xe065('0x22')](function(_0x5ec6fe){var _0x2accad={};if(_0x5ec6fe){_['merge'](_0x2accad,_[_0xe065('0x5d')](_0x19007e[_0xe065('0x5e')],[_0xe065('0x5f'),'updatedAt','id']));_0x2accad['state']=0x15;_0x2accad['statedesc']=_0xe065('0x60');_0x2accad[_0xe065('0x61')]=_0x5ec6fe[_0xe065('0x25')];_0x2accad[_0xe065('0x62')]=_0x26a770[_0xe065('0x63')][_0xe065('0x25')];_0x2accad[_0xe065('0x64')]=_0x26a770[_0xe065('0x63')]['id'];_0x2accad[_0xe065('0x60')]=!![];_0x2accad[_0xe065('0x65')]=moment()[_0xe065('0x66')]('YYYY-MM-DD\x20HH:mm:ss');_0x2accad['calleridnum']=_0x19007e[_0xe065('0x67')];_0x2accad[_0xe065('0x68')]=_0x19007e['VoiceQueueId']?_0xe065('0x69'):'ivr';return db['CmContact'][_0xe065('0x54')]({'where':{'id':_0x2accad[_0xe065('0x6a')]},'attributes':[_0xe065('0x6b'),_0xe065('0x6c')]})[_0xe065('0x22')](function(_0x817baf){if(!_[_0xe065('0x6d')](_0x49a367)&&!_['isNil'](_0x817baf[_0xe065('0x6b')])){_0x2accad[_0xe065('0x6e')]=_0x817baf[_0xe065('0x6b')];if(!_[_0xe065('0x6d')](_0x817baf[_0xe065('0x6c')])){_0x2accad['calleridname']+='\x20'+_0x817baf[_0xe065('0x6c')];}}})[_0xe065('0x6f')](function(){return db[_0xe065('0x70')][_0xe065('0x55')](_0x2accad);});}})[_0xe065('0x22')](function(){return _0x49a367[_0xe065('0x16')](0xcc)['end']();})['catch'](handleError(_0x49a367,null));};exports['getPreview']=function(_0x50f6e9,_0x5c3d7a,_0x2fa994){var _0x45b033=[];return db[_0xe065('0x71')][_0xe065('0x58')]()[_0xe065('0x22')](function(_0x1aeeb1){_0x45b033=_[_0xe065('0x50')](_0x1aeeb1);return _0x50f6e9[_0xe065('0x63')]['getVoiceQueues']({'where':{'type':'outbound','dialActive':!![],'dialMethod':_0xe065('0x72')},'attributes':['id',_0xe065('0x73')],'raw':!![]});})[_0xe065('0x22')](function(_0x573201){if(_0x573201&&_0x573201[_0xe065('0x52')]){return db[_0xe065('0x74')][_0xe065('0x75')](function(_0x4765a0){var _0x136e40={'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0xe065('0x66')](_0xe065('0x76'))},'VoiceQueueId':{'$in':_[_0xe065('0x28')](_0x573201,'id')},'$or':[{'UserId':null},{'UserId':_0x50f6e9[_0xe065('0x63')]['id']}]};var _0xecef2=[];if(_0x50f6e9[_0xe065('0x56')][_0xe065('0x77')]&&_0x50f6e9[_0xe065('0x56')][_0xe065('0x77')]===_0xe065('0x78')){if(!_[_0xe065('0x79')](_0x50f6e9[_0xe065('0x56')][_0xe065('0x7a')])){_0x136e40['id']={'$in':_0x50f6e9['body'][_0xe065('0x7a')]};}_0xecef2=[[_0xe065('0x7b'),_0xe065('0x7c')],[_0xe065('0x7d'),_0x573201[0x0][_0xe065('0x73')]===_0xe065('0x7c')?_0xe065('0x7e'):_0xe065('0x7c')],db[_0xe065('0x74')][_0xe065('0x7f')](_0xe065('0x80')),['id',_0xe065('0x7e')]];}else{if(!_[_0xe065('0x79')](_0x50f6e9[_0xe065('0x56')][_0xe065('0x7a')])){_0x136e40['id']={'$notIn':_0x50f6e9[_0xe065('0x56')][_0xe065('0x7a')]};}_0xecef2=[['priority',_0xe065('0x7e')],[_0xe065('0x7d'),_0x573201[0x0][_0xe065('0x73')]],db[_0xe065('0x74')][_0xe065('0x7f')](_0xe065('0x81')),['id',_0xe065('0x7c')]];}return db[_0xe065('0x29')][_0xe065('0x82')]({'attributes':['id',_0xe065('0x83')],'where':_0x136e40,'order':_0xecef2,'transaction':_0x4765a0,'lock':_0x4765a0['LOCK']['UPDATE'],'include':[{'model':db[_0xe065('0x71')],'as':'Contact','attributes':_0x45b033,'include':[{'model':db[_0xe065('0x84')],'as':'Company','attributes':['id',_0xe065('0x25')]}]},{'model':db[_0xe065('0x85')],'as':_0xe065('0x86'),'attributes':['id',_0xe065('0x25')]},{'model':db[_0xe065('0x5a')],'as':_0xe065('0x87'),'attributes':['id',_0xe065('0x25'),_0xe065('0x88')]}]})[_0xe065('0x22')](function(_0x48b92c){if(_0x48b92c){return _0x48b92c[_0xe065('0x21')]({'UserId':_0x50f6e9[_0xe065('0x63')]['id']},{'transaction':_0x4765a0});}});});}})[_0xe065('0x22')](handleEntityNotFound(_0x5c3d7a,null))[_0xe065('0x22')](respondWithResult(_0x5c3d7a,null))['catch'](handleError(_0x5c3d7a,null));};exports[_0xe065('0x89')]=function(_0x2fdaae,_0x34d103,_0x4ff8d5){return _0x2fdaae[_0xe065('0x63')][_0xe065('0x8a')]({'where':{'type':_0xe065('0x8b'),'dialActive':!![],'dialMethod':'preview'},'attributes':['id'],'raw':!![]})[_0xe065('0x22')](function(_0x3834c1){if(_0x3834c1&&_0x3834c1['length']){return db['CmHopper'][_0xe065('0x19')]({'where':{'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0xe065('0x66')](_0xe065('0x76'))},'VoiceQueueId':{'$in':_[_0xe065('0x28')](_0x3834c1,'id')},'$or':[{'UserId':null},{'UserId':_0x2fdaae[_0xe065('0x63')]['id']}]}});}return 0x0;})['then'](function(_0x53985a){if(!_[_0xe065('0x6d')](_0x53985a)&&_[_0xe065('0x8c')](_0x53985a)){return _0x34d103['status'](0xc8)[_0xe065('0x18')]({'contacts':_0x53985a});}else{logger[_0xe065('0x8d')](_0xe065('0x8e'),_0xe065('0x89'),0x194,_0xe065('0x8f'));_0x34d103[_0xe065('0x15')](0x194);}})[_0xe065('0x4e')](handleError(_0x34d103,null));};