Built motion from commit 19a84241.|2.5.34
[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 _0xf3b7=['preview','isNumber','json','CmHopper,\x20%s,\x20%s,\x20%s','getOpenContacts','eml-format','rimraf','fast-json-patch','mustache','util','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','undefined','offset','count','limit','set','Content-Range','update','then','destroy','error','stack','name','send','index','map','CmHopper','fieldName','type','key','model','query','keys','intersection','filters','$and','$gt','$lt','$lte','$ne','$not','$notBetween','$in','$notIn','$notLike','$iLike','$notILike','$like','$overlap','$contains','$contained','$any','fields','attributes','hasOwnProperty','order','sort','where','pick','filter','VIRTUAL','merge','options','includeAll','include','findAll','rows','catch','params','rawAttributes','length','find','create','body','describe','CampaignId','VoiceQueueId','VoiceQueue','Campaign','omit','dataValues','createdAt','state','statedesc','membername','user','UserId','deleted','deletedat','format','YYYY-MM-DD\x20HH:mm:ss','calleridnum','phone','queue','CmContact','lastName','isNil','firstName','calleridname','finally','CmHopperFinal','end','getVoiceQueues','outbound','dialOrderByScheduledAt','sequelize','transaction','direction','prev','isEmpty','hopperIds','priority','ASC','scheduledAt','DESC','literal','COALESCE(CmHopper.UserId,\x200)\x20ASC','COALESCE(CmHopper.UserId,\x200)\x20DESC','findOne','scheduledat','CmCompany','List','Queue','dialActive'];(function(_0x35d8af,_0x14fd75){var _0x1d08b0=function(_0x36b437){while(--_0x36b437){_0x35d8af['push'](_0x35d8af['shift']());}};_0x1d08b0(++_0x14fd75);}(_0xf3b7,0x1b8));var _0x7f3b=function(_0x31bfa5,_0x2f3e0d){_0x31bfa5=_0x31bfa5-0x0;var _0x3c8286=_0xf3b7[_0x31bfa5];return _0x3c8286;};'use strict';var emlformat=require(_0x7f3b('0x0'));var rimraf=require(_0x7f3b('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x7f3b('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x7f3b('0x3'));var util=require(_0x7f3b('0x4'));var path=require('path');var sox=require(_0x7f3b('0x5'));var csv=require(_0x7f3b('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x7f3b('0x7'));var _=require(_0x7f3b('0x8'));var squel=require(_0x7f3b('0x9'));var crypto=require(_0x7f3b('0xa'));var jsforce=require(_0x7f3b('0xb'));var deskjs=require(_0x7f3b('0xc'));var toCsv=require(_0x7f3b('0x6'));var querystring=require('querystring');var Papa=require(_0x7f3b('0xd'));var Redis=require(_0x7f3b('0xe'));var authService=require(_0x7f3b('0xf'));var qs=require(_0x7f3b('0x10'));var as=require(_0x7f3b('0x11'));var hardwareService=require(_0x7f3b('0x12'));var logger=require(_0x7f3b('0x13'))(_0x7f3b('0x14'));var utils=require(_0x7f3b('0x15'));var config=require(_0x7f3b('0x16'));var licenseUtil=require(_0x7f3b('0x17'));var db=require(_0x7f3b('0x18'))['db'];function respondWithStatusCode(_0x18f59f,_0x5e3e69){_0x5e3e69=_0x5e3e69||0xcc;return function(_0x2be3a0){if(_0x2be3a0){return _0x18f59f[_0x7f3b('0x19')](_0x5e3e69);}return _0x18f59f[_0x7f3b('0x1a')](_0x5e3e69)['end']();};}function respondWithResult(_0x471730,_0xdbc3d0){_0xdbc3d0=_0xdbc3d0||0xc8;return function(_0x103aa1){if(_0x103aa1){return _0x471730['status'](_0xdbc3d0)['json'](_0x103aa1);}};}function respondWithFilteredResult(_0x41e308,_0x49644b){return function(_0x5bd555){if(_0x5bd555){var _0x1a1fb4=typeof _0x49644b['offset']==='undefined'&&typeof _0x49644b['limit']===_0x7f3b('0x1b');var _0x4b841c=_0x5bd555['count'];var _0x165ae9=_0x1a1fb4?0x0:_0x49644b[_0x7f3b('0x1c')];var _0x4b6690=_0x1a1fb4?_0x5bd555[_0x7f3b('0x1d')]:_0x49644b[_0x7f3b('0x1c')]+_0x49644b[_0x7f3b('0x1e')];var _0x5347fd;if(_0x4b6690>=_0x4b841c){_0x4b6690=_0x4b841c;_0x5347fd=0xc8;}else{_0x5347fd=0xce;}_0x41e308[_0x7f3b('0x1a')](_0x5347fd);return _0x41e308[_0x7f3b('0x1f')](_0x7f3b('0x20'),_0x165ae9+'-'+_0x4b6690+'/'+_0x4b841c)['json'](_0x5bd555);}return null;};}function patchUpdates(_0x3683cc){return function(_0x2f5f18){try{jsonpatch['apply'](_0x2f5f18,_0x3683cc,!![]);}catch(_0x5e2199){return BPromise['reject'](_0x5e2199);}return _0x2f5f18['save']();};}function saveUpdates(_0x4db5c3,_0xaf4647){return function(_0x5c25cc){if(_0x5c25cc){return _0x5c25cc[_0x7f3b('0x21')](_0x4db5c3)[_0x7f3b('0x22')](function(_0x47f6ad){return _0x47f6ad;});}return null;};}function removeEntity(_0x53e364,_0x5e4c95){return function(_0x2ea975){if(_0x2ea975){return _0x2ea975[_0x7f3b('0x23')]()[_0x7f3b('0x22')](function(){_0x53e364[_0x7f3b('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x364f1f,_0x1389ee){return function(_0x1bf266){if(!_0x1bf266){_0x364f1f[_0x7f3b('0x19')](0x194);}return _0x1bf266;};}function handleError(_0x191150,_0x2a5367){_0x2a5367=_0x2a5367||0x1f4;return function(_0x3715cb){logger[_0x7f3b('0x24')](_0x3715cb[_0x7f3b('0x25')]);if(_0x3715cb[_0x7f3b('0x26')]){delete _0x3715cb[_0x7f3b('0x26')];}_0x191150[_0x7f3b('0x1a')](_0x2a5367)[_0x7f3b('0x27')](_0x3715cb);};}exports[_0x7f3b('0x28')]=function(_0x4fae43,_0x15f75b){var _0x1978d7={},_0x5d0942={},_0x5dc3e7={'count':0x0,'rows':[]};var _0x5bffa3=_[_0x7f3b('0x29')](db[_0x7f3b('0x2a')]['rawAttributes'],function(_0x120c3d){return{'name':_0x120c3d[_0x7f3b('0x2b')],'type':_0x120c3d[_0x7f3b('0x2c')][_0x7f3b('0x2d')]};});_0x5d0942[_0x7f3b('0x2e')]=_['map'](_0x5bffa3,_0x7f3b('0x26'));_0x5d0942[_0x7f3b('0x2f')]=_[_0x7f3b('0x30')](_0x4fae43[_0x7f3b('0x2f')]);_0x5d0942['filters']=_[_0x7f3b('0x31')](_0x5d0942[_0x7f3b('0x2e')],_0x5d0942[_0x7f3b('0x2f')]);_0x5d0942[_0x7f3b('0x32')]=_['concat'](_0x5d0942[_0x7f3b('0x32')],[_0x7f3b('0x33'),'$or',_0x7f3b('0x34'),'$gte',_0x7f3b('0x35'),_0x7f3b('0x36'),_0x7f3b('0x37'),'$eq',_0x7f3b('0x38'),'$between',_0x7f3b('0x39'),_0x7f3b('0x3a'),_0x7f3b('0x3b'),'$like',_0x7f3b('0x3c'),_0x7f3b('0x3d'),_0x7f3b('0x3e'),_0x7f3b('0x3f'),_0x7f3b('0x40'),_0x7f3b('0x41'),_0x7f3b('0x42'),_0x7f3b('0x43')]);_0x1978d7['attributes']=_['intersection'](_0x5d0942[_0x7f3b('0x2e')],qs[_0x7f3b('0x44')](_0x4fae43[_0x7f3b('0x2f')]['fields']));_0x1978d7[_0x7f3b('0x45')]=_0x1978d7[_0x7f3b('0x45')]['length']?_0x1978d7[_0x7f3b('0x45')]:_0x5d0942[_0x7f3b('0x2e')];if(!_0x4fae43[_0x7f3b('0x2f')][_0x7f3b('0x46')]('nolimit')){_0x1978d7[_0x7f3b('0x1e')]=qs['limit'](_0x4fae43[_0x7f3b('0x2f')][_0x7f3b('0x1e')]);_0x1978d7[_0x7f3b('0x1c')]=qs[_0x7f3b('0x1c')](_0x4fae43['query'][_0x7f3b('0x1c')]);}_0x1978d7[_0x7f3b('0x47')]=qs['sort'](_0x4fae43[_0x7f3b('0x2f')][_0x7f3b('0x48')]);_0x1978d7[_0x7f3b('0x49')]=qs[_0x7f3b('0x32')](_[_0x7f3b('0x4a')](_0x4fae43[_0x7f3b('0x2f')],_0x5d0942[_0x7f3b('0x32')]),_0x5bffa3);if(_0x4fae43['query'][_0x7f3b('0x4b')]){_0x1978d7[_0x7f3b('0x49')]=_['merge'](_0x1978d7[_0x7f3b('0x49')],{'$or':_[_0x7f3b('0x29')](_0x5bffa3,function(_0x3ccd81){if(_0x3ccd81[_0x7f3b('0x2c')]!==_0x7f3b('0x4c')){var _0x100b4b={};_0x100b4b[_0x3ccd81[_0x7f3b('0x26')]]={'$like':'%'+_0x4fae43[_0x7f3b('0x2f')]['filter']+'%'};return _0x100b4b;}})});}_0x1978d7=_[_0x7f3b('0x4d')]({},_0x1978d7,_0x4fae43[_0x7f3b('0x4e')]);var _0x400f40={'where':_0x1978d7[_0x7f3b('0x49')]};return db[_0x7f3b('0x2a')][_0x7f3b('0x1d')](_0x400f40)[_0x7f3b('0x22')](function(_0x76c801){_0x5dc3e7['count']=_0x76c801;if(_0x4fae43[_0x7f3b('0x2f')][_0x7f3b('0x4f')]){_0x1978d7[_0x7f3b('0x50')]=[{'all':!![]}];}return db[_0x7f3b('0x2a')][_0x7f3b('0x51')](_0x1978d7);})[_0x7f3b('0x22')](function(_0x511a3d){_0x5dc3e7[_0x7f3b('0x52')]=_0x511a3d;return _0x5dc3e7;})['then'](respondWithFilteredResult(_0x15f75b,_0x1978d7))[_0x7f3b('0x53')](handleError(_0x15f75b,null));};exports['show']=function(_0x46e559,_0x2b919d){var _0x1c4c75={'raw':!![],'where':{'id':_0x46e559[_0x7f3b('0x54')]['id']}},_0x59de11={};_0x59de11[_0x7f3b('0x2e')]=_[_0x7f3b('0x30')](db['CmHopper'][_0x7f3b('0x55')]);_0x59de11[_0x7f3b('0x2f')]=_[_0x7f3b('0x30')](_0x46e559[_0x7f3b('0x2f')]);_0x59de11[_0x7f3b('0x32')]=_[_0x7f3b('0x31')](_0x59de11[_0x7f3b('0x2e')],_0x59de11[_0x7f3b('0x2f')]);_0x1c4c75['attributes']=_[_0x7f3b('0x31')](_0x59de11[_0x7f3b('0x2e')],qs['fields'](_0x46e559[_0x7f3b('0x2f')][_0x7f3b('0x44')]));_0x1c4c75['attributes']=_0x1c4c75[_0x7f3b('0x45')][_0x7f3b('0x56')]?_0x1c4c75[_0x7f3b('0x45')]:_0x59de11[_0x7f3b('0x2e')];if(_0x46e559[_0x7f3b('0x2f')][_0x7f3b('0x4f')]){_0x1c4c75[_0x7f3b('0x50')]=[{'all':!![]}];}_0x1c4c75=_[_0x7f3b('0x4d')]({},_0x1c4c75,_0x46e559[_0x7f3b('0x4e')]);return db[_0x7f3b('0x2a')][_0x7f3b('0x57')](_0x1c4c75)['then'](handleEntityNotFound(_0x2b919d,null))[_0x7f3b('0x22')](respondWithResult(_0x2b919d,null))[_0x7f3b('0x53')](handleError(_0x2b919d,null));};exports[_0x7f3b('0x58')]=function(_0x5bb1b6,_0x542d3b){return db[_0x7f3b('0x2a')][_0x7f3b('0x58')](_0x5bb1b6[_0x7f3b('0x59')],{})['then'](respondWithResult(_0x542d3b,0xc9))['catch'](handleError(_0x542d3b,null));};exports[_0x7f3b('0x21')]=function(_0x306543,_0x5e4e44){if(_0x306543[_0x7f3b('0x59')]['id']){delete _0x306543[_0x7f3b('0x59')]['id'];}return db[_0x7f3b('0x2a')][_0x7f3b('0x57')]({'where':{'id':_0x306543[_0x7f3b('0x54')]['id']}})['then'](handleEntityNotFound(_0x5e4e44,null))[_0x7f3b('0x22')](saveUpdates(_0x306543['body'],null))['then'](respondWithResult(_0x5e4e44,null))['catch'](handleError(_0x5e4e44,null));};exports[_0x7f3b('0x5a')]=function(_0x4d2af4,_0x2d90f2){return db['CmHopper'][_0x7f3b('0x5a')]()[_0x7f3b('0x22')](respondWithResult(_0x2d90f2,null))[_0x7f3b('0x53')](handleError(_0x2d90f2,null));};exports['destroy']=function(_0x2038cc,_0x435c20){var _0x5c029f;return db[_0x7f3b('0x2a')]['find']({'where':{'id':_0x2038cc['params']['id']}})[_0x7f3b('0x22')](handleEntityNotFound(_0x435c20,null))['then'](function(_0x365037){if(_0x365037){return _0x365037[_0x7f3b('0x23')]()[_0x7f3b('0x22')](function(_0x253939){return _0x253939;});}})[_0x7f3b('0x22')](function(_0x2c5691){_0x5c029f=_0x2c5691;if(_0x2c5691){if(_0x2c5691['VoiceQueueId']||_0x2c5691[_0x7f3b('0x5b')]){return db[_0x2c5691[_0x7f3b('0x5c')]?_0x7f3b('0x5d'):_0x7f3b('0x5e')]['find']({'where':{'id':_0x2c5691[_0x7f3b('0x5c')]?_0x2c5691[_0x7f3b('0x5c')]:_0x2c5691[_0x7f3b('0x5b')]},'attributes':['id',_0x7f3b('0x26')],'raw':!![]});}}})['then'](function(_0x2908a1){var _0x4528ff={};if(_0x2908a1){_[_0x7f3b('0x4d')](_0x4528ff,_[_0x7f3b('0x5f')](_0x5c029f[_0x7f3b('0x60')],[_0x7f3b('0x61'),'updatedAt','id']));_0x4528ff[_0x7f3b('0x62')]=0x15;_0x4528ff[_0x7f3b('0x63')]='deleted';_0x4528ff['campaign']=_0x2908a1['name'];_0x4528ff[_0x7f3b('0x64')]=_0x2038cc[_0x7f3b('0x65')][_0x7f3b('0x26')];_0x4528ff[_0x7f3b('0x66')]=_0x2038cc[_0x7f3b('0x65')]['id'];_0x4528ff[_0x7f3b('0x67')]=!![];_0x4528ff[_0x7f3b('0x68')]=moment()[_0x7f3b('0x69')](_0x7f3b('0x6a'));_0x4528ff[_0x7f3b('0x6b')]=_0x5c029f[_0x7f3b('0x6c')];_0x4528ff['campaigntype']=_0x5c029f[_0x7f3b('0x5c')]?_0x7f3b('0x6d'):'ivr';return db[_0x7f3b('0x6e')][_0x7f3b('0x57')]({'where':{'id':_0x4528ff['ContactId']},'attributes':['firstName',_0x7f3b('0x6f')]})[_0x7f3b('0x22')](function(_0x4fc83f){if(!_[_0x7f3b('0x70')](_0x435c20)&&!_[_0x7f3b('0x70')](_0x4fc83f[_0x7f3b('0x71')])){_0x4528ff[_0x7f3b('0x72')]=_0x4fc83f[_0x7f3b('0x71')];if(!_['isNil'](_0x4fc83f[_0x7f3b('0x6f')])){_0x4528ff[_0x7f3b('0x72')]+='\x20'+_0x4fc83f[_0x7f3b('0x6f')];}}})[_0x7f3b('0x73')](function(){return db[_0x7f3b('0x74')][_0x7f3b('0x58')](_0x4528ff);});}})['then'](function(){return _0x435c20[_0x7f3b('0x1a')](0xcc)[_0x7f3b('0x75')]();})[_0x7f3b('0x53')](handleError(_0x435c20,null));};exports['getPreview']=function(_0x59a0a1,_0x1ff380,_0xd457c0){var _0xdef642=[];return db[_0x7f3b('0x6e')]['describe']()[_0x7f3b('0x22')](function(_0x131ef0){_0xdef642=_['keys'](_0x131ef0);return _0x59a0a1['user'][_0x7f3b('0x76')]({'where':{'type':_0x7f3b('0x77'),'dialActive':!![],'dialMethod':'preview'},'attributes':['id',_0x7f3b('0x78')],'raw':!![]});})[_0x7f3b('0x22')](function(_0x4f27b2){if(_0x4f27b2&&_0x4f27b2[_0x7f3b('0x56')]){return db[_0x7f3b('0x79')][_0x7f3b('0x7a')](function(_0x1d91fd){var _0x1173a7={'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0x7f3b('0x69')](_0x7f3b('0x6a'))},'VoiceQueueId':{'$in':_[_0x7f3b('0x29')](_0x4f27b2,'id')},'$or':[{'UserId':null},{'UserId':_0x59a0a1[_0x7f3b('0x65')]['id']}]};var _0x246eed=[];if(_0x59a0a1[_0x7f3b('0x59')][_0x7f3b('0x7b')]&&_0x59a0a1[_0x7f3b('0x59')]['direction']===_0x7f3b('0x7c')){if(!_[_0x7f3b('0x7d')](_0x59a0a1[_0x7f3b('0x59')][_0x7f3b('0x7e')])){_0x1173a7['id']={'$in':_0x59a0a1[_0x7f3b('0x59')][_0x7f3b('0x7e')]};}_0x246eed=[[_0x7f3b('0x7f'),_0x7f3b('0x80')],[_0x7f3b('0x81'),_0x4f27b2[0x0][_0x7f3b('0x78')]===_0x7f3b('0x80')?_0x7f3b('0x82'):_0x7f3b('0x80')],db[_0x7f3b('0x79')][_0x7f3b('0x83')](_0x7f3b('0x84')),['id',_0x7f3b('0x82')]];}else{if(!_[_0x7f3b('0x7d')](_0x59a0a1['body']['hopperIds'])){_0x1173a7['id']={'$notIn':_0x59a0a1[_0x7f3b('0x59')]['hopperIds']};}_0x246eed=[['priority',_0x7f3b('0x82')],[_0x7f3b('0x81'),_0x4f27b2[0x0][_0x7f3b('0x78')]],db['sequelize']['literal'](_0x7f3b('0x85')),['id',_0x7f3b('0x80')]];}return db['CmHopper'][_0x7f3b('0x86')]({'attributes':['id',_0x7f3b('0x87')],'where':_0x1173a7,'order':_0x246eed,'transaction':_0x1d91fd,'lock':_0x1d91fd['LOCK']['UPDATE'],'include':[{'model':db[_0x7f3b('0x6e')],'as':'Contact','attributes':_0xdef642,'include':[{'model':db[_0x7f3b('0x88')],'as':'Company','attributes':['id',_0x7f3b('0x26')]}]},{'model':db['CmList'],'as':_0x7f3b('0x89'),'attributes':['id','name']},{'model':db['VoiceQueue'],'as':_0x7f3b('0x8a'),'attributes':['id',_0x7f3b('0x26'),_0x7f3b('0x8b')]}]})['then'](function(_0x478371){if(_0x478371){return _0x478371['update']({'UserId':_0x59a0a1[_0x7f3b('0x65')]['id']},{'transaction':_0x1d91fd});}});});}})['then'](handleEntityNotFound(_0x1ff380,null))['then'](respondWithResult(_0x1ff380,null))[_0x7f3b('0x53')](handleError(_0x1ff380,null));};exports['getOpenContacts']=function(_0x39596e,_0x4464e2,_0x37797f){return _0x39596e['user']['getVoiceQueues']({'where':{'type':_0x7f3b('0x77'),'dialActive':!![],'dialMethod':_0x7f3b('0x8c')},'attributes':['id'],'raw':!![]})[_0x7f3b('0x22')](function(_0x490623){if(_0x490623&&_0x490623[_0x7f3b('0x56')]){return db[_0x7f3b('0x2a')][_0x7f3b('0x1d')]({'where':{'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0x7f3b('0x69')]('YYYY-MM-DD\x20HH:mm:ss')},'VoiceQueueId':{'$in':_['map'](_0x490623,'id')},'$or':[{'UserId':null},{'UserId':_0x39596e['user']['id']}]}});}return 0x0;})['then'](function(_0x304446){if(!_[_0x7f3b('0x70')](_0x304446)&&_[_0x7f3b('0x8d')](_0x304446)){return _0x4464e2['status'](0xc8)[_0x7f3b('0x8e')]({'contacts':_0x304446});}else{logger['error'](_0x7f3b('0x8f'),_0x7f3b('0x90'),0x194,'entity\x20not\x20found');_0x4464e2[_0x7f3b('0x19')](0x194);}})[_0x7f3b('0x53')](handleError(_0x4464e2,null));};