d85c2e474dd1f5a349879f2666f542c16212ee8f
[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 _0x3df7=['params','fields','find','create','body','describe','VoiceQueueId','CampaignId','Campaign','dataValues','createdAt','updatedAt','state','statedesc','campaign','membername','user','UserId','deletedat','format','YYYY-MM-DD\x20HH:mm:ss','calleridnum','phone','campaigntype','queue','ivr','CmContact','ContactId','lastName','isNil','calleridname','firstName','finally','CmHopperFinal','getPreview','getVoiceQueues','outbound','preview','dialOrderByScheduledAt','sequelize','transaction','direction','prev','isEmpty','hopperIds','priority','ASC','literal','DESC','scheduledAt','COALESCE(CmHopper.UserId,\x200)\x20DESC','scheduledat','LOCK','UPDATE','Contact','CmCompany','Company','CmList','List','Queue','dialActive','getOpenContacts','isNumber','html-pdf','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','squel','crypto','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','sendStatus','status','end','json','count','offset','limit','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','keys','query','filters','$or','$gte','$lte','$ne','$not','$between','$notBetween','$in','$notIn','$like','$notLike','$iLike','$notILike','$contains','$contained','$any','attributes','intersection','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','options','CmHopper','includeAll','include','findAll','rows','catch','show'];(function(_0x5d1e3e,_0x1f66af){var _0x232fdc=function(_0x451ad3){while(--_0x451ad3){_0x5d1e3e['push'](_0x5d1e3e['shift']());}};_0x232fdc(++_0x1f66af);}(_0x3df7,0xd4));var _0x73df=function(_0x1e4d54,_0x5986fe){_0x1e4d54=_0x1e4d54-0x0;var _0x882542=_0x3df7[_0x1e4d54];return _0x882542;};'use strict';var pdf=require(_0x73df('0x0'));var emlformat=require(_0x73df('0x1'));var rimraf=require(_0x73df('0x2'));var zipdir=require(_0x73df('0x3'));var jsonpatch=require(_0x73df('0x4'));var rp=require(_0x73df('0x5'));var moment=require(_0x73df('0x6'));var BPromise=require(_0x73df('0x7'));var Mustache=require(_0x73df('0x8'));var util=require(_0x73df('0x9'));var path=require(_0x73df('0xa'));var sox=require(_0x73df('0xb'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var _=require('lodash');var squel=require(_0x73df('0xc'));var crypto=require(_0x73df('0xd'));var jsforce=require(_0x73df('0xe'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x73df('0xf'));var Papa=require(_0x73df('0x10'));var Redis=require('ioredis');var authService=require(_0x73df('0x11'));var qs=require(_0x73df('0x12'));var as=require(_0x73df('0x13'));var hardwareService=require(_0x73df('0x14'));var logger=require(_0x73df('0x15'))('api');var utils=require(_0x73df('0x16'));var config=require('../../config/environment');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x40d3d5,_0x57ebdf){_0x57ebdf=_0x57ebdf||0xcc;return function(_0xa9d702){if(_0xa9d702){return _0x40d3d5[_0x73df('0x17')](_0x57ebdf);}return _0x40d3d5[_0x73df('0x18')](_0x57ebdf)[_0x73df('0x19')]();};}function respondWithResult(_0x16c561,_0x2a8c8f){_0x2a8c8f=_0x2a8c8f||0xc8;return function(_0x47e7e1){if(_0x47e7e1){return _0x16c561[_0x73df('0x18')](_0x2a8c8f)[_0x73df('0x1a')](_0x47e7e1);}};}function respondWithFilteredResult(_0x3dc589,_0x5e227c){return function(_0x1cd35f){if(_0x1cd35f){var _0x26f993=_0x1cd35f[_0x73df('0x1b')],_0x48eb49=_0x5e227c[_0x73df('0x1c')],_0xd894cc=_0x5e227c['offset']+_0x5e227c[_0x73df('0x1d')],_0x3d8a75;if(_0xd894cc>=_0x26f993){_0xd894cc=_0x26f993;_0x3d8a75=0xc8;}else{_0x3d8a75=0xce;}_0x3dc589[_0x73df('0x18')](_0x3d8a75);return _0x3dc589[_0x73df('0x1e')](_0x73df('0x1f'),_0x48eb49+'-'+_0xd894cc+'/'+_0x26f993)[_0x73df('0x1a')](_0x1cd35f);}return null;};}function patchUpdates(_0x2292ac){return function(_0x127ac7){try{jsonpatch[_0x73df('0x20')](_0x127ac7,_0x2292ac,!![]);}catch(_0xdd985f){return BPromise[_0x73df('0x21')](_0xdd985f);}return _0x127ac7[_0x73df('0x22')]();};}function saveUpdates(_0x3db7ae,_0x1d28cb){return function(_0x5329ff){if(_0x5329ff){return _0x5329ff[_0x73df('0x23')](_0x3db7ae)[_0x73df('0x24')](function(_0x269fdf){return _0x269fdf;});}return null;};}function removeEntity(_0xb3921e,_0x2034b9){return function(_0x3c3aea){if(_0x3c3aea){return _0x3c3aea[_0x73df('0x25')]()['then'](function(){_0xb3921e[_0x73df('0x18')](0xcc)[_0x73df('0x19')]();});}};}function handleEntityNotFound(_0x476126,_0x257cd9){return function(_0xf66255){if(!_0xf66255){_0x476126[_0x73df('0x17')](0x194);}return _0xf66255;};}function handleError(_0xdae9f0,_0x581b3f){_0x581b3f=_0x581b3f||0x1f4;return function(_0xa021a2){logger[_0x73df('0x26')](_0xa021a2[_0x73df('0x27')]);if(_0xa021a2[_0x73df('0x28')]){delete _0xa021a2[_0x73df('0x28')];}_0xdae9f0[_0x73df('0x18')](_0x581b3f)[_0x73df('0x29')](_0xa021a2);};}exports[_0x73df('0x2a')]=function(_0xaab5f7,_0x5b9c85){var _0x1907c1={},_0x442928={},_0x15745f={'count':0x0,'rows':[]};var _0x1300b2=_[_0x73df('0x2b')](db['CmHopper'][_0x73df('0x2c')],function(_0x1c0676){return{'name':_0x1c0676[_0x73df('0x2d')],'type':_0x1c0676[_0x73df('0x2e')][_0x73df('0x2f')]};});_0x442928[_0x73df('0x30')]=_[_0x73df('0x2b')](_0x1300b2,_0x73df('0x28'));_0x442928['query']=_[_0x73df('0x31')](_0xaab5f7[_0x73df('0x32')]);_0x442928['filters']=_['intersection'](_0x442928[_0x73df('0x30')],_0x442928[_0x73df('0x32')]);_0x442928[_0x73df('0x33')]=_['concat'](_0x442928['filters'],['$and',_0x73df('0x34'),'$gt',_0x73df('0x35'),'$lt',_0x73df('0x36'),_0x73df('0x37'),'$eq',_0x73df('0x38'),_0x73df('0x39'),_0x73df('0x3a'),_0x73df('0x3b'),_0x73df('0x3c'),_0x73df('0x3d'),_0x73df('0x3e'),_0x73df('0x3f'),_0x73df('0x40'),_0x73df('0x3d'),'$overlap',_0x73df('0x41'),_0x73df('0x42'),_0x73df('0x43')]);_0x1907c1[_0x73df('0x44')]=_[_0x73df('0x45')](_0x442928[_0x73df('0x30')],qs['fields'](_0xaab5f7[_0x73df('0x32')]['fields']));_0x1907c1['attributes']=_0x1907c1['attributes'][_0x73df('0x46')]?_0x1907c1[_0x73df('0x44')]:_0x442928[_0x73df('0x30')];if(!_0xaab5f7[_0x73df('0x32')][_0x73df('0x47')](_0x73df('0x48'))){_0x1907c1['limit']=qs[_0x73df('0x1d')](_0xaab5f7['query'][_0x73df('0x1d')]);_0x1907c1[_0x73df('0x1c')]=qs['offset'](_0xaab5f7[_0x73df('0x32')][_0x73df('0x1c')]);}_0x1907c1['order']=qs[_0x73df('0x49')](_0xaab5f7[_0x73df('0x32')][_0x73df('0x49')]);_0x1907c1[_0x73df('0x4a')]=qs['filters'](_[_0x73df('0x4b')](_0xaab5f7[_0x73df('0x32')],_0x442928['filters']),_0x1300b2);if(_0xaab5f7[_0x73df('0x32')][_0x73df('0x4c')]){_0x1907c1['where']=_[_0x73df('0x4d')](_0x1907c1[_0x73df('0x4a')],{'$or':_['map'](_0x1300b2,function(_0x597976){if(_0x597976[_0x73df('0x2e')]!=='VIRTUAL'){var _0x3c5c43={};_0x3c5c43[_0x597976['name']]={'$like':'%'+_0xaab5f7[_0x73df('0x32')][_0x73df('0x4c')]+'%'};return _0x3c5c43;}})});}_0x1907c1=_[_0x73df('0x4d')]({},_0x1907c1,_0xaab5f7[_0x73df('0x4e')]);var _0x97420f={'where':_0x1907c1[_0x73df('0x4a')]};return db[_0x73df('0x4f')]['count'](_0x97420f)['then'](function(_0x4c9a2d){_0x15745f[_0x73df('0x1b')]=_0x4c9a2d;if(_0xaab5f7[_0x73df('0x32')][_0x73df('0x50')]){_0x1907c1[_0x73df('0x51')]=[{'all':!![]}];}return db['CmHopper'][_0x73df('0x52')](_0x1907c1);})[_0x73df('0x24')](function(_0x3f756b){_0x15745f[_0x73df('0x53')]=_0x3f756b;return _0x15745f;})[_0x73df('0x24')](respondWithFilteredResult(_0x5b9c85,_0x1907c1))[_0x73df('0x54')](handleError(_0x5b9c85,null));};exports[_0x73df('0x55')]=function(_0x19a802,_0x41fa77){var _0x335e9b={'raw':!![],'where':{'id':_0x19a802[_0x73df('0x56')]['id']}},_0xf2d521={};_0xf2d521[_0x73df('0x30')]=_[_0x73df('0x31')](db[_0x73df('0x4f')]['rawAttributes']);_0xf2d521[_0x73df('0x32')]=_[_0x73df('0x31')](_0x19a802[_0x73df('0x32')]);_0xf2d521[_0x73df('0x33')]=_[_0x73df('0x45')](_0xf2d521['model'],_0xf2d521['query']);_0x335e9b['attributes']=_[_0x73df('0x45')](_0xf2d521[_0x73df('0x30')],qs[_0x73df('0x57')](_0x19a802[_0x73df('0x32')][_0x73df('0x57')]));_0x335e9b[_0x73df('0x44')]=_0x335e9b[_0x73df('0x44')]['length']?_0x335e9b[_0x73df('0x44')]:_0xf2d521[_0x73df('0x30')];if(_0x19a802[_0x73df('0x32')][_0x73df('0x50')]){_0x335e9b[_0x73df('0x51')]=[{'all':!![]}];}_0x335e9b=_['merge']({},_0x335e9b,_0x19a802[_0x73df('0x4e')]);return db['CmHopper'][_0x73df('0x58')](_0x335e9b)['then'](handleEntityNotFound(_0x41fa77,null))[_0x73df('0x24')](respondWithResult(_0x41fa77,null))['catch'](handleError(_0x41fa77,null));};exports[_0x73df('0x59')]=function(_0x1e9408,_0x3f1b95){return db[_0x73df('0x4f')][_0x73df('0x59')](_0x1e9408[_0x73df('0x5a')],{})['then'](respondWithResult(_0x3f1b95,0xc9))['catch'](handleError(_0x3f1b95,null));};exports[_0x73df('0x23')]=function(_0x4627b5,_0x1fb00c){if(_0x4627b5['body']['id']){delete _0x4627b5[_0x73df('0x5a')]['id'];}return db['CmHopper'][_0x73df('0x58')]({'where':{'id':_0x4627b5[_0x73df('0x56')]['id']}})[_0x73df('0x24')](handleEntityNotFound(_0x1fb00c,null))[_0x73df('0x24')](saveUpdates(_0x4627b5[_0x73df('0x5a')],null))[_0x73df('0x24')](respondWithResult(_0x1fb00c,null))['catch'](handleError(_0x1fb00c,null));};exports[_0x73df('0x5b')]=function(_0x10bf2b,_0x8db503){return db[_0x73df('0x4f')][_0x73df('0x5b')]()[_0x73df('0x24')](respondWithResult(_0x8db503,null))['catch'](handleError(_0x8db503,null));};exports[_0x73df('0x25')]=function(_0x43fb39,_0x29d29f){var _0x42392a;return db[_0x73df('0x4f')][_0x73df('0x58')]({'where':{'id':_0x43fb39[_0x73df('0x56')]['id']}})['then'](handleEntityNotFound(_0x29d29f,null))[_0x73df('0x24')](function(_0xe6cf0a){if(_0xe6cf0a){return _0xe6cf0a[_0x73df('0x25')]()[_0x73df('0x24')](function(_0x1e7cf7){return _0x1e7cf7;});}})[_0x73df('0x24')](function(_0x1d7931){_0x42392a=_0x1d7931;if(_0x1d7931){if(_0x1d7931[_0x73df('0x5c')]||_0x1d7931[_0x73df('0x5d')]){return db[_0x1d7931[_0x73df('0x5c')]?'VoiceQueue':_0x73df('0x5e')]['find']({'where':{'id':_0x1d7931[_0x73df('0x5c')]?_0x1d7931[_0x73df('0x5c')]:_0x1d7931[_0x73df('0x5d')]},'attributes':['id','name'],'raw':!![]});}}})['then'](function(_0x834255){var _0x4747d5={};if(_0x834255){_[_0x73df('0x4d')](_0x4747d5,_['omit'](_0x42392a[_0x73df('0x5f')],[_0x73df('0x60'),_0x73df('0x61'),'id']));_0x4747d5[_0x73df('0x62')]=0x15;_0x4747d5[_0x73df('0x63')]='deleted';_0x4747d5[_0x73df('0x64')]=_0x834255[_0x73df('0x28')];_0x4747d5[_0x73df('0x65')]=_0x43fb39[_0x73df('0x66')][_0x73df('0x28')];_0x4747d5[_0x73df('0x67')]=_0x43fb39[_0x73df('0x66')]['id'];_0x4747d5['deleted']=!![];_0x4747d5[_0x73df('0x68')]=moment()[_0x73df('0x69')](_0x73df('0x6a'));_0x4747d5[_0x73df('0x6b')]=_0x42392a[_0x73df('0x6c')];_0x4747d5[_0x73df('0x6d')]=_0x42392a['VoiceQueueId']?_0x73df('0x6e'):_0x73df('0x6f');return db[_0x73df('0x70')]['find']({'where':{'id':_0x4747d5[_0x73df('0x71')]},'attributes':['firstName',_0x73df('0x72')]})['then'](function(_0x22ef40){if(!_[_0x73df('0x73')](_0x29d29f)&&!_[_0x73df('0x73')](_0x22ef40['firstName'])){_0x4747d5[_0x73df('0x74')]=_0x22ef40[_0x73df('0x75')];if(!_[_0x73df('0x73')](_0x22ef40[_0x73df('0x72')])){_0x4747d5[_0x73df('0x74')]+='\x20'+_0x22ef40[_0x73df('0x72')];}}})[_0x73df('0x76')](function(){return db[_0x73df('0x77')][_0x73df('0x59')](_0x4747d5);});}})['then'](function(){return _0x29d29f['status'](0xcc)[_0x73df('0x19')]();})['catch'](handleError(_0x29d29f,null));};exports[_0x73df('0x78')]=function(_0xa6afc,_0x20177c,_0x418547){var _0x5b522c=[];return db['CmContact'][_0x73df('0x5b')]()[_0x73df('0x24')](function(_0x2857c1){_0x5b522c=_[_0x73df('0x31')](_0x2857c1);return _0xa6afc[_0x73df('0x66')][_0x73df('0x79')]({'where':{'type':_0x73df('0x7a'),'dialActive':!![],'dialMethod':_0x73df('0x7b')},'attributes':['id',_0x73df('0x7c')],'raw':!![]});})[_0x73df('0x24')](function(_0x532e32){if(_0x532e32&&_0x532e32[_0x73df('0x46')]){return db[_0x73df('0x7d')][_0x73df('0x7e')](function(_0x5ce281){var _0x4dad15={'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0x73df('0x69')]('YYYY-MM-DD\x20HH:mm:ss')},'VoiceQueueId':{'$in':_[_0x73df('0x2b')](_0x532e32,'id')},'$or':[{'UserId':null},{'UserId':_0xa6afc[_0x73df('0x66')]['id']}]};var _0x582963=[];if(_0xa6afc[_0x73df('0x5a')][_0x73df('0x7f')]&&_0xa6afc['body'][_0x73df('0x7f')]===_0x73df('0x80')){if(!_[_0x73df('0x81')](_0xa6afc['body'][_0x73df('0x82')])){_0x4dad15['id']={'$in':_0xa6afc[_0x73df('0x5a')][_0x73df('0x82')]};}_0x582963=[[_0x73df('0x83'),_0x73df('0x84')],['scheduledAt',_0x532e32[0x0][_0x73df('0x7c')]==='ASC'?'DESC':_0x73df('0x84')],db[_0x73df('0x7d')][_0x73df('0x85')]('COALESCE(CmHopper.UserId,\x200)\x20ASC'),['id','DESC']];}else{if(!_[_0x73df('0x81')](_0xa6afc[_0x73df('0x5a')][_0x73df('0x82')])){_0x4dad15['id']={'$notIn':_0xa6afc[_0x73df('0x5a')][_0x73df('0x82')]};}_0x582963=[[_0x73df('0x83'),_0x73df('0x86')],[_0x73df('0x87'),_0x532e32[0x0][_0x73df('0x7c')]],db['sequelize']['literal'](_0x73df('0x88')),['id','ASC']];}return db['CmHopper']['findOne']({'attributes':['id',_0x73df('0x89')],'where':_0x4dad15,'order':_0x582963,'transaction':_0x5ce281,'lock':_0x5ce281[_0x73df('0x8a')][_0x73df('0x8b')],'include':[{'model':db[_0x73df('0x70')],'as':_0x73df('0x8c'),'attributes':_0x5b522c,'include':[{'model':db[_0x73df('0x8d')],'as':_0x73df('0x8e'),'attributes':['id',_0x73df('0x28')]}]},{'model':db[_0x73df('0x8f')],'as':_0x73df('0x90'),'attributes':['id','name']},{'model':db['VoiceQueue'],'as':_0x73df('0x91'),'attributes':['id',_0x73df('0x28'),_0x73df('0x92')]}]})[_0x73df('0x24')](function(_0x1b9a66){if(_0x1b9a66){return _0x1b9a66[_0x73df('0x23')]({'UserId':_0xa6afc['user']['id']},{'transaction':_0x5ce281});}});});}})['then'](handleEntityNotFound(_0x20177c,null))[_0x73df('0x24')](respondWithResult(_0x20177c,null))[_0x73df('0x54')](handleError(_0x20177c,null));};exports[_0x73df('0x93')]=function(_0xaba274,_0x3fa0fd,_0x411dbe){return _0xaba274[_0x73df('0x66')]['getVoiceQueues']({'where':{'type':'outbound','dialActive':!![],'dialMethod':_0x73df('0x7b')},'attributes':['id'],'raw':!![]})[_0x73df('0x24')](function(_0x43471d){if(_0x43471d&&_0x43471d[_0x73df('0x46')]){return db['CmHopper'][_0x73df('0x1b')]({'where':{'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0x73df('0x69')]('YYYY-MM-DD\x20HH:mm:ss')},'VoiceQueueId':{'$in':_['map'](_0x43471d,'id')},'$or':[{'UserId':null},{'UserId':_0xaba274[_0x73df('0x66')]['id']}]}});}return 0x0;})['then'](function(_0x42d33e){if(!_['isNil'](_0x42d33e)&&_[_0x73df('0x94')](_0x42d33e)){return _0x3fa0fd['status'](0xc8)[_0x73df('0x1a')]({'contacts':_0x42d33e});}else{logger['error']('CmHopper,\x20%s,\x20%s,\x20%s',_0x73df('0x93'),0x194,'entity\x20not\x20found');_0x3fa0fd['sendStatus'](0x194);}})['catch'](handleError(_0x3fa0fd,null));};