6f2ffa45658127c3007cb537e61e4f3005e7d55d
[motion2.git] / server / api / cmHopperFinal / cmHopperFinal.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 _0xa32b=['../../components/parsers/advancedSearch','../../config/logger','../../config/utils','sendStatus','status','json','count','set','Content-Range','apply','update','then','end','stack','name','send','index','map','CmHopperFinal','rawAttributes','fieldName','key','model','query','intersection','attributes','fields','length','nolimit','limit','offset','order','sort','pick','filters','filter','where','type','merge','options','includeAll','include','rows','catch','show','describe','body','uniqueid','find','params','findAll','sequelize','COUNT','`state`\x20=\x200,\x201,\x20null','noSuchContacts','literal','`state`\x20=\x203,\x201,\x20null','noAnswerContacts','`state`\x20=\x205,\x201,\x20null','congestionContacts','`state`\x20=\x2010\x20,\x201,\x20null','dropContacts','abandonedContacts','reCallContacts','`state`\x20=\x2019,\x201,\x20null','countContactsIvrCampaignHopperFinal','busyContacts','`state`\x20=\x2011\x20,\x201,\x20null','`state`\x20=\x2022,\x201,\x20null','answeringMachine','moveContactsQueueCampaignHopperFinal','VoiceQueue','insert','into','cm_hopper','fromQuery','phone','scheduledAt','ContactId','ListId','VoiceQueueId','updatedAt','select','field','ANY_VALUE(calleridnum)','NOW()','ANY_VALUE(ContactId)','createdAt','cm_hopper_final','toString','calleridnum\x20IS\x20NOT\x20NULL','calleridnum\x20NOT\x20IN\x20(?)','from','calleridnum','group','moveContactsIvrCampaignHopperFinal','CampaignId','ANY_VALUE(ListId)','ANY_VALUE(CampaignId)','CampaignId\x20=\x20?','state','state\x20=\x204','checkContactHopper','CmHopper','html-pdf','rimraf','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','squel','jsforce','desk.js','querystring'];(function(_0x51674a,_0x77ccff){var _0x13fca6=function(_0x3d6c27){while(--_0x3d6c27){_0x51674a['push'](_0x51674a['shift']());}};_0x13fca6(++_0x77ccff);}(_0xa32b,0x68));var _0xba32=function(_0x4bbaba,_0x15097c){_0x4bbaba=_0x4bbaba-0x0;var _0x34ff2b=_0xa32b[_0x4bbaba];return _0x34ff2b;};'use strict';var pdf=require(_0xba32('0x0'));var emlformat=require('eml-format');var rimraf=require(_0xba32('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xba32('0x2'));var moment=require(_0xba32('0x3'));var BPromise=require(_0xba32('0x4'));var Mustache=require('mustache');var util=require(_0xba32('0x5'));var path=require(_0xba32('0x6'));var sox=require(_0xba32('0x7'));var csv=require(_0xba32('0x8'));var ejs=require(_0xba32('0x9'));var fs=require('fs');var _=require('lodash');var squel=require(_0xba32('0xa'));var crypto=require('crypto');var jsforce=require(_0xba32('0xb'));var deskjs=require(_0xba32('0xc'));var toCsv=require(_0xba32('0x8'));var querystring=require(_0xba32('0xd'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xba32('0xe'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xba32('0xf'))('api');var utils=require(_0xba32('0x10'));var config=require('../../config/environment');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x23b3e9,_0x18ae07){_0x18ae07=_0x18ae07||0xcc;return function(_0x46f042){if(_0x46f042){return _0x23b3e9[_0xba32('0x11')](_0x18ae07);}return _0x23b3e9[_0xba32('0x12')](_0x18ae07)['end']();};}function respondWithResult(_0x4573d1,_0x3f9bef){_0x3f9bef=_0x3f9bef||0xc8;return function(_0x43652a){if(_0x43652a){return _0x4573d1[_0xba32('0x12')](_0x3f9bef)[_0xba32('0x13')](_0x43652a);}};}function respondWithFilteredResult(_0x184f31,_0x11d280){return function(_0x5c0bd8){if(_0x5c0bd8){var _0x176763=_0x5c0bd8[_0xba32('0x14')],_0x22c2be=_0x11d280['offset'],_0x3d3ebe=_0x11d280['offset']+_0x11d280['limit'],_0xd8e067;if(_0x3d3ebe>=_0x176763){_0x3d3ebe=_0x176763;_0xd8e067=0xc8;}else{_0xd8e067=0xce;}_0x184f31['status'](_0xd8e067);return _0x184f31[_0xba32('0x15')](_0xba32('0x16'),_0x22c2be+'-'+_0x3d3ebe+'/'+_0x176763)[_0xba32('0x13')](_0x5c0bd8);}return null;};}function patchUpdates(_0x295ad3){return function(_0x751145){try{jsonpatch[_0xba32('0x17')](_0x751145,_0x295ad3,!![]);}catch(_0x47f903){return BPromise['reject'](_0x47f903);}return _0x751145['save']();};}function saveUpdates(_0x10de9c,_0x51c43a){return function(_0x44e11c){if(_0x44e11c){return _0x44e11c[_0xba32('0x18')](_0x10de9c)[_0xba32('0x19')](function(_0x27d3d6){return _0x27d3d6;});}return null;};}function removeEntity(_0x3a41b6,_0x34124d){return function(_0xdfa807){if(_0xdfa807){return _0xdfa807['destroy']()[_0xba32('0x19')](function(){_0x3a41b6[_0xba32('0x12')](0xcc)[_0xba32('0x1a')]();});}};}function handleEntityNotFound(_0x171626,_0x5eb640){return function(_0x4b03a5){if(!_0x4b03a5){_0x171626[_0xba32('0x11')](0x194);}return _0x4b03a5;};}function handleError(_0x3a8f30,_0x4cfd59){_0x4cfd59=_0x4cfd59||0x1f4;return function(_0x15f59e){logger['error'](_0x15f59e[_0xba32('0x1b')]);if(_0x15f59e[_0xba32('0x1c')]){delete _0x15f59e[_0xba32('0x1c')];}_0x3a8f30[_0xba32('0x12')](_0x4cfd59)[_0xba32('0x1d')](_0x15f59e);};}exports[_0xba32('0x1e')]=function(_0x2ebb91,_0x54d03d){var _0x1e470={},_0x424369={},_0x2c93b6={'count':0x0,'rows':[]};var _0x26c724=_[_0xba32('0x1f')](db[_0xba32('0x20')][_0xba32('0x21')],function(_0xd00fcd){return{'name':_0xd00fcd[_0xba32('0x22')],'type':_0xd00fcd['type'][_0xba32('0x23')]};});_0x424369[_0xba32('0x24')]=_[_0xba32('0x1f')](_0x26c724,_0xba32('0x1c'));_0x424369[_0xba32('0x25')]=_['keys'](_0x2ebb91[_0xba32('0x25')]);_0x424369['filters']=_[_0xba32('0x26')](_0x424369[_0xba32('0x24')],_0x424369['query']);_0x1e470[_0xba32('0x27')]=_[_0xba32('0x26')](_0x424369[_0xba32('0x24')],qs[_0xba32('0x28')](_0x2ebb91['query'][_0xba32('0x28')]));_0x1e470[_0xba32('0x27')]=_0x1e470['attributes'][_0xba32('0x29')]?_0x1e470[_0xba32('0x27')]:_0x424369[_0xba32('0x24')];if(!_0x2ebb91[_0xba32('0x25')]['hasOwnProperty'](_0xba32('0x2a'))){_0x1e470['limit']=qs[_0xba32('0x2b')](_0x2ebb91[_0xba32('0x25')][_0xba32('0x2b')]);_0x1e470['offset']=qs[_0xba32('0x2c')](_0x2ebb91[_0xba32('0x25')]['offset']);}_0x1e470[_0xba32('0x2d')]=qs[_0xba32('0x2e')](_0x2ebb91[_0xba32('0x25')][_0xba32('0x2e')]);_0x1e470['where']=qs['filters'](_[_0xba32('0x2f')](_0x2ebb91['query'],_0x424369[_0xba32('0x30')]),_0x26c724);if(_0x2ebb91[_0xba32('0x25')][_0xba32('0x31')]){_0x1e470[_0xba32('0x32')]=_['merge'](_0x1e470[_0xba32('0x32')],{'$or':_[_0xba32('0x1f')](_0x26c724,function(_0x3a705e){if(_0x3a705e[_0xba32('0x33')]!=='VIRTUAL'){var _0x5786bc={};_0x5786bc[_0x3a705e[_0xba32('0x1c')]]={'$like':'%'+_0x2ebb91[_0xba32('0x25')][_0xba32('0x31')]+'%'};return _0x5786bc;}})});}_0x1e470=_[_0xba32('0x34')]({},_0x1e470,_0x2ebb91[_0xba32('0x35')]);var _0xd5f05d={'where':_0x1e470[_0xba32('0x32')]};return db[_0xba32('0x20')][_0xba32('0x14')](_0xd5f05d)[_0xba32('0x19')](function(_0xb7e4bb){_0x2c93b6['count']=_0xb7e4bb;if(_0x2ebb91[_0xba32('0x25')][_0xba32('0x36')]){_0x1e470[_0xba32('0x37')]=[{'all':!![]}];}return db[_0xba32('0x20')]['findAll'](_0x1e470);})[_0xba32('0x19')](function(_0x5ceb9f){_0x2c93b6[_0xba32('0x38')]=_0x5ceb9f;return _0x2c93b6;})['then'](respondWithFilteredResult(_0x54d03d,_0x1e470))[_0xba32('0x39')](handleError(_0x54d03d,null));};exports[_0xba32('0x3a')]=function(_0x2d9150,_0x33faae){var _0x26284e={'raw':!![],'where':{'id':_0x2d9150['params']['id']}},_0x40f478={};_0x40f478[_0xba32('0x24')]=_['keys'](db[_0xba32('0x20')][_0xba32('0x21')]);_0x40f478[_0xba32('0x25')]=_['keys'](_0x2d9150[_0xba32('0x25')]);_0x40f478[_0xba32('0x30')]=_['intersection'](_0x40f478[_0xba32('0x24')],_0x40f478[_0xba32('0x25')]);_0x26284e[_0xba32('0x27')]=_['intersection'](_0x40f478[_0xba32('0x24')],qs[_0xba32('0x28')](_0x2d9150['query'][_0xba32('0x28')]));_0x26284e[_0xba32('0x27')]=_0x26284e[_0xba32('0x27')][_0xba32('0x29')]?_0x26284e['attributes']:_0x40f478[_0xba32('0x24')];if(_0x2d9150[_0xba32('0x25')]['includeAll']){_0x26284e[_0xba32('0x37')]=[{'all':!![]}];}_0x26284e=_[_0xba32('0x34')]({},_0x26284e,_0x2d9150['options']);return db[_0xba32('0x20')]['find'](_0x26284e)[_0xba32('0x19')](handleEntityNotFound(_0x33faae,null))[_0xba32('0x19')](respondWithResult(_0x33faae,null))[_0xba32('0x39')](handleError(_0x33faae,null));};exports[_0xba32('0x3b')]=function(_0x245335,_0x3c3161){return db['CmHopperFinal'][_0xba32('0x3b')]()[_0xba32('0x19')](respondWithResult(_0x3c3161,null))[_0xba32('0x39')](handleError(_0x3c3161,null));};exports[_0xba32('0x18')]=function(_0x2850fe,_0x4a7d85){if(_0x2850fe[_0xba32('0x3c')][_0xba32('0x3d')]){delete _0x2850fe[_0xba32('0x3c')]['uniqueid'];}return db['CmHopperFinal'][_0xba32('0x3e')]({'where':{'uniqueid':_0x2850fe[_0xba32('0x3f')]['id']}})['then'](handleEntityNotFound(_0x4a7d85,null))['then'](saveUpdates(_0x2850fe[_0xba32('0x3c')],null))[_0xba32('0x19')](respondWithResult(_0x4a7d85,null))[_0xba32('0x39')](handleError(_0x4a7d85,null));};exports['countContactsQueueCampaignHopperFinal']=function(_0x5488b8,_0x284848,_0x2bdc42){return db[_0xba32('0x20')][_0xba32('0x40')]({'raw':![],'where':{'VoiceQueueId':_0x5488b8['params']['id']},'attributes':[[db[_0xba32('0x41')]['fn'](_0xba32('0x42'),db[_0xba32('0x41')]['fn']('IF',db[_0xba32('0x41')]['literal'](_0xba32('0x43')))),_0xba32('0x44')],[db[_0xba32('0x41')]['fn'](_0xba32('0x42'),db['sequelize']['fn']('IF',db[_0xba32('0x41')][_0xba32('0x45')](_0xba32('0x46')))),_0xba32('0x47')],[db[_0xba32('0x41')]['fn']('COUNT',db[_0xba32('0x41')]['fn']('IF',db[_0xba32('0x41')][_0xba32('0x45')](_0xba32('0x48')))),'busyContacts'],[db[_0xba32('0x41')]['fn'](_0xba32('0x42'),db[_0xba32('0x41')]['fn']('IF',db[_0xba32('0x41')]['literal']('`state`\x20=\x208,\x201,\x20null'))),_0xba32('0x49')],[db[_0xba32('0x41')]['fn'](_0xba32('0x42'),db[_0xba32('0x41')]['fn']('IF',db[_0xba32('0x41')]['literal'](_0xba32('0x4a')))),_0xba32('0x4b')],[db[_0xba32('0x41')]['fn'](_0xba32('0x42'),db['sequelize']['fn']('IF',db[_0xba32('0x41')][_0xba32('0x45')]('`state`\x20=\x2011\x20,\x201,\x20null'))),_0xba32('0x4c')],[db['sequelize']['fn']('COUNT',db[_0xba32('0x41')]['fn']('IF',db[_0xba32('0x41')][_0xba32('0x45')]('`state`\x20=\x2022,\x201,\x20null'))),_0xba32('0x4d')],[db[_0xba32('0x41')]['fn'](_0xba32('0x42'),db[_0xba32('0x41')]['fn']('IF',db[_0xba32('0x41')]['literal'](_0xba32('0x4e')))),'answeringMachine']]})[_0xba32('0x19')](handleEntityNotFound(_0x284848,null))[_0xba32('0x19')](respondWithResult(_0x284848,null))[_0xba32('0x39')](handleError(_0x284848,null));};exports[_0xba32('0x4f')]=function(_0x33155e,_0x3356eb,_0x138eb1){return db[_0xba32('0x20')][_0xba32('0x40')]({'raw':![],'where':{'CampaignId':_0x33155e[_0xba32('0x3f')]['id']},'attributes':[[db[_0xba32('0x41')]['fn'](_0xba32('0x42'),db[_0xba32('0x41')]['fn']('IF',db[_0xba32('0x41')][_0xba32('0x45')](_0xba32('0x43')))),'noSuchContacts'],[db['sequelize']['fn'](_0xba32('0x42'),db[_0xba32('0x41')]['fn']('IF',db[_0xba32('0x41')][_0xba32('0x45')](_0xba32('0x46')))),_0xba32('0x47')],[db[_0xba32('0x41')]['fn']('COUNT',db[_0xba32('0x41')]['fn']('IF',db[_0xba32('0x41')][_0xba32('0x45')](_0xba32('0x48')))),_0xba32('0x50')],[db[_0xba32('0x41')]['fn']('COUNT',db[_0xba32('0x41')]['fn']('IF',db[_0xba32('0x41')][_0xba32('0x45')]('`state`\x20=\x208,\x201,\x20null'))),_0xba32('0x49')],[db['sequelize']['fn'](_0xba32('0x42'),db['sequelize']['fn']('IF',db['sequelize'][_0xba32('0x45')](_0xba32('0x4a')))),'dropContacts'],[db[_0xba32('0x41')]['fn']('COUNT',db[_0xba32('0x41')]['fn']('IF',db[_0xba32('0x41')][_0xba32('0x45')](_0xba32('0x51')))),_0xba32('0x4c')],[db[_0xba32('0x41')]['fn'](_0xba32('0x42'),db[_0xba32('0x41')]['fn']('IF',db[_0xba32('0x41')][_0xba32('0x45')](_0xba32('0x52')))),_0xba32('0x4d')],[db[_0xba32('0x41')]['fn'](_0xba32('0x42'),db[_0xba32('0x41')]['fn']('IF',db['sequelize'][_0xba32('0x45')](_0xba32('0x4e')))),_0xba32('0x53')]]})[_0xba32('0x19')](handleEntityNotFound(_0x3356eb,null))[_0xba32('0x19')](respondWithResult(_0x3356eb,null))[_0xba32('0x39')](handleError(_0x3356eb,null));};exports[_0xba32('0x54')]=function(_0x48c0c8,_0x23f97c,_0x309f81){return db[_0xba32('0x55')][_0xba32('0x3e')]({'where':{'id':_0x48c0c8['params']['id']}})[_0xba32('0x19')](handleEntityNotFound(_0x23f97c,null))[_0xba32('0x19')](function(_0x4b133b){var _0x5aeb58;if(_0x4b133b){_0x5aeb58=squel[_0xba32('0x56')]()[_0xba32('0x57')](_0xba32('0x58'))[_0xba32('0x59')]([_0xba32('0x5a'),_0xba32('0x5b'),_0xba32('0x5c'),_0xba32('0x5d'),_0xba32('0x5e'),'createdAt',_0xba32('0x5f')],squel[_0xba32('0x60')]()[_0xba32('0x61')](_0xba32('0x62'),'phone')['field'](_0xba32('0x63'),_0xba32('0x5b'))[_0xba32('0x61')](_0xba32('0x64'),'ContactId')[_0xba32('0x61')]('ANY_VALUE(ListId)','ListId')[_0xba32('0x61')]('ANY_VALUE(VoiceQueueId)',_0xba32('0x5e'))[_0xba32('0x61')](_0xba32('0x63'),_0xba32('0x65'))[_0xba32('0x61')](_0xba32('0x63'),_0xba32('0x5f'))['from'](_0xba32('0x66'))[_0xba32('0x32')]('VoiceQueueId\x20=\x20?',_0x48c0c8[_0xba32('0x3f')]['id'][_0xba32('0x67')]())[_0xba32('0x32')]('state\x20=\x20?',_0x48c0c8[_0xba32('0x3c')]['state']['toString']())['where'](_0xba32('0x68'))[_0xba32('0x32')](_0xba32('0x69'),squel[_0xba32('0x60')]()[_0xba32('0x61')](_0xba32('0x5a'))[_0xba32('0x6a')](_0xba32('0x58'))[_0xba32('0x32')]('VoiceQueueId\x20=\x20?',_0x48c0c8[_0xba32('0x3f')]['id'][_0xba32('0x67')]()))[_0xba32('0x32')](_0xba32('0x69'),squel['select']()['field'](_0xba32('0x6b'))[_0xba32('0x6a')](_0xba32('0x66'))['where']('VoiceQueueId\x20=\x20?',_0x48c0c8[_0xba32('0x3f')]['id']['toString']())[_0xba32('0x32')]('state\x20=\x204'))[_0xba32('0x6c')](_0xba32('0x5c')))[_0xba32('0x67')]();return db['sequelize'][_0xba32('0x25')](_0x5aeb58);}return[];})[_0xba32('0x19')](respondWithResult(_0x23f97c,null))['catch'](handleError(_0x23f97c,null));};exports[_0xba32('0x6d')]=function(_0x21a979,_0x4491e8,_0x5346be){return db['Campaign'][_0xba32('0x3e')]({'where':{'id':_0x21a979['params']['id']}})[_0xba32('0x19')](handleEntityNotFound(_0x4491e8,null))['then'](function(_0x5230f4){var _0x310bd4;if(_0x5230f4){_0x310bd4=squel[_0xba32('0x56')]()[_0xba32('0x57')]('cm_hopper')['fromQuery'](['phone',_0xba32('0x5b'),_0xba32('0x5c'),_0xba32('0x5d'),_0xba32('0x6e'),_0xba32('0x65'),_0xba32('0x5f')],squel[_0xba32('0x60')]()['field'](_0xba32('0x62'),_0xba32('0x5a'))[_0xba32('0x61')](_0xba32('0x63'),_0xba32('0x5b'))['field'](_0xba32('0x64'),_0xba32('0x5c'))[_0xba32('0x61')](_0xba32('0x6f'),'ListId')['field'](_0xba32('0x70'),'CampaignId')[_0xba32('0x61')](_0xba32('0x63'),_0xba32('0x65'))[_0xba32('0x61')](_0xba32('0x63'),_0xba32('0x5f'))[_0xba32('0x6a')](_0xba32('0x66'))[_0xba32('0x32')](_0xba32('0x71'),_0x21a979['params']['id'][_0xba32('0x67')]())['where']('state\x20=\x20?',_0x21a979['body'][_0xba32('0x72')][_0xba32('0x67')]())[_0xba32('0x32')](_0xba32('0x68'))[_0xba32('0x32')](_0xba32('0x69'),squel[_0xba32('0x60')]()[_0xba32('0x61')](_0xba32('0x5a'))[_0xba32('0x6a')]('cm_hopper')[_0xba32('0x32')](_0xba32('0x71'),_0x21a979['params']['id'][_0xba32('0x67')]()))[_0xba32('0x32')]('calleridnum\x20NOT\x20IN\x20(?)',squel[_0xba32('0x60')]()[_0xba32('0x61')](_0xba32('0x6b'))[_0xba32('0x6a')](_0xba32('0x66'))[_0xba32('0x32')](_0xba32('0x71'),_0x21a979[_0xba32('0x3f')]['id']['toString']())[_0xba32('0x32')](_0xba32('0x73')))[_0xba32('0x6c')](_0xba32('0x5c')))['toString']();return db['sequelize'][_0xba32('0x25')](_0x310bd4);}return[];})[_0xba32('0x19')](respondWithResult(_0x4491e8,null))[_0xba32('0x39')](handleError(_0x4491e8,null));};exports[_0xba32('0x74')]=function(_0x13ed2f,_0x31b63e,_0x3481da){return db[_0xba32('0x75')]['findOne']({'where':{'VoiceQueueId':_0x13ed2f[_0xba32('0x3c')][_0xba32('0x5e')],'CampaignId':_0x13ed2f[_0xba32('0x3c')][_0xba32('0x6e')],'ContactId':_0x13ed2f['body']['ContactId']}})[_0xba32('0x19')](handleEntityNotFound(_0x31b63e,null))[_0xba32('0x19')](function(_0x45bb90){if(_0x45bb90){return _0x45bb90;}return null;})[_0xba32('0x19')](respondWithResult(_0x31b63e,null))['catch'](handleError(_0x31b63e,null));};