79eaf48906455ad2e6de53c839ac999b279bc3b8
[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 _0x8603=['mustache','path','to-csv','ejs','lodash','squel','crypto','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','count','offset','limit','Content-Range','apply','reject','save','update','then','destroy','stack','name','index','CmHopper','rawAttributes','fieldName','type','key','model','map','query','keys','intersection','concat','filters','$and','$gt','$gte','$lte','$eq','$not','$between','$notBetween','$in','$notIn','$like','$iLike','$notILike','$overlap','$contains','$contained','fields','attributes','length','nolimit','sort','where','pick','filter','merge','options','includeAll','findAll','rows','catch','show','params','find','create','body','describe','CampaignId','VoiceQueue','Campaign','VoiceQueueId','omit','state','campaign','membername','user','UserId','format','YYYY-MM-DD\x20HH:mm:ss','calleridnum','campaigntype','queue','ivr','ContactId','firstName','lastName','isNil','calleridname','finally','getPreview','CmContact','outbound','preview','dialOrderByScheduledAt','sequelize','transaction','direction','prev','isEmpty','hopperIds','priority','ASC','literal','DESC','scheduledAt','COALESCE(CmHopper.UserId,\x200)\x20DESC','scheduledat','LOCK','Contact','CmCompany','Queue','getOpenContacts','getVoiceQueues','isNumber','error','entity\x20not\x20found','eml-format','rimraf','zip-dir','moment','bluebird'];(function(_0x4b369d,_0x265eb8){var _0x571a98=function(_0x56341a){while(--_0x56341a){_0x4b369d['push'](_0x4b369d['shift']());}};_0x571a98(++_0x265eb8);}(_0x8603,0x190));var _0x3860=function(_0x4b477a,_0x3e3f1e){_0x4b477a=_0x4b477a-0x0;var _0x291072=_0x8603[_0x4b477a];return _0x291072;};'use strict';var pdf=require('html-pdf');var emlformat=require(_0x3860('0x0'));var rimraf=require(_0x3860('0x1'));var zipdir=require(_0x3860('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x3860('0x3'));var BPromise=require(_0x3860('0x4'));var Mustache=require(_0x3860('0x5'));var util=require('util');var path=require(_0x3860('0x6'));var sox=require('sox');var csv=require(_0x3860('0x7'));var ejs=require(_0x3860('0x8'));var fs=require('fs');var _=require(_0x3860('0x9'));var squel=require(_0x3860('0xa'));var crypto=require(_0x3860('0xb'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x3860('0xc'));var Papa=require(_0x3860('0xd'));var Redis=require('ioredis');var authService=require(_0x3860('0xe'));var qs=require(_0x3860('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x3860('0x10'));var logger=require(_0x3860('0x11'))('api');var utils=require(_0x3860('0x12'));var config=require(_0x3860('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0x3860('0x14'))['db'];function respondWithStatusCode(_0x8ad61d,_0x2428f6){_0x2428f6=_0x2428f6||0xcc;return function(_0x1ea619){if(_0x1ea619){return _0x8ad61d[_0x3860('0x15')](_0x2428f6);}return _0x8ad61d[_0x3860('0x16')](_0x2428f6)[_0x3860('0x17')]();};}function respondWithResult(_0x12b23b,_0x465d8d){_0x465d8d=_0x465d8d||0xc8;return function(_0x46264d){if(_0x46264d){return _0x12b23b['status'](_0x465d8d)[_0x3860('0x18')](_0x46264d);}};}function respondWithFilteredResult(_0x21eaf1,_0x122e40){return function(_0x37d9ab){if(_0x37d9ab){var _0x1055b3=_0x37d9ab[_0x3860('0x19')],_0xfa0c9a=_0x122e40[_0x3860('0x1a')],_0x2d8a3a=_0x122e40[_0x3860('0x1a')]+_0x122e40[_0x3860('0x1b')],_0x378305;if(_0x2d8a3a>=_0x1055b3){_0x2d8a3a=_0x1055b3;_0x378305=0xc8;}else{_0x378305=0xce;}_0x21eaf1['status'](_0x378305);return _0x21eaf1['set'](_0x3860('0x1c'),_0xfa0c9a+'-'+_0x2d8a3a+'/'+_0x1055b3)[_0x3860('0x18')](_0x37d9ab);}return null;};}function patchUpdates(_0x33caaf){return function(_0x53fc63){try{jsonpatch[_0x3860('0x1d')](_0x53fc63,_0x33caaf,!![]);}catch(_0x145b26){return BPromise[_0x3860('0x1e')](_0x145b26);}return _0x53fc63[_0x3860('0x1f')]();};}function saveUpdates(_0x20a5b0,_0x45081f){return function(_0xc06ba1){if(_0xc06ba1){return _0xc06ba1[_0x3860('0x20')](_0x20a5b0)[_0x3860('0x21')](function(_0x3f6b04){return _0x3f6b04;});}return null;};}function removeEntity(_0xacd57f,_0x2e0b6e){return function(_0x280ea9){if(_0x280ea9){return _0x280ea9[_0x3860('0x22')]()[_0x3860('0x21')](function(){_0xacd57f['status'](0xcc)[_0x3860('0x17')]();});}};}function handleEntityNotFound(_0x133093,_0x2b91f2){return function(_0x301e03){if(!_0x301e03){_0x133093[_0x3860('0x15')](0x194);}return _0x301e03;};}function handleError(_0x56a6d1,_0x29ea87){_0x29ea87=_0x29ea87||0x1f4;return function(_0x568515){logger['error'](_0x568515[_0x3860('0x23')]);if(_0x568515[_0x3860('0x24')]){delete _0x568515['name'];}_0x56a6d1['status'](_0x29ea87)['send'](_0x568515);};}exports[_0x3860('0x25')]=function(_0x3ebc5b,_0xb25cc2){var _0x371f3a={},_0x9332a5={},_0x228d34={'count':0x0,'rows':[]};var _0x544b9a=_['map'](db[_0x3860('0x26')][_0x3860('0x27')],function(_0x5a9af2){return{'name':_0x5a9af2[_0x3860('0x28')],'type':_0x5a9af2[_0x3860('0x29')][_0x3860('0x2a')]};});_0x9332a5[_0x3860('0x2b')]=_[_0x3860('0x2c')](_0x544b9a,'name');_0x9332a5[_0x3860('0x2d')]=_[_0x3860('0x2e')](_0x3ebc5b[_0x3860('0x2d')]);_0x9332a5['filters']=_[_0x3860('0x2f')](_0x9332a5['model'],_0x9332a5[_0x3860('0x2d')]);_0x9332a5['filters']=_[_0x3860('0x30')](_0x9332a5[_0x3860('0x31')],[_0x3860('0x32'),'$or',_0x3860('0x33'),_0x3860('0x34'),'$lt',_0x3860('0x35'),'$ne',_0x3860('0x36'),_0x3860('0x37'),_0x3860('0x38'),_0x3860('0x39'),_0x3860('0x3a'),_0x3860('0x3b'),_0x3860('0x3c'),'$notLike',_0x3860('0x3d'),_0x3860('0x3e'),'$like',_0x3860('0x3f'),_0x3860('0x40'),_0x3860('0x41'),'$any']);_0x371f3a['attributes']=_[_0x3860('0x2f')](_0x9332a5[_0x3860('0x2b')],qs[_0x3860('0x42')](_0x3ebc5b[_0x3860('0x2d')]['fields']));_0x371f3a['attributes']=_0x371f3a[_0x3860('0x43')][_0x3860('0x44')]?_0x371f3a[_0x3860('0x43')]:_0x9332a5[_0x3860('0x2b')];if(!_0x3ebc5b[_0x3860('0x2d')]['hasOwnProperty'](_0x3860('0x45'))){_0x371f3a[_0x3860('0x1b')]=qs['limit'](_0x3ebc5b['query'][_0x3860('0x1b')]);_0x371f3a[_0x3860('0x1a')]=qs[_0x3860('0x1a')](_0x3ebc5b[_0x3860('0x2d')][_0x3860('0x1a')]);}_0x371f3a['order']=qs[_0x3860('0x46')](_0x3ebc5b['query'][_0x3860('0x46')]);_0x371f3a[_0x3860('0x47')]=qs['filters'](_[_0x3860('0x48')](_0x3ebc5b[_0x3860('0x2d')],_0x9332a5['filters']),_0x544b9a);if(_0x3ebc5b[_0x3860('0x2d')][_0x3860('0x49')]){_0x371f3a[_0x3860('0x47')]=_[_0x3860('0x4a')](_0x371f3a['where'],{'$or':_[_0x3860('0x2c')](_0x544b9a,function(_0x47141b){if(_0x47141b[_0x3860('0x29')]!=='VIRTUAL'){var _0x3a87e5={};_0x3a87e5[_0x47141b['name']]={'$like':'%'+_0x3ebc5b[_0x3860('0x2d')][_0x3860('0x49')]+'%'};return _0x3a87e5;}})});}_0x371f3a=_[_0x3860('0x4a')]({},_0x371f3a,_0x3ebc5b[_0x3860('0x4b')]);var _0x2220c8={'where':_0x371f3a[_0x3860('0x47')]};return db['CmHopper'][_0x3860('0x19')](_0x2220c8)[_0x3860('0x21')](function(_0x5dc78f){_0x228d34['count']=_0x5dc78f;if(_0x3ebc5b[_0x3860('0x2d')][_0x3860('0x4c')]){_0x371f3a['include']=[{'all':!![]}];}return db[_0x3860('0x26')][_0x3860('0x4d')](_0x371f3a);})['then'](function(_0xa6791a){_0x228d34[_0x3860('0x4e')]=_0xa6791a;return _0x228d34;})[_0x3860('0x21')](respondWithFilteredResult(_0xb25cc2,_0x371f3a))[_0x3860('0x4f')](handleError(_0xb25cc2,null));};exports[_0x3860('0x50')]=function(_0x3fa282,_0x3c06e7){var _0x15ebbd={'raw':!![],'where':{'id':_0x3fa282[_0x3860('0x51')]['id']}},_0x1a3f39={};_0x1a3f39[_0x3860('0x2b')]=_[_0x3860('0x2e')](db[_0x3860('0x26')]['rawAttributes']);_0x1a3f39[_0x3860('0x2d')]=_['keys'](_0x3fa282[_0x3860('0x2d')]);_0x1a3f39[_0x3860('0x31')]=_[_0x3860('0x2f')](_0x1a3f39[_0x3860('0x2b')],_0x1a3f39[_0x3860('0x2d')]);_0x15ebbd[_0x3860('0x43')]=_[_0x3860('0x2f')](_0x1a3f39[_0x3860('0x2b')],qs['fields'](_0x3fa282[_0x3860('0x2d')][_0x3860('0x42')]));_0x15ebbd[_0x3860('0x43')]=_0x15ebbd['attributes'][_0x3860('0x44')]?_0x15ebbd[_0x3860('0x43')]:_0x1a3f39[_0x3860('0x2b')];if(_0x3fa282[_0x3860('0x2d')]['includeAll']){_0x15ebbd['include']=[{'all':!![]}];}_0x15ebbd=_[_0x3860('0x4a')]({},_0x15ebbd,_0x3fa282['options']);return db[_0x3860('0x26')][_0x3860('0x52')](_0x15ebbd)[_0x3860('0x21')](handleEntityNotFound(_0x3c06e7,null))['then'](respondWithResult(_0x3c06e7,null))[_0x3860('0x4f')](handleError(_0x3c06e7,null));};exports['create']=function(_0x3e87d1,_0x517fe6){return db[_0x3860('0x26')][_0x3860('0x53')](_0x3e87d1[_0x3860('0x54')],{})['then'](respondWithResult(_0x517fe6,0xc9))['catch'](handleError(_0x517fe6,null));};exports[_0x3860('0x20')]=function(_0x2de249,_0x478dd9){if(_0x2de249[_0x3860('0x54')]['id']){delete _0x2de249['body']['id'];}return db[_0x3860('0x26')][_0x3860('0x52')]({'where':{'id':_0x2de249[_0x3860('0x51')]['id']}})[_0x3860('0x21')](handleEntityNotFound(_0x478dd9,null))[_0x3860('0x21')](saveUpdates(_0x2de249[_0x3860('0x54')],null))[_0x3860('0x21')](respondWithResult(_0x478dd9,null))['catch'](handleError(_0x478dd9,null));};exports[_0x3860('0x55')]=function(_0x73222c,_0x3367ce){return db[_0x3860('0x26')][_0x3860('0x55')]()[_0x3860('0x21')](respondWithResult(_0x3367ce,null))['catch'](handleError(_0x3367ce,null));};exports[_0x3860('0x22')]=function(_0x3ed276,_0x19a26d){var _0x31f2af;return db[_0x3860('0x26')][_0x3860('0x52')]({'where':{'id':_0x3ed276[_0x3860('0x51')]['id']}})[_0x3860('0x21')](handleEntityNotFound(_0x19a26d,null))['then'](function(_0xb1d011){if(_0xb1d011){return _0xb1d011[_0x3860('0x22')]()['then'](function(_0x1fe680){return _0x1fe680;});}})[_0x3860('0x21')](function(_0x2bebd8){_0x31f2af=_0x2bebd8;if(_0x2bebd8){if(_0x2bebd8['VoiceQueueId']||_0x2bebd8[_0x3860('0x56')]){return db[_0x2bebd8['VoiceQueueId']?_0x3860('0x57'):_0x3860('0x58')][_0x3860('0x52')]({'where':{'id':_0x2bebd8[_0x3860('0x59')]?_0x2bebd8[_0x3860('0x59')]:_0x2bebd8[_0x3860('0x56')]},'attributes':['id',_0x3860('0x24')],'raw':!![]});}}})[_0x3860('0x21')](function(_0x67e6b8){var _0x151492={};if(_0x67e6b8){_[_0x3860('0x4a')](_0x151492,_[_0x3860('0x5a')](_0x31f2af['dataValues'],['createdAt','updatedAt','id']));_0x151492[_0x3860('0x5b')]=0x15;_0x151492['statedesc']='deleted';_0x151492[_0x3860('0x5c')]=_0x67e6b8[_0x3860('0x24')];_0x151492[_0x3860('0x5d')]=_0x3ed276[_0x3860('0x5e')][_0x3860('0x24')];_0x151492[_0x3860('0x5f')]=_0x3ed276['user']['id'];_0x151492['deleted']=!![];_0x151492['deletedat']=moment()[_0x3860('0x60')](_0x3860('0x61'));_0x151492[_0x3860('0x62')]=_0x31f2af['phone'];_0x151492[_0x3860('0x63')]=_0x31f2af['VoiceQueueId']?_0x3860('0x64'):_0x3860('0x65');return db['CmContact'][_0x3860('0x52')]({'where':{'id':_0x151492[_0x3860('0x66')]},'attributes':[_0x3860('0x67'),_0x3860('0x68')]})['then'](function(_0x18cc37){if(!_[_0x3860('0x69')](_0x19a26d)&&!_[_0x3860('0x69')](_0x18cc37['firstName'])){_0x151492['calleridname']=_0x18cc37[_0x3860('0x67')];if(!_[_0x3860('0x69')](_0x18cc37[_0x3860('0x68')])){_0x151492[_0x3860('0x6a')]+='\x20'+_0x18cc37[_0x3860('0x68')];}}})[_0x3860('0x6b')](function(){return db['CmHopperFinal'][_0x3860('0x53')](_0x151492);});}})[_0x3860('0x21')](function(){return _0x19a26d['status'](0xcc)[_0x3860('0x17')]();})[_0x3860('0x4f')](handleError(_0x19a26d,null));};exports[_0x3860('0x6c')]=function(_0x3467f7,_0x36431e,_0x2ee555){var _0x5b9a7b=[];return db[_0x3860('0x6d')][_0x3860('0x55')]()[_0x3860('0x21')](function(_0x27e5ab){_0x5b9a7b=_[_0x3860('0x2e')](_0x27e5ab);return _0x3467f7[_0x3860('0x5e')]['getVoiceQueues']({'where':{'type':_0x3860('0x6e'),'dialActive':!![],'dialMethod':_0x3860('0x6f')},'attributes':['id',_0x3860('0x70')],'raw':!![]});})['then'](function(_0x4e386e){if(_0x4e386e&&_0x4e386e[_0x3860('0x44')]){return db[_0x3860('0x71')][_0x3860('0x72')](function(_0x3b7a76){var _0x3fe275={'active':![],'recallme':![],'scheduledAt':{'$lte':moment()['format']('YYYY-MM-DD\x20HH:mm:ss')},'VoiceQueueId':{'$in':_[_0x3860('0x2c')](_0x4e386e,'id')},'$or':[{'UserId':null},{'UserId':_0x3467f7[_0x3860('0x5e')]['id']}]};var _0x47e144=[];if(_0x3467f7['body'][_0x3860('0x73')]&&_0x3467f7[_0x3860('0x54')]['direction']===_0x3860('0x74')){if(!_[_0x3860('0x75')](_0x3467f7[_0x3860('0x54')][_0x3860('0x76')])){_0x3fe275['id']={'$in':_0x3467f7['body'][_0x3860('0x76')]};}_0x47e144=[[_0x3860('0x77'),'ASC'],['scheduledAt',_0x4e386e[0x0][_0x3860('0x70')]===_0x3860('0x78')?'DESC':_0x3860('0x78')],db['sequelize'][_0x3860('0x79')]('COALESCE(CmHopper.UserId,\x200)\x20ASC'),['id','DESC']];}else{if(!_[_0x3860('0x75')](_0x3467f7['body'][_0x3860('0x76')])){_0x3fe275['id']={'$notIn':_0x3467f7[_0x3860('0x54')][_0x3860('0x76')]};}_0x47e144=[[_0x3860('0x77'),_0x3860('0x7a')],[_0x3860('0x7b'),_0x4e386e[0x0]['dialOrderByScheduledAt']],db[_0x3860('0x71')][_0x3860('0x79')](_0x3860('0x7c')),['id','ASC']];}return db[_0x3860('0x26')]['findOne']({'attributes':['id',_0x3860('0x7d')],'where':_0x3fe275,'order':_0x47e144,'transaction':_0x3b7a76,'lock':_0x3b7a76[_0x3860('0x7e')]['UPDATE'],'include':[{'model':db[_0x3860('0x6d')],'as':_0x3860('0x7f'),'attributes':_0x5b9a7b,'include':[{'model':db[_0x3860('0x80')],'as':'Company','attributes':['id','name']}]},{'model':db['CmList'],'as':'List','attributes':['id',_0x3860('0x24')]},{'model':db[_0x3860('0x57')],'as':_0x3860('0x81'),'attributes':['id',_0x3860('0x24'),'dialActive']}]})['then'](function(_0x41444d){if(_0x41444d){return _0x41444d[_0x3860('0x20')]({'UserId':_0x3467f7[_0x3860('0x5e')]['id']},{'transaction':_0x3b7a76});}});});}})[_0x3860('0x21')](handleEntityNotFound(_0x36431e,null))['then'](respondWithResult(_0x36431e,null))[_0x3860('0x4f')](handleError(_0x36431e,null));};exports[_0x3860('0x82')]=function(_0x49a4e6,_0x583c3a,_0x32cbe8){return _0x49a4e6[_0x3860('0x5e')][_0x3860('0x83')]({'where':{'type':_0x3860('0x6e'),'dialActive':!![],'dialMethod':'preview'},'attributes':['id'],'raw':!![]})['then'](function(_0x120b3b){if(_0x120b3b&&_0x120b3b['length']){return db[_0x3860('0x26')][_0x3860('0x19')]({'where':{'active':![],'recallme':![],'scheduledAt':{'$lte':moment()['format']('YYYY-MM-DD\x20HH:mm:ss')},'VoiceQueueId':{'$in':_['map'](_0x120b3b,'id')},'$or':[{'UserId':null},{'UserId':_0x49a4e6[_0x3860('0x5e')]['id']}]}});}return 0x0;})[_0x3860('0x21')](function(_0x507480){if(!_[_0x3860('0x69')](_0x507480)&&_[_0x3860('0x84')](_0x507480)){return _0x583c3a[_0x3860('0x16')](0xc8)[_0x3860('0x18')]({'contacts':_0x507480});}else{logger[_0x3860('0x85')]('CmHopper,\x20%s,\x20%s,\x20%s',_0x3860('0x82'),0x194,_0x3860('0x86'));_0x583c3a[_0x3860('0x15')](0x194);}})[_0x3860('0x4f')](handleError(_0x583c3a,null));};