d037628cc72c2d514a4ecf499338e9f7ad498a10
[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 _0xc698=['crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/environment','../../mysqldb','sendStatus','end','json','offset','limit','status','Content-Range','apply','reject','update','then','destroy','stack','send','index','map','CmHopper','fieldName','type','key','name','keys','filters','model','concat','$and','$or','$gte','$lt','$lte','$ne','$eq','$not','$notBetween','$in','$notIn','$like','$iLike','$notILike','$any','attributes','query','fields','length','hasOwnProperty','nolimit','sort','where','pick','merge','VIRTUAL','count','includeAll','rows','catch','params','intersection','options','create','body','find','describe','VoiceQueueId','CampaignId','VoiceQueue','Campaign','omit','dataValues','updatedAt','statedesc','deleted','campaign','user','UserId','format','YYYY-MM-DD\x20HH:mm:ss','calleridnum','queue','ivr','CmContact','ContactId','firstName','lastName','isNil','calleridname','finally','CmHopperFinal','getPreview','getVoiceQueues','outbound','preview','dialOrderByScheduledAt','transaction','direction','prev','hopperIds','priority','ASC','scheduledAt','sequelize','literal','COALESCE(CmHopper.UserId,\x200)\x20ASC','DESC','COALESCE(CmHopper.UserId,\x200)\x20DESC','findOne','scheduledat','LOCK','UPDATE','Contact','CmCompany','Company','CmList','List','Queue','dialActive','getOpenContacts','isNumber','CmHopper,\x20%s,\x20%s,\x20%s','entity\x20not\x20found','html-pdf','eml-format','rimraf','zip-dir','fast-json-patch','bluebird','util','sox','lodash','squel'];(function(_0x47b023,_0x356089){var _0x28d7bf=function(_0x241056){while(--_0x241056){_0x47b023['push'](_0x47b023['shift']());}};_0x28d7bf(++_0x356089);}(_0xc698,0x85));var _0x8c69=function(_0x2212d1,_0x483fc8){_0x2212d1=_0x2212d1-0x0;var _0x15eec5=_0xc698[_0x2212d1];return _0x15eec5;};'use strict';var pdf=require(_0x8c69('0x0'));var emlformat=require(_0x8c69('0x1'));var rimraf=require(_0x8c69('0x2'));var zipdir=require(_0x8c69('0x3'));var jsonpatch=require(_0x8c69('0x4'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x8c69('0x5'));var Mustache=require('mustache');var util=require(_0x8c69('0x6'));var path=require('path');var sox=require(_0x8c69('0x7'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var _=require(_0x8c69('0x8'));var squel=require(_0x8c69('0x9'));var crypto=require(_0x8c69('0xa'));var jsforce=require(_0x8c69('0xb'));var deskjs=require(_0x8c69('0xc'));var toCsv=require(_0x8c69('0xd'));var querystring=require(_0x8c69('0xe'));var Papa=require(_0x8c69('0xf'));var Redis=require(_0x8c69('0x10'));var authService=require(_0x8c69('0x11'));var qs=require(_0x8c69('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x8c69('0x13'));var logger=require(_0x8c69('0x14'))(_0x8c69('0x15'));var utils=require('../../config/utils');var config=require(_0x8c69('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0x8c69('0x17'))['db'];function respondWithStatusCode(_0x5886d3,_0x33e020){_0x33e020=_0x33e020||0xcc;return function(_0x5bbd63){if(_0x5bbd63){return _0x5886d3[_0x8c69('0x18')](_0x33e020);}return _0x5886d3['status'](_0x33e020)[_0x8c69('0x19')]();};}function respondWithResult(_0x44fd99,_0x5e8143){_0x5e8143=_0x5e8143||0xc8;return function(_0x1147cb){if(_0x1147cb){return _0x44fd99['status'](_0x5e8143)[_0x8c69('0x1a')](_0x1147cb);}};}function respondWithFilteredResult(_0x30254b,_0x11f45f){return function(_0x3a765c){if(_0x3a765c){var _0x557918=_0x3a765c['count'],_0x29d012=_0x11f45f[_0x8c69('0x1b')],_0x234cad=_0x11f45f[_0x8c69('0x1b')]+_0x11f45f[_0x8c69('0x1c')],_0x388859;if(_0x234cad>=_0x557918){_0x234cad=_0x557918;_0x388859=0xc8;}else{_0x388859=0xce;}_0x30254b[_0x8c69('0x1d')](_0x388859);return _0x30254b['set'](_0x8c69('0x1e'),_0x29d012+'-'+_0x234cad+'/'+_0x557918)[_0x8c69('0x1a')](_0x3a765c);}return null;};}function patchUpdates(_0x39ac97){return function(_0x32b90d){try{jsonpatch[_0x8c69('0x1f')](_0x32b90d,_0x39ac97,!![]);}catch(_0x479680){return BPromise[_0x8c69('0x20')](_0x479680);}return _0x32b90d['save']();};}function saveUpdates(_0x5bd3bf,_0x2b2bbe){return function(_0x200ad4){if(_0x200ad4){return _0x200ad4[_0x8c69('0x21')](_0x5bd3bf)[_0x8c69('0x22')](function(_0x5310e4){return _0x5310e4;});}return null;};}function removeEntity(_0x327ce4,_0x34d2fd){return function(_0x9718bf){if(_0x9718bf){return _0x9718bf[_0x8c69('0x23')]()[_0x8c69('0x22')](function(){_0x327ce4[_0x8c69('0x1d')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3fdadd,_0x2590d6){return function(_0x51cc1e){if(!_0x51cc1e){_0x3fdadd[_0x8c69('0x18')](0x194);}return _0x51cc1e;};}function handleError(_0x2ee467,_0x324e2b){_0x324e2b=_0x324e2b||0x1f4;return function(_0x5373b7){logger['error'](_0x5373b7[_0x8c69('0x24')]);if(_0x5373b7['name']){delete _0x5373b7['name'];}_0x2ee467['status'](_0x324e2b)[_0x8c69('0x25')](_0x5373b7);};}exports[_0x8c69('0x26')]=function(_0xa3d4df,_0x1383a0){var _0x1f0837={},_0xdbaa79={},_0x2d144f={'count':0x0,'rows':[]};var _0x30d2ef=_[_0x8c69('0x27')](db[_0x8c69('0x28')]['rawAttributes'],function(_0x1155e2){return{'name':_0x1155e2[_0x8c69('0x29')],'type':_0x1155e2[_0x8c69('0x2a')][_0x8c69('0x2b')]};});_0xdbaa79['model']=_[_0x8c69('0x27')](_0x30d2ef,_0x8c69('0x2c'));_0xdbaa79['query']=_[_0x8c69('0x2d')](_0xa3d4df['query']);_0xdbaa79[_0x8c69('0x2e')]=_['intersection'](_0xdbaa79[_0x8c69('0x2f')],_0xdbaa79['query']);_0xdbaa79['filters']=_[_0x8c69('0x30')](_0xdbaa79['filters'],[_0x8c69('0x31'),_0x8c69('0x32'),'$gt',_0x8c69('0x33'),_0x8c69('0x34'),_0x8c69('0x35'),_0x8c69('0x36'),_0x8c69('0x37'),_0x8c69('0x38'),'$between',_0x8c69('0x39'),_0x8c69('0x3a'),_0x8c69('0x3b'),_0x8c69('0x3c'),'$notLike',_0x8c69('0x3d'),_0x8c69('0x3e'),'$like','$overlap','$contains','$contained',_0x8c69('0x3f')]);_0x1f0837[_0x8c69('0x40')]=_['intersection'](_0xdbaa79['model'],qs['fields'](_0xa3d4df[_0x8c69('0x41')][_0x8c69('0x42')]));_0x1f0837['attributes']=_0x1f0837['attributes'][_0x8c69('0x43')]?_0x1f0837[_0x8c69('0x40')]:_0xdbaa79[_0x8c69('0x2f')];if(!_0xa3d4df['query'][_0x8c69('0x44')](_0x8c69('0x45'))){_0x1f0837[_0x8c69('0x1c')]=qs[_0x8c69('0x1c')](_0xa3d4df[_0x8c69('0x41')][_0x8c69('0x1c')]);_0x1f0837[_0x8c69('0x1b')]=qs['offset'](_0xa3d4df[_0x8c69('0x41')][_0x8c69('0x1b')]);}_0x1f0837['order']=qs[_0x8c69('0x46')](_0xa3d4df[_0x8c69('0x41')][_0x8c69('0x46')]);_0x1f0837[_0x8c69('0x47')]=qs['filters'](_[_0x8c69('0x48')](_0xa3d4df[_0x8c69('0x41')],_0xdbaa79[_0x8c69('0x2e')]),_0x30d2ef);if(_0xa3d4df[_0x8c69('0x41')]['filter']){_0x1f0837[_0x8c69('0x47')]=_[_0x8c69('0x49')](_0x1f0837[_0x8c69('0x47')],{'$or':_[_0x8c69('0x27')](_0x30d2ef,function(_0x2b6655){if(_0x2b6655[_0x8c69('0x2a')]!==_0x8c69('0x4a')){var _0x575172={};_0x575172[_0x2b6655[_0x8c69('0x2c')]]={'$like':'%'+_0xa3d4df['query']['filter']+'%'};return _0x575172;}})});}_0x1f0837=_[_0x8c69('0x49')]({},_0x1f0837,_0xa3d4df['options']);var _0x49b9ec={'where':_0x1f0837['where']};return db[_0x8c69('0x28')][_0x8c69('0x4b')](_0x49b9ec)[_0x8c69('0x22')](function(_0x5cd86f){_0x2d144f['count']=_0x5cd86f;if(_0xa3d4df['query'][_0x8c69('0x4c')]){_0x1f0837['include']=[{'all':!![]}];}return db['CmHopper']['findAll'](_0x1f0837);})[_0x8c69('0x22')](function(_0xd90d03){_0x2d144f[_0x8c69('0x4d')]=_0xd90d03;return _0x2d144f;})[_0x8c69('0x22')](respondWithFilteredResult(_0x1383a0,_0x1f0837))[_0x8c69('0x4e')](handleError(_0x1383a0,null));};exports['show']=function(_0x5a6475,_0x444513){var _0x442eaf={'raw':!![],'where':{'id':_0x5a6475[_0x8c69('0x4f')]['id']}},_0x1042aa={};_0x1042aa[_0x8c69('0x2f')]=_['keys'](db[_0x8c69('0x28')]['rawAttributes']);_0x1042aa[_0x8c69('0x41')]=_[_0x8c69('0x2d')](_0x5a6475['query']);_0x1042aa[_0x8c69('0x2e')]=_[_0x8c69('0x50')](_0x1042aa[_0x8c69('0x2f')],_0x1042aa[_0x8c69('0x41')]);_0x442eaf['attributes']=_[_0x8c69('0x50')](_0x1042aa[_0x8c69('0x2f')],qs[_0x8c69('0x42')](_0x5a6475[_0x8c69('0x41')][_0x8c69('0x42')]));_0x442eaf[_0x8c69('0x40')]=_0x442eaf[_0x8c69('0x40')][_0x8c69('0x43')]?_0x442eaf[_0x8c69('0x40')]:_0x1042aa[_0x8c69('0x2f')];if(_0x5a6475[_0x8c69('0x41')][_0x8c69('0x4c')]){_0x442eaf['include']=[{'all':!![]}];}_0x442eaf=_[_0x8c69('0x49')]({},_0x442eaf,_0x5a6475[_0x8c69('0x51')]);return db['CmHopper']['find'](_0x442eaf)[_0x8c69('0x22')](handleEntityNotFound(_0x444513,null))['then'](respondWithResult(_0x444513,null))[_0x8c69('0x4e')](handleError(_0x444513,null));};exports['create']=function(_0x4f28a9,_0x5c9418){return db['CmHopper'][_0x8c69('0x52')](_0x4f28a9[_0x8c69('0x53')],{})['then'](respondWithResult(_0x5c9418,0xc9))['catch'](handleError(_0x5c9418,null));};exports[_0x8c69('0x21')]=function(_0x2be1fb,_0x4c7614){if(_0x2be1fb[_0x8c69('0x53')]['id']){delete _0x2be1fb['body']['id'];}return db[_0x8c69('0x28')][_0x8c69('0x54')]({'where':{'id':_0x2be1fb['params']['id']}})[_0x8c69('0x22')](handleEntityNotFound(_0x4c7614,null))[_0x8c69('0x22')](saveUpdates(_0x2be1fb[_0x8c69('0x53')],null))[_0x8c69('0x22')](respondWithResult(_0x4c7614,null))[_0x8c69('0x4e')](handleError(_0x4c7614,null));};exports['describe']=function(_0x390d04,_0x57fc7b){return db[_0x8c69('0x28')][_0x8c69('0x55')]()[_0x8c69('0x22')](respondWithResult(_0x57fc7b,null))['catch'](handleError(_0x57fc7b,null));};exports[_0x8c69('0x23')]=function(_0x27d013,_0xaf6404){var _0x25a93f;return db[_0x8c69('0x28')][_0x8c69('0x54')]({'where':{'id':_0x27d013[_0x8c69('0x4f')]['id']}})[_0x8c69('0x22')](handleEntityNotFound(_0xaf6404,null))[_0x8c69('0x22')](function(_0x513116){if(_0x513116){return _0x513116[_0x8c69('0x23')]()[_0x8c69('0x22')](function(_0x5c822b){return _0x5c822b;});}})[_0x8c69('0x22')](function(_0x5cdee){_0x25a93f=_0x5cdee;if(_0x5cdee){if(_0x5cdee[_0x8c69('0x56')]||_0x5cdee[_0x8c69('0x57')]){return db[_0x5cdee[_0x8c69('0x56')]?_0x8c69('0x58'):_0x8c69('0x59')][_0x8c69('0x54')]({'where':{'id':_0x5cdee[_0x8c69('0x56')]?_0x5cdee[_0x8c69('0x56')]:_0x5cdee[_0x8c69('0x57')]},'attributes':['id',_0x8c69('0x2c')],'raw':!![]});}}})[_0x8c69('0x22')](function(_0x46c0eb){var _0x5aeb05={};if(_0x46c0eb){_[_0x8c69('0x49')](_0x5aeb05,_[_0x8c69('0x5a')](_0x25a93f[_0x8c69('0x5b')],['createdAt',_0x8c69('0x5c'),'id']));_0x5aeb05['state']=0x15;_0x5aeb05[_0x8c69('0x5d')]=_0x8c69('0x5e');_0x5aeb05[_0x8c69('0x5f')]=_0x46c0eb['name'];_0x5aeb05['membername']=_0x27d013[_0x8c69('0x60')]['name'];_0x5aeb05[_0x8c69('0x61')]=_0x27d013['user']['id'];_0x5aeb05['deleted']=!![];_0x5aeb05['deletedat']=moment()[_0x8c69('0x62')](_0x8c69('0x63'));_0x5aeb05[_0x8c69('0x64')]=_0x25a93f['phone'];_0x5aeb05['campaigntype']=_0x25a93f[_0x8c69('0x56')]?_0x8c69('0x65'):_0x8c69('0x66');return db[_0x8c69('0x67')][_0x8c69('0x54')]({'where':{'id':_0x5aeb05[_0x8c69('0x68')]},'attributes':[_0x8c69('0x69'),_0x8c69('0x6a')]})['then'](function(_0x1a1736){if(!_[_0x8c69('0x6b')](_0xaf6404)&&!_[_0x8c69('0x6b')](_0x1a1736[_0x8c69('0x69')])){_0x5aeb05[_0x8c69('0x6c')]=_0x1a1736[_0x8c69('0x69')];if(!_[_0x8c69('0x6b')](_0x1a1736['lastName'])){_0x5aeb05[_0x8c69('0x6c')]+='\x20'+_0x1a1736[_0x8c69('0x6a')];}}})[_0x8c69('0x6d')](function(){return db[_0x8c69('0x6e')][_0x8c69('0x52')](_0x5aeb05);});}})[_0x8c69('0x22')](function(){return _0xaf6404[_0x8c69('0x1d')](0xcc)[_0x8c69('0x19')]();})[_0x8c69('0x4e')](handleError(_0xaf6404,null));};exports[_0x8c69('0x6f')]=function(_0x1745ef,_0x811ef7,_0xaaaf99){var _0x1573c2=[];return db[_0x8c69('0x67')]['describe']()[_0x8c69('0x22')](function(_0x1efc1e){_0x1573c2=_[_0x8c69('0x2d')](_0x1efc1e);return _0x1745ef['user'][_0x8c69('0x70')]({'where':{'type':_0x8c69('0x71'),'dialActive':!![],'dialMethod':_0x8c69('0x72')},'attributes':['id',_0x8c69('0x73')],'raw':!![]});})[_0x8c69('0x22')](function(_0x1449df){if(_0x1449df&&_0x1449df['length']){return db['sequelize'][_0x8c69('0x74')](function(_0x250b3f){var _0x38f9cd={'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0x8c69('0x62')](_0x8c69('0x63'))},'VoiceQueueId':{'$in':_[_0x8c69('0x27')](_0x1449df,'id')},'$or':[{'UserId':null},{'UserId':_0x1745ef[_0x8c69('0x60')]['id']}]};var _0x24295d=[];if(_0x1745ef[_0x8c69('0x53')][_0x8c69('0x75')]&&_0x1745ef['body'][_0x8c69('0x75')]===_0x8c69('0x76')){if(!_['isEmpty'](_0x1745ef[_0x8c69('0x53')][_0x8c69('0x77')])){_0x38f9cd['id']={'$in':_0x1745ef[_0x8c69('0x53')][_0x8c69('0x77')]};}_0x24295d=[[_0x8c69('0x78'),_0x8c69('0x79')],[_0x8c69('0x7a'),_0x1449df[0x0][_0x8c69('0x73')]===_0x8c69('0x79')?'DESC':_0x8c69('0x79')],db[_0x8c69('0x7b')][_0x8c69('0x7c')](_0x8c69('0x7d')),['id',_0x8c69('0x7e')]];}else{if(!_['isEmpty'](_0x1745ef[_0x8c69('0x53')][_0x8c69('0x77')])){_0x38f9cd['id']={'$notIn':_0x1745ef[_0x8c69('0x53')]['hopperIds']};}_0x24295d=[['priority',_0x8c69('0x7e')],['scheduledAt',_0x1449df[0x0][_0x8c69('0x73')]],db[_0x8c69('0x7b')]['literal'](_0x8c69('0x7f')),['id',_0x8c69('0x79')]];}return db[_0x8c69('0x28')][_0x8c69('0x80')]({'attributes':['id',_0x8c69('0x81')],'where':_0x38f9cd,'order':_0x24295d,'transaction':_0x250b3f,'lock':_0x250b3f[_0x8c69('0x82')][_0x8c69('0x83')],'include':[{'model':db[_0x8c69('0x67')],'as':_0x8c69('0x84'),'attributes':_0x1573c2,'include':[{'model':db[_0x8c69('0x85')],'as':_0x8c69('0x86'),'attributes':['id','name']}]},{'model':db[_0x8c69('0x87')],'as':_0x8c69('0x88'),'attributes':['id',_0x8c69('0x2c')]},{'model':db[_0x8c69('0x58')],'as':_0x8c69('0x89'),'attributes':['id','name',_0x8c69('0x8a')]}]})[_0x8c69('0x22')](function(_0x17f1e5){if(_0x17f1e5){return _0x17f1e5[_0x8c69('0x21')]({'UserId':_0x1745ef['user']['id']},{'transaction':_0x250b3f});}});});}})['then'](handleEntityNotFound(_0x811ef7,null))[_0x8c69('0x22')](respondWithResult(_0x811ef7,null))[_0x8c69('0x4e')](handleError(_0x811ef7,null));};exports[_0x8c69('0x8b')]=function(_0x25bd19,_0x2b8df3,_0x232ae8){return _0x25bd19[_0x8c69('0x60')][_0x8c69('0x70')]({'where':{'type':_0x8c69('0x71'),'dialActive':!![],'dialMethod':_0x8c69('0x72')},'attributes':['id'],'raw':!![]})[_0x8c69('0x22')](function(_0x5095d0){if(_0x5095d0&&_0x5095d0[_0x8c69('0x43')]){return db[_0x8c69('0x28')][_0x8c69('0x4b')]({'where':{'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0x8c69('0x62')](_0x8c69('0x63'))},'VoiceQueueId':{'$in':_[_0x8c69('0x27')](_0x5095d0,'id')},'$or':[{'UserId':null},{'UserId':_0x25bd19[_0x8c69('0x60')]['id']}]}});}return 0x0;})[_0x8c69('0x22')](function(_0x306a0d){if(!_[_0x8c69('0x6b')](_0x306a0d)&&_[_0x8c69('0x8c')](_0x306a0d)){return _0x2b8df3[_0x8c69('0x1d')](0xc8)['json']({'contacts':_0x306a0d});}else{logger['error'](_0x8c69('0x8d'),'getOpenContacts',0x194,_0x8c69('0x8e'));_0x2b8df3[_0x8c69('0x18')](0x194);}})[_0x8c69('0x4e')](handleError(_0x2b8df3,null));};