Built motion from commit (unavailable).|2.5.28
[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 _0xfc75=['$notIn','$iLike','$like','$overlap','$contains','$contained','$any','attributes','fields','hasOwnProperty','offset','sort','pick','where','VIRTUAL','filter','merge','includeAll','include','findAll','catch','params','length','options','find','create','body','describe','destroy','VoiceQueueId','VoiceQueue','Campaign','omit','state','statedesc','deleted','campaign','membername','user','UserId','deletedat','format','YYYY-MM-DD\x20HH:mm:ss','calleridnum','phone','campaigntype','CmContact','ContactId','firstName','isNil','calleridname','lastName','finally','CmHopperFinal','getPreview','getVoiceQueues','dialOrderByScheduledAt','sequelize','transaction','direction','prev','hopperIds','priority','ASC','scheduledAt','literal','DESC','COALESCE(CmHopper.UserId,\x200)\x20DESC','findOne','scheduledat','UPDATE','Contact','CmCompany','Company','CmList','dialActive','outbound','preview','isNumber','CmHopper,\x20%s,\x20%s,\x20%s','getOpenContacts','entity\x20not\x20found','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','mustache','path','sox','to-csv','ejs','fs-extra','squel','jsforce','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','status','json','count','limit','set','Content-Range','apply','reject','update','then','end','sendStatus','error','stack','name','send','map','CmHopper','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','concat','$or','$gt','$gte','$lt','$lte','$ne','$eq','$not','$between','$notBetween','$in'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xfc75,0xe1));var _0x5fc7=function(_0x432682,_0x253044){_0x432682=_0x432682-0x0;var _0x463d05=_0xfc75[_0x432682];return _0x463d05;};'use strict';var emlformat=require(_0x5fc7('0x0'));var rimraf=require(_0x5fc7('0x1'));var zipdir=require(_0x5fc7('0x2'));var jsonpatch=require(_0x5fc7('0x3'));var rp=require(_0x5fc7('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x5fc7('0x5'));var util=require('util');var path=require(_0x5fc7('0x6'));var sox=require(_0x5fc7('0x7'));var csv=require(_0x5fc7('0x8'));var ejs=require(_0x5fc7('0x9'));var fs=require('fs');var fs_extra=require(_0x5fc7('0xa'));var _=require('lodash');var squel=require(_0x5fc7('0xb'));var crypto=require('crypto');var jsforce=require(_0x5fc7('0xc'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x5fc7('0xd'));var Papa=require('papaparse');var Redis=require(_0x5fc7('0xe'));var authService=require('../../components/auth/service');var qs=require(_0x5fc7('0xf'));var as=require(_0x5fc7('0x10'));var hardwareService=require(_0x5fc7('0x11'));var logger=require('../../config/logger')(_0x5fc7('0x12'));var utils=require(_0x5fc7('0x13'));var config=require(_0x5fc7('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0x5fc7('0x15'))['db'];function respondWithStatusCode(_0x90ebf1,_0x35b74d){_0x35b74d=_0x35b74d||0xcc;return function(_0x23a387){if(_0x23a387){return _0x90ebf1['sendStatus'](_0x35b74d);}return _0x90ebf1['status'](_0x35b74d)['end']();};}function respondWithResult(_0x53ca56,_0xb9cf6){_0xb9cf6=_0xb9cf6||0xc8;return function(_0x13fb24){if(_0x13fb24){return _0x53ca56[_0x5fc7('0x16')](_0xb9cf6)[_0x5fc7('0x17')](_0x13fb24);}};}function respondWithFilteredResult(_0x592004,_0x34f609){return function(_0x32d87c){if(_0x32d87c){var _0x248331=_0x32d87c[_0x5fc7('0x18')],_0x46590a=_0x34f609['offset'],_0x51d176=_0x34f609['offset']+_0x34f609[_0x5fc7('0x19')],_0x188101;if(_0x51d176>=_0x248331){_0x51d176=_0x248331;_0x188101=0xc8;}else{_0x188101=0xce;}_0x592004[_0x5fc7('0x16')](_0x188101);return _0x592004[_0x5fc7('0x1a')](_0x5fc7('0x1b'),_0x46590a+'-'+_0x51d176+'/'+_0x248331)['json'](_0x32d87c);}return null;};}function patchUpdates(_0x280f4f){return function(_0x98d164){try{jsonpatch[_0x5fc7('0x1c')](_0x98d164,_0x280f4f,!![]);}catch(_0x32579b){return BPromise[_0x5fc7('0x1d')](_0x32579b);}return _0x98d164['save']();};}function saveUpdates(_0x56d686,_0x2b8512){return function(_0x260411){if(_0x260411){return _0x260411[_0x5fc7('0x1e')](_0x56d686)[_0x5fc7('0x1f')](function(_0x1d0228){return _0x1d0228;});}return null;};}function removeEntity(_0x26c4ae,_0x31a582){return function(_0x46c542){if(_0x46c542){return _0x46c542['destroy']()[_0x5fc7('0x1f')](function(){_0x26c4ae['status'](0xcc)[_0x5fc7('0x20')]();});}};}function handleEntityNotFound(_0xc530af,_0x2bd0e5){return function(_0x3b80fe){if(!_0x3b80fe){_0xc530af[_0x5fc7('0x21')](0x194);}return _0x3b80fe;};}function handleError(_0x51b0f2,_0x3c1c8b){_0x3c1c8b=_0x3c1c8b||0x1f4;return function(_0x6f28e0){logger[_0x5fc7('0x22')](_0x6f28e0[_0x5fc7('0x23')]);if(_0x6f28e0[_0x5fc7('0x24')]){delete _0x6f28e0[_0x5fc7('0x24')];}_0x51b0f2[_0x5fc7('0x16')](_0x3c1c8b)[_0x5fc7('0x25')](_0x6f28e0);};}exports['index']=function(_0x5eecfb,_0x8dcfab){var _0x564981={},_0x423e0f={},_0x5e3f6a={'count':0x0,'rows':[]};var _0xc801c0=_[_0x5fc7('0x26')](db[_0x5fc7('0x27')][_0x5fc7('0x28')],function(_0x45c682){return{'name':_0x45c682[_0x5fc7('0x29')],'type':_0x45c682[_0x5fc7('0x2a')][_0x5fc7('0x2b')]};});_0x423e0f[_0x5fc7('0x2c')]=_[_0x5fc7('0x26')](_0xc801c0,'name');_0x423e0f[_0x5fc7('0x2d')]=_[_0x5fc7('0x2e')](_0x5eecfb[_0x5fc7('0x2d')]);_0x423e0f[_0x5fc7('0x2f')]=_[_0x5fc7('0x30')](_0x423e0f[_0x5fc7('0x2c')],_0x423e0f[_0x5fc7('0x2d')]);_0x423e0f[_0x5fc7('0x2f')]=_[_0x5fc7('0x31')](_0x423e0f['filters'],['$and',_0x5fc7('0x32'),_0x5fc7('0x33'),_0x5fc7('0x34'),_0x5fc7('0x35'),_0x5fc7('0x36'),_0x5fc7('0x37'),_0x5fc7('0x38'),_0x5fc7('0x39'),_0x5fc7('0x3a'),_0x5fc7('0x3b'),_0x5fc7('0x3c'),_0x5fc7('0x3d'),'$like','$notLike',_0x5fc7('0x3e'),'$notILike',_0x5fc7('0x3f'),_0x5fc7('0x40'),_0x5fc7('0x41'),_0x5fc7('0x42'),_0x5fc7('0x43')]);_0x564981[_0x5fc7('0x44')]=_['intersection'](_0x423e0f['model'],qs[_0x5fc7('0x45')](_0x5eecfb[_0x5fc7('0x2d')][_0x5fc7('0x45')]));_0x564981[_0x5fc7('0x44')]=_0x564981['attributes']['length']?_0x564981['attributes']:_0x423e0f[_0x5fc7('0x2c')];if(!_0x5eecfb[_0x5fc7('0x2d')][_0x5fc7('0x46')]('nolimit')){_0x564981['limit']=qs[_0x5fc7('0x19')](_0x5eecfb[_0x5fc7('0x2d')][_0x5fc7('0x19')]);_0x564981['offset']=qs['offset'](_0x5eecfb[_0x5fc7('0x2d')][_0x5fc7('0x47')]);}_0x564981['order']=qs['sort'](_0x5eecfb[_0x5fc7('0x2d')][_0x5fc7('0x48')]);_0x564981['where']=qs[_0x5fc7('0x2f')](_[_0x5fc7('0x49')](_0x5eecfb['query'],_0x423e0f['filters']),_0xc801c0);if(_0x5eecfb[_0x5fc7('0x2d')]['filter']){_0x564981[_0x5fc7('0x4a')]=_['merge'](_0x564981[_0x5fc7('0x4a')],{'$or':_[_0x5fc7('0x26')](_0xc801c0,function(_0x5c25af){if(_0x5c25af[_0x5fc7('0x2a')]!==_0x5fc7('0x4b')){var _0x5dd7fc={};_0x5dd7fc[_0x5c25af[_0x5fc7('0x24')]]={'$like':'%'+_0x5eecfb[_0x5fc7('0x2d')][_0x5fc7('0x4c')]+'%'};return _0x5dd7fc;}})});}_0x564981=_[_0x5fc7('0x4d')]({},_0x564981,_0x5eecfb['options']);var _0x561860={'where':_0x564981[_0x5fc7('0x4a')]};return db[_0x5fc7('0x27')][_0x5fc7('0x18')](_0x561860)[_0x5fc7('0x1f')](function(_0x42bb3d){_0x5e3f6a[_0x5fc7('0x18')]=_0x42bb3d;if(_0x5eecfb['query'][_0x5fc7('0x4e')]){_0x564981[_0x5fc7('0x4f')]=[{'all':!![]}];}return db[_0x5fc7('0x27')][_0x5fc7('0x50')](_0x564981);})['then'](function(_0x45fc44){_0x5e3f6a['rows']=_0x45fc44;return _0x5e3f6a;})['then'](respondWithFilteredResult(_0x8dcfab,_0x564981))[_0x5fc7('0x51')](handleError(_0x8dcfab,null));};exports['show']=function(_0x2df95f,_0x3d54fe){var _0x3cd27c={'raw':!![],'where':{'id':_0x2df95f[_0x5fc7('0x52')]['id']}},_0xdfd670={};_0xdfd670[_0x5fc7('0x2c')]=_[_0x5fc7('0x2e')](db[_0x5fc7('0x27')][_0x5fc7('0x28')]);_0xdfd670[_0x5fc7('0x2d')]=_[_0x5fc7('0x2e')](_0x2df95f[_0x5fc7('0x2d')]);_0xdfd670['filters']=_[_0x5fc7('0x30')](_0xdfd670[_0x5fc7('0x2c')],_0xdfd670[_0x5fc7('0x2d')]);_0x3cd27c[_0x5fc7('0x44')]=_[_0x5fc7('0x30')](_0xdfd670['model'],qs[_0x5fc7('0x45')](_0x2df95f[_0x5fc7('0x2d')][_0x5fc7('0x45')]));_0x3cd27c[_0x5fc7('0x44')]=_0x3cd27c['attributes'][_0x5fc7('0x53')]?_0x3cd27c[_0x5fc7('0x44')]:_0xdfd670[_0x5fc7('0x2c')];if(_0x2df95f['query'][_0x5fc7('0x4e')]){_0x3cd27c['include']=[{'all':!![]}];}_0x3cd27c=_[_0x5fc7('0x4d')]({},_0x3cd27c,_0x2df95f[_0x5fc7('0x54')]);return db[_0x5fc7('0x27')][_0x5fc7('0x55')](_0x3cd27c)[_0x5fc7('0x1f')](handleEntityNotFound(_0x3d54fe,null))[_0x5fc7('0x1f')](respondWithResult(_0x3d54fe,null))[_0x5fc7('0x51')](handleError(_0x3d54fe,null));};exports['create']=function(_0x17454d,_0x30935e){return db[_0x5fc7('0x27')][_0x5fc7('0x56')](_0x17454d[_0x5fc7('0x57')],{})[_0x5fc7('0x1f')](respondWithResult(_0x30935e,0xc9))[_0x5fc7('0x51')](handleError(_0x30935e,null));};exports[_0x5fc7('0x1e')]=function(_0x6335bc,_0x446f4d){if(_0x6335bc[_0x5fc7('0x57')]['id']){delete _0x6335bc[_0x5fc7('0x57')]['id'];}return db[_0x5fc7('0x27')][_0x5fc7('0x55')]({'where':{'id':_0x6335bc[_0x5fc7('0x52')]['id']}})[_0x5fc7('0x1f')](handleEntityNotFound(_0x446f4d,null))[_0x5fc7('0x1f')](saveUpdates(_0x6335bc[_0x5fc7('0x57')],null))[_0x5fc7('0x1f')](respondWithResult(_0x446f4d,null))[_0x5fc7('0x51')](handleError(_0x446f4d,null));};exports[_0x5fc7('0x58')]=function(_0x4243f8,_0x4013a9){return db[_0x5fc7('0x27')][_0x5fc7('0x58')]()[_0x5fc7('0x1f')](respondWithResult(_0x4013a9,null))[_0x5fc7('0x51')](handleError(_0x4013a9,null));};exports[_0x5fc7('0x59')]=function(_0x3d1391,_0x426fdc){var _0x509ba7;return db[_0x5fc7('0x27')][_0x5fc7('0x55')]({'where':{'id':_0x3d1391[_0x5fc7('0x52')]['id']}})['then'](handleEntityNotFound(_0x426fdc,null))[_0x5fc7('0x1f')](function(_0x366ba4){if(_0x366ba4){return _0x366ba4[_0x5fc7('0x59')]()[_0x5fc7('0x1f')](function(_0x2d8a86){return _0x2d8a86;});}})[_0x5fc7('0x1f')](function(_0x5641b1){_0x509ba7=_0x5641b1;if(_0x5641b1){if(_0x5641b1['VoiceQueueId']||_0x5641b1['CampaignId']){return db[_0x5641b1[_0x5fc7('0x5a')]?_0x5fc7('0x5b'):_0x5fc7('0x5c')]['find']({'where':{'id':_0x5641b1['VoiceQueueId']?_0x5641b1[_0x5fc7('0x5a')]:_0x5641b1['CampaignId']},'attributes':['id',_0x5fc7('0x24')],'raw':!![]});}}})[_0x5fc7('0x1f')](function(_0x186256){var _0x41c448={};if(_0x186256){_[_0x5fc7('0x4d')](_0x41c448,_[_0x5fc7('0x5d')](_0x509ba7['dataValues'],['createdAt','updatedAt','id']));_0x41c448[_0x5fc7('0x5e')]=0x15;_0x41c448[_0x5fc7('0x5f')]=_0x5fc7('0x60');_0x41c448[_0x5fc7('0x61')]=_0x186256[_0x5fc7('0x24')];_0x41c448[_0x5fc7('0x62')]=_0x3d1391[_0x5fc7('0x63')][_0x5fc7('0x24')];_0x41c448[_0x5fc7('0x64')]=_0x3d1391['user']['id'];_0x41c448[_0x5fc7('0x60')]=!![];_0x41c448[_0x5fc7('0x65')]=moment()[_0x5fc7('0x66')](_0x5fc7('0x67'));_0x41c448[_0x5fc7('0x68')]=_0x509ba7[_0x5fc7('0x69')];_0x41c448[_0x5fc7('0x6a')]=_0x509ba7[_0x5fc7('0x5a')]?'queue':'ivr';return db[_0x5fc7('0x6b')]['find']({'where':{'id':_0x41c448[_0x5fc7('0x6c')]},'attributes':[_0x5fc7('0x6d'),'lastName']})[_0x5fc7('0x1f')](function(_0x538a87){if(!_[_0x5fc7('0x6e')](_0x426fdc)&&!_[_0x5fc7('0x6e')](_0x538a87[_0x5fc7('0x6d')])){_0x41c448[_0x5fc7('0x6f')]=_0x538a87[_0x5fc7('0x6d')];if(!_['isNil'](_0x538a87[_0x5fc7('0x70')])){_0x41c448[_0x5fc7('0x6f')]+='\x20'+_0x538a87['lastName'];}}})[_0x5fc7('0x71')](function(){return db[_0x5fc7('0x72')]['create'](_0x41c448);});}})[_0x5fc7('0x1f')](function(){return _0x426fdc['status'](0xcc)['end']();})['catch'](handleError(_0x426fdc,null));};exports[_0x5fc7('0x73')]=function(_0x288cfc,_0x56ab93,_0x26a34c){var _0x16656f=[];return db[_0x5fc7('0x6b')][_0x5fc7('0x58')]()[_0x5fc7('0x1f')](function(_0x1ed46a){_0x16656f=_[_0x5fc7('0x2e')](_0x1ed46a);return _0x288cfc[_0x5fc7('0x63')][_0x5fc7('0x74')]({'where':{'type':'outbound','dialActive':!![],'dialMethod':'preview'},'attributes':['id',_0x5fc7('0x75')],'raw':!![]});})['then'](function(_0x27e850){if(_0x27e850&&_0x27e850['length']){return db[_0x5fc7('0x76')][_0x5fc7('0x77')](function(_0x18f7bf){var _0x21a668={'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0x5fc7('0x66')](_0x5fc7('0x67'))},'VoiceQueueId':{'$in':_[_0x5fc7('0x26')](_0x27e850,'id')},'$or':[{'UserId':null},{'UserId':_0x288cfc[_0x5fc7('0x63')]['id']}]};var _0x2bd83f=[];if(_0x288cfc[_0x5fc7('0x57')]['direction']&&_0x288cfc[_0x5fc7('0x57')][_0x5fc7('0x78')]===_0x5fc7('0x79')){if(!_['isEmpty'](_0x288cfc[_0x5fc7('0x57')][_0x5fc7('0x7a')])){_0x21a668['id']={'$in':_0x288cfc['body'][_0x5fc7('0x7a')]};}_0x2bd83f=[[_0x5fc7('0x7b'),_0x5fc7('0x7c')],[_0x5fc7('0x7d'),_0x27e850[0x0]['dialOrderByScheduledAt']===_0x5fc7('0x7c')?'DESC':_0x5fc7('0x7c')],db[_0x5fc7('0x76')][_0x5fc7('0x7e')]('COALESCE(CmHopper.UserId,\x200)\x20ASC'),['id',_0x5fc7('0x7f')]];}else{if(!_['isEmpty'](_0x288cfc[_0x5fc7('0x57')][_0x5fc7('0x7a')])){_0x21a668['id']={'$notIn':_0x288cfc[_0x5fc7('0x57')]['hopperIds']};}_0x2bd83f=[[_0x5fc7('0x7b'),_0x5fc7('0x7f')],[_0x5fc7('0x7d'),_0x27e850[0x0][_0x5fc7('0x75')]],db[_0x5fc7('0x76')][_0x5fc7('0x7e')](_0x5fc7('0x80')),['id',_0x5fc7('0x7c')]];}return db[_0x5fc7('0x27')][_0x5fc7('0x81')]({'attributes':['id',_0x5fc7('0x82')],'where':_0x21a668,'order':_0x2bd83f,'transaction':_0x18f7bf,'lock':_0x18f7bf['LOCK'][_0x5fc7('0x83')],'include':[{'model':db[_0x5fc7('0x6b')],'as':_0x5fc7('0x84'),'attributes':_0x16656f,'include':[{'model':db[_0x5fc7('0x85')],'as':_0x5fc7('0x86'),'attributes':['id','name']}]},{'model':db[_0x5fc7('0x87')],'as':'List','attributes':['id',_0x5fc7('0x24')]},{'model':db['VoiceQueue'],'as':'Queue','attributes':['id',_0x5fc7('0x24'),_0x5fc7('0x88')]}]})['then'](function(_0x1a1dfe){if(_0x1a1dfe){return _0x1a1dfe[_0x5fc7('0x1e')]({'UserId':_0x288cfc['user']['id']},{'transaction':_0x18f7bf});}});});}})[_0x5fc7('0x1f')](handleEntityNotFound(_0x56ab93,null))[_0x5fc7('0x1f')](respondWithResult(_0x56ab93,null))['catch'](handleError(_0x56ab93,null));};exports['getOpenContacts']=function(_0x1f4745,_0x5445b3,_0x239322){return _0x1f4745[_0x5fc7('0x63')][_0x5fc7('0x74')]({'where':{'type':_0x5fc7('0x89'),'dialActive':!![],'dialMethod':_0x5fc7('0x8a')},'attributes':['id'],'raw':!![]})[_0x5fc7('0x1f')](function(_0x414f6a){if(_0x414f6a&&_0x414f6a[_0x5fc7('0x53')]){return db['CmHopper'][_0x5fc7('0x18')]({'where':{'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0x5fc7('0x66')](_0x5fc7('0x67'))},'VoiceQueueId':{'$in':_[_0x5fc7('0x26')](_0x414f6a,'id')},'$or':[{'UserId':null},{'UserId':_0x1f4745[_0x5fc7('0x63')]['id']}]}});}return 0x0;})[_0x5fc7('0x1f')](function(_0x1e47f6){if(!_[_0x5fc7('0x6e')](_0x1e47f6)&&_[_0x5fc7('0x8b')](_0x1e47f6)){return _0x5445b3['status'](0xc8)['json']({'contacts':_0x1e47f6});}else{logger[_0x5fc7('0x22')](_0x5fc7('0x8c'),_0x5fc7('0x8d'),0x194,_0x5fc7('0x8e'));_0x5445b3[_0x5fc7('0x21')](0x194);}})[_0x5fc7('0x51')](handleError(_0x5445b3,null));};