b52dc315b9b0f6184766cc0b455c32d95eed7775
[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 _0x0c1a=['dialOrderByScheduledAt','transaction','direction','prev','isEmpty','hopperIds','priority','ASC','DESC','sequelize','literal','scheduledAt','findOne','scheduledat','UPDATE','Company','CmList','Queue','dialActive','getOpenContacts','error','CmHopper,\x20%s,\x20%s,\x20%s','entity\x20not\x20found','html-pdf','eml-format','rimraf','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','count','offset','limit','set','apply','save','update','destroy','then','stack','name','send','index','map','CmHopper','rawAttributes','fieldName','type','key','model','keys','filters','intersection','query','concat','$gte','$lt','$lte','$ne','$eq','$not','$between','$in','$notIn','$like','$notLike','$iLike','$notILike','$overlap','$contained','attributes','fields','length','hasOwnProperty','nolimit','order','sort','filter','where','merge','options','include','rows','catch','params','find','body','describe','VoiceQueueId','CampaignId','VoiceQueue','omit','dataValues','statedesc','deleted','campaign','membername','user','UserId','deletedat','format','YYYY-MM-DD\x20HH:mm:ss','campaigntype','queue','CmContact','ContactId','lastName','isNil','firstName','calleridname','finally','CmHopperFinal','getPreview','getVoiceQueues','preview'];(function(_0x4e0587,_0x409e3a){var _0x39a2c6=function(_0x5aa883){while(--_0x5aa883){_0x4e0587['push'](_0x4e0587['shift']());}};_0x39a2c6(++_0x409e3a);}(_0x0c1a,0x127));var _0xa0c1=function(_0x101fb5,_0x4c2ce0){_0x101fb5=_0x101fb5-0x0;var _0x58d456=_0x0c1a[_0x101fb5];return _0x58d456;};'use strict';var pdf=require(_0xa0c1('0x0'));var emlformat=require(_0xa0c1('0x1'));var rimraf=require(_0xa0c1('0x2'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xa0c1('0x3'));var moment=require('moment');var BPromise=require(_0xa0c1('0x4'));var Mustache=require(_0xa0c1('0x5'));var util=require(_0xa0c1('0x6'));var path=require(_0xa0c1('0x7'));var sox=require(_0xa0c1('0x8'));var csv=require(_0xa0c1('0x9'));var ejs=require(_0xa0c1('0xa'));var fs=require('fs');var _=require(_0xa0c1('0xb'));var squel=require(_0xa0c1('0xc'));var crypto=require(_0xa0c1('0xd'));var jsforce=require('jsforce');var deskjs=require(_0xa0c1('0xe'));var toCsv=require(_0xa0c1('0x9'));var querystring=require(_0xa0c1('0xf'));var Papa=require(_0xa0c1('0x10'));var Redis=require(_0xa0c1('0x11'));var authService=require(_0xa0c1('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0xa0c1('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xa0c1('0x14'))('api');var utils=require('../../config/utils');var config=require(_0xa0c1('0x15'));var licenseUtil=require(_0xa0c1('0x16'));var db=require(_0xa0c1('0x17'))['db'];function respondWithStatusCode(_0x55f5b0,_0x2b5add){_0x2b5add=_0x2b5add||0xcc;return function(_0xd201d8){if(_0xd201d8){return _0x55f5b0[_0xa0c1('0x18')](_0x2b5add);}return _0x55f5b0[_0xa0c1('0x19')](_0x2b5add)[_0xa0c1('0x1a')]();};}function respondWithResult(_0x1b7287,_0x4a1da8){_0x4a1da8=_0x4a1da8||0xc8;return function(_0x58a43e){if(_0x58a43e){return _0x1b7287[_0xa0c1('0x19')](_0x4a1da8)[_0xa0c1('0x1b')](_0x58a43e);}};}function respondWithFilteredResult(_0x11e1f4,_0xf87af8){return function(_0x10f3dc){if(_0x10f3dc){var _0x4813ba=_0x10f3dc[_0xa0c1('0x1c')],_0x5ca8f3=_0xf87af8[_0xa0c1('0x1d')],_0x3f70a4=_0xf87af8['offset']+_0xf87af8[_0xa0c1('0x1e')],_0x10dc55;if(_0x3f70a4>=_0x4813ba){_0x3f70a4=_0x4813ba;_0x10dc55=0xc8;}else{_0x10dc55=0xce;}_0x11e1f4['status'](_0x10dc55);return _0x11e1f4[_0xa0c1('0x1f')]('Content-Range',_0x5ca8f3+'-'+_0x3f70a4+'/'+_0x4813ba)[_0xa0c1('0x1b')](_0x10f3dc);}return null;};}function patchUpdates(_0x25e784){return function(_0x956323){try{jsonpatch[_0xa0c1('0x20')](_0x956323,_0x25e784,!![]);}catch(_0x1eec9a){return BPromise['reject'](_0x1eec9a);}return _0x956323[_0xa0c1('0x21')]();};}function saveUpdates(_0x409a8d,_0x2ab18c){return function(_0x306473){if(_0x306473){return _0x306473[_0xa0c1('0x22')](_0x409a8d)['then'](function(_0x41eed2){return _0x41eed2;});}return null;};}function removeEntity(_0x41bfc7,_0xf95130){return function(_0x54e058){if(_0x54e058){return _0x54e058[_0xa0c1('0x23')]()[_0xa0c1('0x24')](function(){_0x41bfc7['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0xf0a99b,_0xb88f2){return function(_0x5e5cdd){if(!_0x5e5cdd){_0xf0a99b[_0xa0c1('0x18')](0x194);}return _0x5e5cdd;};}function handleError(_0x26b267,_0xb2237d){_0xb2237d=_0xb2237d||0x1f4;return function(_0x408538){logger['error'](_0x408538[_0xa0c1('0x25')]);if(_0x408538[_0xa0c1('0x26')]){delete _0x408538[_0xa0c1('0x26')];}_0x26b267['status'](_0xb2237d)[_0xa0c1('0x27')](_0x408538);};}exports[_0xa0c1('0x28')]=function(_0x20344b,_0x3ed7b5){var _0x217a5f={},_0x49530b={},_0x4a5d0b={'count':0x0,'rows':[]};var _0x43e519=_[_0xa0c1('0x29')](db[_0xa0c1('0x2a')][_0xa0c1('0x2b')],function(_0x26a286){return{'name':_0x26a286[_0xa0c1('0x2c')],'type':_0x26a286[_0xa0c1('0x2d')][_0xa0c1('0x2e')]};});_0x49530b[_0xa0c1('0x2f')]=_[_0xa0c1('0x29')](_0x43e519,_0xa0c1('0x26'));_0x49530b['query']=_[_0xa0c1('0x30')](_0x20344b['query']);_0x49530b[_0xa0c1('0x31')]=_[_0xa0c1('0x32')](_0x49530b['model'],_0x49530b[_0xa0c1('0x33')]);_0x49530b['filters']=_[_0xa0c1('0x34')](_0x49530b['filters'],['$and','$or','$gt',_0xa0c1('0x35'),_0xa0c1('0x36'),_0xa0c1('0x37'),_0xa0c1('0x38'),_0xa0c1('0x39'),_0xa0c1('0x3a'),_0xa0c1('0x3b'),'$notBetween',_0xa0c1('0x3c'),_0xa0c1('0x3d'),_0xa0c1('0x3e'),_0xa0c1('0x3f'),_0xa0c1('0x40'),_0xa0c1('0x41'),_0xa0c1('0x3e'),_0xa0c1('0x42'),'$contains',_0xa0c1('0x43'),'$any']);_0x217a5f[_0xa0c1('0x44')]=_[_0xa0c1('0x32')](_0x49530b[_0xa0c1('0x2f')],qs[_0xa0c1('0x45')](_0x20344b[_0xa0c1('0x33')][_0xa0c1('0x45')]));_0x217a5f['attributes']=_0x217a5f['attributes'][_0xa0c1('0x46')]?_0x217a5f[_0xa0c1('0x44')]:_0x49530b[_0xa0c1('0x2f')];if(!_0x20344b[_0xa0c1('0x33')][_0xa0c1('0x47')](_0xa0c1('0x48'))){_0x217a5f['limit']=qs[_0xa0c1('0x1e')](_0x20344b[_0xa0c1('0x33')][_0xa0c1('0x1e')]);_0x217a5f[_0xa0c1('0x1d')]=qs['offset'](_0x20344b[_0xa0c1('0x33')]['offset']);}_0x217a5f[_0xa0c1('0x49')]=qs[_0xa0c1('0x4a')](_0x20344b[_0xa0c1('0x33')][_0xa0c1('0x4a')]);_0x217a5f['where']=qs[_0xa0c1('0x31')](_['pick'](_0x20344b[_0xa0c1('0x33')],_0x49530b[_0xa0c1('0x31')]),_0x43e519);if(_0x20344b['query'][_0xa0c1('0x4b')]){_0x217a5f[_0xa0c1('0x4c')]=_[_0xa0c1('0x4d')](_0x217a5f[_0xa0c1('0x4c')],{'$or':_[_0xa0c1('0x29')](_0x43e519,function(_0x553768){if(_0x553768[_0xa0c1('0x2d')]!=='VIRTUAL'){var _0x503b6e={};_0x503b6e[_0x553768[_0xa0c1('0x26')]]={'$like':'%'+_0x20344b['query'][_0xa0c1('0x4b')]+'%'};return _0x503b6e;}})});}_0x217a5f=_['merge']({},_0x217a5f,_0x20344b[_0xa0c1('0x4e')]);var _0x4ab86f={'where':_0x217a5f[_0xa0c1('0x4c')]};return db[_0xa0c1('0x2a')][_0xa0c1('0x1c')](_0x4ab86f)[_0xa0c1('0x24')](function(_0x7398a1){_0x4a5d0b[_0xa0c1('0x1c')]=_0x7398a1;if(_0x20344b[_0xa0c1('0x33')]['includeAll']){_0x217a5f[_0xa0c1('0x4f')]=[{'all':!![]}];}return db[_0xa0c1('0x2a')]['findAll'](_0x217a5f);})['then'](function(_0xcfcc1e){_0x4a5d0b[_0xa0c1('0x50')]=_0xcfcc1e;return _0x4a5d0b;})[_0xa0c1('0x24')](respondWithFilteredResult(_0x3ed7b5,_0x217a5f))[_0xa0c1('0x51')](handleError(_0x3ed7b5,null));};exports['show']=function(_0x5ccd7d,_0x48bdbf){var _0x511cf8={'raw':!![],'where':{'id':_0x5ccd7d[_0xa0c1('0x52')]['id']}},_0x4653ba={};_0x4653ba['model']=_[_0xa0c1('0x30')](db['CmHopper'][_0xa0c1('0x2b')]);_0x4653ba['query']=_[_0xa0c1('0x30')](_0x5ccd7d['query']);_0x4653ba[_0xa0c1('0x31')]=_[_0xa0c1('0x32')](_0x4653ba[_0xa0c1('0x2f')],_0x4653ba['query']);_0x511cf8[_0xa0c1('0x44')]=_[_0xa0c1('0x32')](_0x4653ba[_0xa0c1('0x2f')],qs[_0xa0c1('0x45')](_0x5ccd7d[_0xa0c1('0x33')][_0xa0c1('0x45')]));_0x511cf8[_0xa0c1('0x44')]=_0x511cf8[_0xa0c1('0x44')]['length']?_0x511cf8[_0xa0c1('0x44')]:_0x4653ba['model'];if(_0x5ccd7d[_0xa0c1('0x33')]['includeAll']){_0x511cf8['include']=[{'all':!![]}];}_0x511cf8=_[_0xa0c1('0x4d')]({},_0x511cf8,_0x5ccd7d[_0xa0c1('0x4e')]);return db['CmHopper'][_0xa0c1('0x53')](_0x511cf8)['then'](handleEntityNotFound(_0x48bdbf,null))[_0xa0c1('0x24')](respondWithResult(_0x48bdbf,null))[_0xa0c1('0x51')](handleError(_0x48bdbf,null));};exports['create']=function(_0x575b7e,_0x578fc4){return db[_0xa0c1('0x2a')]['create'](_0x575b7e[_0xa0c1('0x54')],{})['then'](respondWithResult(_0x578fc4,0xc9))[_0xa0c1('0x51')](handleError(_0x578fc4,null));};exports[_0xa0c1('0x22')]=function(_0x472d53,_0x166bd8){if(_0x472d53[_0xa0c1('0x54')]['id']){delete _0x472d53[_0xa0c1('0x54')]['id'];}return db[_0xa0c1('0x2a')][_0xa0c1('0x53')]({'where':{'id':_0x472d53[_0xa0c1('0x52')]['id']}})[_0xa0c1('0x24')](handleEntityNotFound(_0x166bd8,null))[_0xa0c1('0x24')](saveUpdates(_0x472d53[_0xa0c1('0x54')],null))[_0xa0c1('0x24')](respondWithResult(_0x166bd8,null))['catch'](handleError(_0x166bd8,null));};exports[_0xa0c1('0x55')]=function(_0x3ae23d,_0x450086){return db[_0xa0c1('0x2a')][_0xa0c1('0x55')]()[_0xa0c1('0x24')](respondWithResult(_0x450086,null))[_0xa0c1('0x51')](handleError(_0x450086,null));};exports[_0xa0c1('0x23')]=function(_0x461770,_0x101d8d){var _0x1f0d0e;return db[_0xa0c1('0x2a')][_0xa0c1('0x53')]({'where':{'id':_0x461770[_0xa0c1('0x52')]['id']}})[_0xa0c1('0x24')](handleEntityNotFound(_0x101d8d,null))[_0xa0c1('0x24')](function(_0x212902){if(_0x212902){return _0x212902[_0xa0c1('0x23')]()[_0xa0c1('0x24')](function(_0x313293){return _0x313293;});}})[_0xa0c1('0x24')](function(_0x5512ce){_0x1f0d0e=_0x5512ce;if(_0x5512ce){if(_0x5512ce[_0xa0c1('0x56')]||_0x5512ce[_0xa0c1('0x57')]){return db[_0x5512ce[_0xa0c1('0x56')]?_0xa0c1('0x58'):'Campaign'][_0xa0c1('0x53')]({'where':{'id':_0x5512ce[_0xa0c1('0x56')]?_0x5512ce[_0xa0c1('0x56')]:_0x5512ce['CampaignId']},'attributes':['id',_0xa0c1('0x26')],'raw':!![]});}}})[_0xa0c1('0x24')](function(_0x2f67f2){var _0xa99acf={};if(_0x2f67f2){_[_0xa0c1('0x4d')](_0xa99acf,_[_0xa0c1('0x59')](_0x1f0d0e[_0xa0c1('0x5a')],['createdAt','updatedAt','id']));_0xa99acf['state']=0x15;_0xa99acf[_0xa0c1('0x5b')]=_0xa0c1('0x5c');_0xa99acf[_0xa0c1('0x5d')]=_0x2f67f2[_0xa0c1('0x26')];_0xa99acf[_0xa0c1('0x5e')]=_0x461770[_0xa0c1('0x5f')][_0xa0c1('0x26')];_0xa99acf[_0xa0c1('0x60')]=_0x461770[_0xa0c1('0x5f')]['id'];_0xa99acf[_0xa0c1('0x5c')]=!![];_0xa99acf[_0xa0c1('0x61')]=moment()[_0xa0c1('0x62')](_0xa0c1('0x63'));_0xa99acf['calleridnum']=_0x1f0d0e['phone'];_0xa99acf[_0xa0c1('0x64')]=_0x1f0d0e['VoiceQueueId']?_0xa0c1('0x65'):'ivr';return db[_0xa0c1('0x66')][_0xa0c1('0x53')]({'where':{'id':_0xa99acf[_0xa0c1('0x67')]},'attributes':['firstName',_0xa0c1('0x68')]})['then'](function(_0x4dc8a7){if(!_[_0xa0c1('0x69')](_0x101d8d)&&!_['isNil'](_0x4dc8a7[_0xa0c1('0x6a')])){_0xa99acf[_0xa0c1('0x6b')]=_0x4dc8a7[_0xa0c1('0x6a')];if(!_[_0xa0c1('0x69')](_0x4dc8a7['lastName'])){_0xa99acf[_0xa0c1('0x6b')]+='\x20'+_0x4dc8a7[_0xa0c1('0x68')];}}})[_0xa0c1('0x6c')](function(){return db[_0xa0c1('0x6d')]['create'](_0xa99acf);});}})[_0xa0c1('0x24')](function(){return _0x101d8d[_0xa0c1('0x19')](0xcc)[_0xa0c1('0x1a')]();})[_0xa0c1('0x51')](handleError(_0x101d8d,null));};exports[_0xa0c1('0x6e')]=function(_0x4d55ed,_0x27a8ea,_0x5cf82a){var _0x511aea=[];return db['CmContact']['describe']()['then'](function(_0x774926){_0x511aea=_[_0xa0c1('0x30')](_0x774926);return _0x4d55ed[_0xa0c1('0x5f')][_0xa0c1('0x6f')]({'where':{'type':'outbound','dialActive':!![],'dialMethod':_0xa0c1('0x70')},'attributes':['id',_0xa0c1('0x71')],'raw':!![]});})[_0xa0c1('0x24')](function(_0x3bd75b){if(_0x3bd75b&&_0x3bd75b[_0xa0c1('0x46')]){return db['sequelize'][_0xa0c1('0x72')](function(_0x4dd640){var _0x223054={'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0xa0c1('0x62')](_0xa0c1('0x63'))},'VoiceQueueId':{'$in':_['map'](_0x3bd75b,'id')},'$or':[{'UserId':null},{'UserId':_0x4d55ed[_0xa0c1('0x5f')]['id']}]};var _0x416404=[];if(_0x4d55ed[_0xa0c1('0x54')][_0xa0c1('0x73')]&&_0x4d55ed['body'][_0xa0c1('0x73')]===_0xa0c1('0x74')){if(!_[_0xa0c1('0x75')](_0x4d55ed[_0xa0c1('0x54')][_0xa0c1('0x76')])){_0x223054['id']={'$in':_0x4d55ed[_0xa0c1('0x54')][_0xa0c1('0x76')]};}_0x416404=[[_0xa0c1('0x77'),_0xa0c1('0x78')],['scheduledAt',_0x3bd75b[0x0][_0xa0c1('0x71')]===_0xa0c1('0x78')?_0xa0c1('0x79'):_0xa0c1('0x78')],db[_0xa0c1('0x7a')][_0xa0c1('0x7b')]('COALESCE(CmHopper.UserId,\x200)\x20ASC'),['id','DESC']];}else{if(!_[_0xa0c1('0x75')](_0x4d55ed[_0xa0c1('0x54')][_0xa0c1('0x76')])){_0x223054['id']={'$notIn':_0x4d55ed[_0xa0c1('0x54')][_0xa0c1('0x76')]};}_0x416404=[[_0xa0c1('0x77'),_0xa0c1('0x79')],[_0xa0c1('0x7c'),_0x3bd75b[0x0][_0xa0c1('0x71')]],db[_0xa0c1('0x7a')][_0xa0c1('0x7b')]('COALESCE(CmHopper.UserId,\x200)\x20DESC'),['id',_0xa0c1('0x78')]];}return db[_0xa0c1('0x2a')][_0xa0c1('0x7d')]({'attributes':['id',_0xa0c1('0x7e')],'where':_0x223054,'order':_0x416404,'transaction':_0x4dd640,'lock':_0x4dd640['LOCK'][_0xa0c1('0x7f')],'include':[{'model':db[_0xa0c1('0x66')],'as':'Contact','attributes':_0x511aea,'include':[{'model':db['CmCompany'],'as':_0xa0c1('0x80'),'attributes':['id',_0xa0c1('0x26')]}]},{'model':db[_0xa0c1('0x81')],'as':'List','attributes':['id',_0xa0c1('0x26')]},{'model':db[_0xa0c1('0x58')],'as':_0xa0c1('0x82'),'attributes':['id','name',_0xa0c1('0x83')]}]})[_0xa0c1('0x24')](function(_0x1f779e){if(_0x1f779e){return _0x1f779e['update']({'UserId':_0x4d55ed[_0xa0c1('0x5f')]['id']},{'transaction':_0x4dd640});}});});}})[_0xa0c1('0x24')](handleEntityNotFound(_0x27a8ea,null))[_0xa0c1('0x24')](respondWithResult(_0x27a8ea,null))[_0xa0c1('0x51')](handleError(_0x27a8ea,null));};exports[_0xa0c1('0x84')]=function(_0x18cf7d,_0x321235,_0x4d0bc7){return _0x18cf7d['user'][_0xa0c1('0x6f')]({'where':{'type':'outbound','dialActive':!![],'dialMethod':_0xa0c1('0x70')},'attributes':['id'],'raw':!![]})[_0xa0c1('0x24')](function(_0x376d44){if(_0x376d44&&_0x376d44[_0xa0c1('0x46')]){return db[_0xa0c1('0x2a')][_0xa0c1('0x1c')]({'where':{'active':![],'recallme':![],'scheduledAt':{'$lte':moment()['format'](_0xa0c1('0x63'))},'VoiceQueueId':{'$in':_['map'](_0x376d44,'id')},'$or':[{'UserId':null},{'UserId':_0x18cf7d[_0xa0c1('0x5f')]['id']}]}});}return 0x0;})[_0xa0c1('0x24')](function(_0x13b41e){if(!_[_0xa0c1('0x69')](_0x13b41e)&&_['isNumber'](_0x13b41e)){return _0x321235[_0xa0c1('0x19')](0xc8)['json']({'contacts':_0x13b41e});}else{logger[_0xa0c1('0x85')](_0xa0c1('0x86'),_0xa0c1('0x84'),0x194,_0xa0c1('0x87'));_0x321235[_0xa0c1('0x18')](0x194);}})[_0xa0c1('0x51')](handleError(_0x321235,null));};