Built motion from commit 25580385.|2.6.2
[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 _0x8db8=['querystring','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','json','offset','undefined','limit','count','set','apply','reject','save','update','then','error','stack','name','send','map','CmHopper','fieldName','key','model','query','filters','intersection','$and','$or','$gt','$gte','$lt','$ne','$not','$between','$notBetween','$notIn','$like','$notLike','$iLike','$notILike','$overlap','$contains','$contained','$any','attributes','fields','sort','where','pick','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','params','keys','rawAttributes','length','find','create','body','describe','destroy','VoiceQueueId','CampaignId','VoiceQueue','omit','dataValues','createdAt','updatedAt','state','statedesc','deleted','campaign','membername','user','UserId','deletedat','format','YYYY-MM-DD\x20HH:mm:ss','campaigntype','queue','CmContact','ContactId','lastName','firstName','calleridname','finally','CmHopperFinal','CmHopperAdditionalPhone','getPreview','getVoiceQueues','outbound','preview','dialOrderByScheduledAt','dialPreviewAutoRecallMe','filter','direction','prev','hopperIds','priority','ASC','scheduledAt','DESC','sequelize','literal','COALESCE(CmHopper.UserId,\x200)\x20ASC','isEmpty','COALESCE(CmHopper.UserId,\x200)\x20DESC','findOne','scheduledat','phone','LOCK','UPDATE','Contact','CmCompany','Company','CmList','List','Queue','dialActive','getPreviewRecall','recallme','getOpenContacts','isNumber','entity\x20not\x20found','getTimezones','timezones','push','utcOffset','getTimezone','isNil','eml-format','rimraf','zip-dir','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce'];(function(_0x1d4a5d,_0x52104c){var _0x4c9a16=function(_0x46402b){while(--_0x46402b){_0x1d4a5d['push'](_0x1d4a5d['shift']());}};_0x4c9a16(++_0x52104c);}(_0x8db8,0x8f));var _0x88db=function(_0xbe53fd,_0x1ae809){_0xbe53fd=_0xbe53fd-0x0;var _0x2321d1=_0x8db8[_0xbe53fd];return _0x2321d1;};'use strict';var emlformat=require(_0x88db('0x0'));var rimraf=require(_0x88db('0x1'));var zipdir=require(_0x88db('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x88db('0x3'));var BPromise=require(_0x88db('0x4'));var Mustache=require(_0x88db('0x5'));var util=require('util');var path=require(_0x88db('0x6'));var sox=require(_0x88db('0x7'));var csv=require(_0x88db('0x8'));var ejs=require(_0x88db('0x9'));var fs=require('fs');var fs_extra=require(_0x88db('0xa'));var _=require(_0x88db('0xb'));var squel=require('squel');var crypto=require(_0x88db('0xc'));var jsforce=require(_0x88db('0xd'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x88db('0xe'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x88db('0xf'));var as=require(_0x88db('0x10'));var hardwareService=require(_0x88db('0x11'));var logger=require(_0x88db('0x12'))(_0x88db('0x13'));var utils=require(_0x88db('0x14'));var config=require(_0x88db('0x15'));var shared=require(_0x88db('0x15'));var licenseUtil=require(_0x88db('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x159572,_0x1a3a7e){_0x1a3a7e=_0x1a3a7e||0xcc;return function(_0x3d7b56){if(_0x3d7b56){return _0x159572[_0x88db('0x17')](_0x1a3a7e);}return _0x159572[_0x88db('0x18')](_0x1a3a7e)['end']();};}function respondWithResult(_0xafa078,_0x15ed54){_0x15ed54=_0x15ed54||0xc8;return function(_0x85f70f){if(_0x85f70f){return _0xafa078[_0x88db('0x18')](_0x15ed54)[_0x88db('0x19')](_0x85f70f);}};}function respondWithFilteredResult(_0x1a679e,_0x89edca){return function(_0x16529d){if(_0x16529d){var _0x4e6516=typeof _0x89edca[_0x88db('0x1a')]===_0x88db('0x1b')&&typeof _0x89edca[_0x88db('0x1c')]==='undefined';var _0x10328f=_0x16529d[_0x88db('0x1d')];var _0x323e17=_0x4e6516?0x0:_0x89edca[_0x88db('0x1a')];var _0x1d8d1d=_0x4e6516?_0x16529d['count']:_0x89edca[_0x88db('0x1a')]+_0x89edca[_0x88db('0x1c')];var _0x5a105b;if(_0x1d8d1d>=_0x10328f){_0x1d8d1d=_0x10328f;_0x5a105b=0xc8;}else{_0x5a105b=0xce;}_0x1a679e[_0x88db('0x18')](_0x5a105b);return _0x1a679e[_0x88db('0x1e')]('Content-Range',_0x323e17+'-'+_0x1d8d1d+'/'+_0x10328f)[_0x88db('0x19')](_0x16529d);}return null;};}function patchUpdates(_0xaa8c2a){return function(_0xadc4d8){try{jsonpatch[_0x88db('0x1f')](_0xadc4d8,_0xaa8c2a,!![]);}catch(_0x5d9e2d){return BPromise[_0x88db('0x20')](_0x5d9e2d);}return _0xadc4d8[_0x88db('0x21')]();};}function saveUpdates(_0xc1cc4f,_0x5c2fbd){return function(_0xc6b56f){if(_0xc6b56f){return _0xc6b56f[_0x88db('0x22')](_0xc1cc4f)[_0x88db('0x23')](function(_0x16a411){return _0x16a411;});}return null;};}function removeEntity(_0x1ea623,_0x220683){return function(_0x143a74){if(_0x143a74){return _0x143a74['destroy']()[_0x88db('0x23')](function(){_0x1ea623[_0x88db('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x308191,_0x55e71d){return function(_0x1cb7f9){if(!_0x1cb7f9){_0x308191[_0x88db('0x17')](0x194);}return _0x1cb7f9;};}function handleError(_0x5bfb3b,_0x3c201f){_0x3c201f=_0x3c201f||0x1f4;return function(_0x216b3d){logger[_0x88db('0x24')](_0x216b3d[_0x88db('0x25')]);if(_0x216b3d[_0x88db('0x26')]){delete _0x216b3d['name'];}_0x5bfb3b[_0x88db('0x18')](_0x3c201f)[_0x88db('0x27')](_0x216b3d);};}exports['index']=function(_0x1d0734,_0x221cce){var _0x56ed70={},_0x42a2e7={},_0x450b06={'count':0x0,'rows':[]};var _0x3161ee=_[_0x88db('0x28')](db[_0x88db('0x29')]['rawAttributes'],function(_0x76ec46){return{'name':_0x76ec46[_0x88db('0x2a')],'type':_0x76ec46['type'][_0x88db('0x2b')]};});_0x42a2e7[_0x88db('0x2c')]=_[_0x88db('0x28')](_0x3161ee,_0x88db('0x26'));_0x42a2e7[_0x88db('0x2d')]=_['keys'](_0x1d0734[_0x88db('0x2d')]);_0x42a2e7[_0x88db('0x2e')]=_[_0x88db('0x2f')](_0x42a2e7[_0x88db('0x2c')],_0x42a2e7['query']);_0x42a2e7[_0x88db('0x2e')]=_['concat'](_0x42a2e7[_0x88db('0x2e')],[_0x88db('0x30'),_0x88db('0x31'),_0x88db('0x32'),_0x88db('0x33'),_0x88db('0x34'),'$lte',_0x88db('0x35'),'$eq',_0x88db('0x36'),_0x88db('0x37'),_0x88db('0x38'),'$in',_0x88db('0x39'),_0x88db('0x3a'),_0x88db('0x3b'),_0x88db('0x3c'),_0x88db('0x3d'),_0x88db('0x3a'),_0x88db('0x3e'),_0x88db('0x3f'),_0x88db('0x40'),_0x88db('0x41')]);_0x56ed70[_0x88db('0x42')]=_[_0x88db('0x2f')](_0x42a2e7['model'],qs[_0x88db('0x43')](_0x1d0734[_0x88db('0x2d')][_0x88db('0x43')]));_0x56ed70[_0x88db('0x42')]=_0x56ed70[_0x88db('0x42')]['length']?_0x56ed70[_0x88db('0x42')]:_0x42a2e7[_0x88db('0x2c')];if(!_0x1d0734[_0x88db('0x2d')]['hasOwnProperty']('nolimit')){_0x56ed70[_0x88db('0x1c')]=qs['limit'](_0x1d0734['query'][_0x88db('0x1c')]);_0x56ed70[_0x88db('0x1a')]=qs[_0x88db('0x1a')](_0x1d0734[_0x88db('0x2d')][_0x88db('0x1a')]);}_0x56ed70['order']=qs[_0x88db('0x44')](_0x1d0734[_0x88db('0x2d')][_0x88db('0x44')]);_0x56ed70[_0x88db('0x45')]=qs['filters'](_[_0x88db('0x46')](_0x1d0734[_0x88db('0x2d')],_0x42a2e7[_0x88db('0x2e')]),_0x3161ee);if(_0x1d0734['query']['filter']){_0x56ed70[_0x88db('0x45')]=_[_0x88db('0x47')](_0x56ed70['where'],{'$or':_[_0x88db('0x28')](_0x3161ee,function(_0x509170){if(_0x509170['type']!==_0x88db('0x48')){var _0x243474={};_0x243474[_0x509170[_0x88db('0x26')]]={'$like':'%'+_0x1d0734[_0x88db('0x2d')]['filter']+'%'};return _0x243474;}})});}_0x56ed70=_[_0x88db('0x47')]({},_0x56ed70,_0x1d0734[_0x88db('0x49')]);var _0x132684={'where':_0x56ed70[_0x88db('0x45')]};return db[_0x88db('0x29')][_0x88db('0x1d')](_0x132684)[_0x88db('0x23')](function(_0x1c7f1b){_0x450b06[_0x88db('0x1d')]=_0x1c7f1b;if(_0x1d0734[_0x88db('0x2d')][_0x88db('0x4a')]){_0x56ed70[_0x88db('0x4b')]=[{'all':!![]}];}return db[_0x88db('0x29')][_0x88db('0x4c')](_0x56ed70);})['then'](function(_0x31c35a){_0x450b06[_0x88db('0x4d')]=_0x31c35a;return _0x450b06;})['then'](respondWithFilteredResult(_0x221cce,_0x56ed70))[_0x88db('0x4e')](handleError(_0x221cce,null));};exports['show']=function(_0x1c6db6,_0x50ee7f){var _0x1416eb={'raw':!![],'where':{'id':_0x1c6db6[_0x88db('0x4f')]['id']}},_0x3f4f2f={};_0x3f4f2f[_0x88db('0x2c')]=_[_0x88db('0x50')](db['CmHopper'][_0x88db('0x51')]);_0x3f4f2f[_0x88db('0x2d')]=_[_0x88db('0x50')](_0x1c6db6['query']);_0x3f4f2f[_0x88db('0x2e')]=_[_0x88db('0x2f')](_0x3f4f2f[_0x88db('0x2c')],_0x3f4f2f[_0x88db('0x2d')]);_0x1416eb[_0x88db('0x42')]=_[_0x88db('0x2f')](_0x3f4f2f['model'],qs[_0x88db('0x43')](_0x1c6db6[_0x88db('0x2d')][_0x88db('0x43')]));_0x1416eb[_0x88db('0x42')]=_0x1416eb[_0x88db('0x42')][_0x88db('0x52')]?_0x1416eb[_0x88db('0x42')]:_0x3f4f2f[_0x88db('0x2c')];if(_0x1c6db6[_0x88db('0x2d')][_0x88db('0x4a')]){_0x1416eb[_0x88db('0x4b')]=[{'all':!![]}];}_0x1416eb=_[_0x88db('0x47')]({},_0x1416eb,_0x1c6db6['options']);return db[_0x88db('0x29')][_0x88db('0x53')](_0x1416eb)[_0x88db('0x23')](handleEntityNotFound(_0x50ee7f,null))[_0x88db('0x23')](respondWithResult(_0x50ee7f,null))[_0x88db('0x4e')](handleError(_0x50ee7f,null));};exports[_0x88db('0x54')]=function(_0x58c2ba,_0x5b2819){return db[_0x88db('0x29')][_0x88db('0x54')](_0x58c2ba['body'],{})[_0x88db('0x23')](respondWithResult(_0x5b2819,0xc9))[_0x88db('0x4e')](handleError(_0x5b2819,null));};exports[_0x88db('0x22')]=function(_0x2282d8,_0x23ec34){if(_0x2282d8[_0x88db('0x55')]['id']){delete _0x2282d8[_0x88db('0x55')]['id'];}return db[_0x88db('0x29')][_0x88db('0x53')]({'where':{'id':_0x2282d8[_0x88db('0x4f')]['id']}})[_0x88db('0x23')](handleEntityNotFound(_0x23ec34,null))[_0x88db('0x23')](saveUpdates(_0x2282d8[_0x88db('0x55')],null))['then'](respondWithResult(_0x23ec34,null))['catch'](handleError(_0x23ec34,null));};exports[_0x88db('0x56')]=function(_0x31a2d1,_0x5f3ba0){return db[_0x88db('0x29')][_0x88db('0x56')]()[_0x88db('0x23')](respondWithResult(_0x5f3ba0,null))['catch'](handleError(_0x5f3ba0,null));};exports[_0x88db('0x57')]=function(_0x3ca356,_0x2eaadb){var _0x407a15;var _0x3c45c5=_0x3ca356['params']['id'];return db[_0x88db('0x29')][_0x88db('0x53')]({'where':{'id':_0x3ca356[_0x88db('0x4f')]['id']}})[_0x88db('0x23')](handleEntityNotFound(_0x2eaadb,null))[_0x88db('0x23')](function(_0x2b7f03){if(_0x2b7f03){return _0x2b7f03[_0x88db('0x57')]()[_0x88db('0x23')](function(_0x394c9d){return _0x394c9d;});}})[_0x88db('0x23')](function(_0x34c3fa){_0x407a15=_0x34c3fa;if(_0x34c3fa){if(_0x34c3fa[_0x88db('0x58')]||_0x34c3fa[_0x88db('0x59')]){return db[_0x34c3fa[_0x88db('0x58')]?_0x88db('0x5a'):'Campaign'][_0x88db('0x53')]({'where':{'id':_0x34c3fa[_0x88db('0x58')]?_0x34c3fa[_0x88db('0x58')]:_0x34c3fa[_0x88db('0x59')]},'attributes':['id',_0x88db('0x26')],'raw':!![]});}}})[_0x88db('0x23')](function(_0x216cd3){var _0x4bab1b={};if(_0x216cd3){_[_0x88db('0x47')](_0x4bab1b,_[_0x88db('0x5b')](_0x407a15[_0x88db('0x5c')],[_0x88db('0x5d'),_0x88db('0x5e'),'id']));_0x4bab1b[_0x88db('0x5f')]=0x15;_0x4bab1b[_0x88db('0x60')]=_0x88db('0x61');_0x4bab1b[_0x88db('0x62')]=_0x216cd3['name'];_0x4bab1b[_0x88db('0x63')]=_0x3ca356[_0x88db('0x64')][_0x88db('0x26')];_0x4bab1b[_0x88db('0x65')]=_0x3ca356['user']['id'];_0x4bab1b[_0x88db('0x61')]=!![];_0x4bab1b[_0x88db('0x66')]=moment()[_0x88db('0x67')](_0x88db('0x68'));_0x4bab1b['calleridnum']=_0x407a15['phone'];_0x4bab1b[_0x88db('0x69')]=_0x407a15[_0x88db('0x58')]?_0x88db('0x6a'):'ivr';return db[_0x88db('0x6b')]['find']({'where':{'id':_0x4bab1b[_0x88db('0x6c')]},'attributes':['firstName',_0x88db('0x6d')]})[_0x88db('0x23')](function(_0x4429b1){if(!_['isNil'](_0x2eaadb)&&!_['isNil'](_0x4429b1[_0x88db('0x6e')])){_0x4bab1b[_0x88db('0x6f')]=_0x4429b1[_0x88db('0x6e')];if(!_['isNil'](_0x4429b1[_0x88db('0x6d')])){_0x4bab1b[_0x88db('0x6f')]+='\x20'+_0x4429b1[_0x88db('0x6d')];}}})[_0x88db('0x70')](function(){return db[_0x88db('0x71')]['create'](_0x4bab1b);});}})[_0x88db('0x23')](function(_0x3752a8){return db[_0x88db('0x72')][_0x88db('0x57')]({'where':{'CmHopperId':_0x3c45c5}});})[_0x88db('0x23')](function(){return _0x2eaadb[_0x88db('0x18')](0xcc)['end']();})['catch'](handleError(_0x2eaadb,null));};exports[_0x88db('0x73')]=function(_0x91149a,_0x26244d,_0x22bdfd){var _0x534a90=[];return db[_0x88db('0x6b')][_0x88db('0x56')]()[_0x88db('0x23')](function(_0x4e935d){_0x534a90=_[_0x88db('0x50')](_0x4e935d);return _0x91149a['user'][_0x88db('0x74')]({'where':{'type':_0x88db('0x75'),'dialActive':!![],'dialMethod':_0x88db('0x76')},'attributes':['id',_0x88db('0x77'),_0x88db('0x78')],'raw':!![]});})['then'](function(_0x4ba6ca){if(_0x4ba6ca&&_0x4ba6ca['length']){return db['sequelize']['transaction'](function(_0x3bf582){var _0xfe71cc={'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0x88db('0x67')](_0x88db('0x68'))},'VoiceQueueId':{'$in':_[_0x88db('0x28')](_0x4ba6ca,'id')},'$or':[{'UserId':null},{'UserId':_0x91149a[_0x88db('0x64')]['id']}]};var _0x42c5c4={'active':![],'recallme':!![],'VoiceQueueId':{'$in':_(_0x4ba6ca)[_0x88db('0x79')]([_0x88db('0x78'),0x0])[_0x88db('0x28')]('id')['value']()},'$or':[{'UserId':null},{'UserId':_0x91149a['user']['id']}]};var _0x5ec714={'$or':[_0xfe71cc,_0x42c5c4]};var _0x1a4fe6=[];if(_0x91149a['body'][_0x88db('0x7a')]&&_0x91149a[_0x88db('0x55')][_0x88db('0x7a')]===_0x88db('0x7b')){if(!_['isEmpty'](_0x91149a[_0x88db('0x55')][_0x88db('0x7c')])){_0x5ec714['id']={'$in':_0x91149a['body'][_0x88db('0x7c')]};}_0x1a4fe6=[[_0x88db('0x7d'),_0x88db('0x7e')],[_0x88db('0x7f'),_0x4ba6ca[0x0][_0x88db('0x77')]===_0x88db('0x7e')?_0x88db('0x80'):'ASC'],db[_0x88db('0x81')][_0x88db('0x82')](_0x88db('0x83')),['id',_0x88db('0x80')]];}else{if(!_[_0x88db('0x84')](_0x91149a['body']['hopperIds'])){_0x5ec714['id']={'$notIn':_0x91149a[_0x88db('0x55')][_0x88db('0x7c')]};}_0x1a4fe6=[[_0x88db('0x7d'),_0x88db('0x80')],[_0x88db('0x7f'),_0x4ba6ca[0x0][_0x88db('0x77')]],db[_0x88db('0x81')][_0x88db('0x82')](_0x88db('0x85')),['id',_0x88db('0x7e')]];}return db['CmHopper'][_0x88db('0x86')]({'attributes':['id',_0x88db('0x87'),_0x88db('0x88'),'recallme'],'where':_0x5ec714,'order':_0x1a4fe6,'transaction':_0x3bf582,'lock':_0x3bf582[_0x88db('0x89')][_0x88db('0x8a')],'include':[{'model':db[_0x88db('0x6b')],'as':_0x88db('0x8b'),'attributes':_0x534a90,'include':[{'model':db[_0x88db('0x8c')],'as':_0x88db('0x8d'),'attributes':['id',_0x88db('0x26')]}]},{'model':db[_0x88db('0x8e')],'as':_0x88db('0x8f'),'attributes':['id',_0x88db('0x26')]},{'model':db['VoiceQueue'],'as':_0x88db('0x90'),'attributes':['id',_0x88db('0x26'),_0x88db('0x91')]}]})[_0x88db('0x23')](function(_0x353fb6){if(_0x353fb6){return _0x353fb6[_0x88db('0x22')]({'UserId':_0x91149a[_0x88db('0x64')]['id']},{'transaction':_0x3bf582});}});});}})['then'](handleEntityNotFound(_0x26244d,null))[_0x88db('0x23')](respondWithResult(_0x26244d,null))['catch'](handleError(_0x26244d,null));};exports[_0x88db('0x92')]=function(_0x433447,_0x3edf8f,_0x10e25c){var _0xfb5c26=[];return db[_0x88db('0x6b')][_0x88db('0x56')]()[_0x88db('0x23')](function(_0x9f64fa){_0xfb5c26=_[_0x88db('0x50')](_0x9f64fa);return _0x433447['user'][_0x88db('0x74')]({'where':{'type':'outbound','dialActive':!![],'dialMethod':'preview'},'attributes':['id','dialOrderByScheduledAt','dialPreviewAutoRecallMe'],'raw':!![]});})['then'](function(_0x13c282){if(_0x13c282&&_0x13c282[_0x88db('0x52')]){return db[_0x88db('0x81')]['transaction'](function(_0x475ceb){var _0x530df1={'active':![],'recallme':!![],'id':_0x433447['body']['hopperId']};return db[_0x88db('0x29')][_0x88db('0x86')]({'attributes':['id',_0x88db('0x87'),_0x88db('0x93')],'where':_0x530df1,'transaction':_0x475ceb,'lock':_0x475ceb[_0x88db('0x89')][_0x88db('0x8a')],'include':[{'model':db[_0x88db('0x6b')],'as':_0x88db('0x8b'),'attributes':_0xfb5c26,'include':[{'model':db[_0x88db('0x8c')],'as':'Company','attributes':['id','name']}]},{'model':db['CmList'],'as':'List','attributes':['id','name']},{'model':db['VoiceQueue'],'as':_0x88db('0x90'),'attributes':['id',_0x88db('0x26'),'dialActive']}]})[_0x88db('0x23')](function(_0x10a871){if(_0x10a871){return _0x10a871['update']({'UserId':_0x433447[_0x88db('0x64')]['id']},{'transaction':_0x475ceb});}});});}})[_0x88db('0x23')](handleEntityNotFound(_0x3edf8f,null))[_0x88db('0x23')](respondWithResult(_0x3edf8f,null))['catch'](handleError(_0x3edf8f,null));};exports[_0x88db('0x94')]=function(_0xc2c699,_0x12786c,_0x5072c5){return _0xc2c699[_0x88db('0x64')][_0x88db('0x74')]({'where':{'type':'outbound','dialActive':!![],'dialMethod':_0x88db('0x76')},'attributes':['id'],'raw':!![]})[_0x88db('0x23')](function(_0x20cb38){if(_0x20cb38&&_0x20cb38[_0x88db('0x52')]){return db[_0x88db('0x29')][_0x88db('0x1d')]({'where':{'active':![],'recallme':![],'scheduledAt':{'$lte':moment()['format'](_0x88db('0x68'))},'VoiceQueueId':{'$in':_[_0x88db('0x28')](_0x20cb38,'id')},'$or':[{'UserId':null},{'UserId':_0xc2c699[_0x88db('0x64')]['id']}]}});}return 0x0;})[_0x88db('0x23')](function(_0x38634d){if(!_['isNil'](_0x38634d)&&_[_0x88db('0x95')](_0x38634d)){return _0x12786c['status'](0xc8)['json']({'contacts':_0x38634d});}else{logger[_0x88db('0x24')]('CmHopper,\x20%s,\x20%s,\x20%s',_0x88db('0x94'),0x194,_0x88db('0x96'));_0x12786c['sendStatus'](0x194);}})['catch'](handleError(_0x12786c,null));};exports[_0x88db('0x97')]=function(_0x36c011,_0x36c40d,_0xe64d7b){var _0x300e0d=shared[_0x88db('0x98')];var _0x1e3db5=[];_[_0x88db('0x28')](_0x300e0d,function(_0x57d0ff){_0x1e3db5[_0x88db('0x99')]({'id':_0x57d0ff['name'],'name':_0x57d0ff['name'],'utcOffset':_0x57d0ff[_0x88db('0x9a')]});});return _0x36c40d['status'](0xc8)[_0x88db('0x19')]({'tz':_0x1e3db5});};exports[_0x88db('0x9b')]=function(_0x35b802,_0x21f6e8,_0x3c0e48){var _0x3fb255=shared[_0x88db('0x98')];var _0x2874b6={};if(!_[_0x88db('0x9c')](_0x3fb255[_0x35b802[_0x88db('0x55')]['id']]))_0x2874b6=_0x3fb255[_0x35b802[_0x88db('0x55')]['id']];return _0x21f6e8[_0x88db('0x18')](0xc8)['json'](_0x2874b6);};