0fe05897dfbbf09b922613c3d21646893a20ab75
[motion2.git] / server / api / cmContact / cmContact.model.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 _0xc852=['isEmpty','destroy','ContactId','push','info','[CmContact][afterDestroy][Succesfull]','inspect','[CmContact][afterDestroy][Error]','../../config/logger','api','moment','../../config/environment/shared','./cmContact.attributes','Campaign','VoiceQueue','scheduledat','YYYY-MM-DD\x20HH:mm:ss','dialTimezone','resolve','findOne','then','isNil','timezones','utcOffset','add','minutes','phone','ListId','format','priority','callbackUniqueid','assign','[Always]\x20Hopper\x20already\x20exists\x20for\x20contact\x20with\x20phone\x20','\x20in\x20Campaign\x20with\x20id\x20','CampaignId','CmHopper','[OnlyIfOpen]\x20Hopper\x20already\x20exists\x20for\x20contact\x20with\x20phone\x20','VoiceQueueId','create','always','onlyIfOpen','findAll','outbound','dialCheckDuplicateType','Lists','map','all','CmList','BlackLists','CmHopperBlack','exports','define','CmContact','cm_contacts','mobile','fax','FULLTEXT','utf8mb4_unicode_ci','models','get','error','[cmContact][afterCreate]\x20List\x20not\x20found\x20for\x20contact\x20with\x20id\x20','catch','[cmContact][afterCreate]','message'];(function(_0x45f951,_0x2750c8){var _0x24756c=function(_0x31c931){while(--_0x31c931){_0x45f951['push'](_0x45f951['shift']());}};_0x24756c(++_0x2750c8);}(_0xc852,0x14d));var _0x2c85=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xc852[_0x14add3];return _0x4a174f;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x2c85('0x0'))(_0x2c85('0x1'));var moment=require(_0x2c85('0x2'));var shared=require(_0x2c85('0x3'));var attributes=require(_0x2c85('0x4'));function getTimezoneCallbackAt(_0x4c0eca,_0x1cbf74,_0x17189c,_0x162593){var _0x2b86c0=_0x162593?_0x2c85('0x5'):_0x2c85('0x6');var _0x585513=_0x17189c[_0x2c85('0x7')]?_0x17189c[_0x2c85('0x7')]:moment()['format'](_0x2c85('0x8'));if(_['isNil'](_0x17189c[_0x2c85('0x9')])){return Promise[_0x2c85('0xa')](_0x585513);}return _0x4c0eca[_0x2b86c0][_0x2c85('0xb')]({'where':{'id':_0x1cbf74}})[_0x2c85('0xc')](function(_0x1df64f){if(_[_0x2c85('0xd')](_0x1df64f)||_[_0x2c85('0xd')](_0x1df64f[_0x2c85('0x9')])){return Promise[_0x2c85('0xa')](_0x585513);}var _0x1c1f4c=shared[_0x2c85('0xe')];var _0x351a55=_0x1c1f4c[_0x1df64f[_0x2c85('0x9')]];var _0x55c756=_0x1c1f4c[_0x17189c['dialTimezone']];if(_[_0x2c85('0xd')](_0x351a55)&&_['isNil'](_0x55c756)){return Promise[_0x2c85('0xa')](_0x585513);}var _0x443af4=_0x351a55[_0x2c85('0xf')]-_0x55c756['utcOffset'];var _0x2e4baa=_0x17189c[_0x2c85('0x7')]?_0x17189c[_0x2c85('0x7')]:moment();_0x585513=moment(_0x2e4baa)[_0x2c85('0x10')](_0x443af4,_0x2c85('0x11'))['format'](_0x2c85('0x8'));return Promise['resolve'](_0x585513);});}function getNewHopperPayload(_0x52a3e7){return{'phone':_0x52a3e7[_0x2c85('0x12')],'ContactId':_0x52a3e7['id'],'ListId':_0x52a3e7[_0x2c85('0x13')],'scheduledat':_0x52a3e7[_0x2c85('0x7')]?_0x52a3e7[_0x2c85('0x7')]:moment()[_0x2c85('0x14')]('YYYY-MM-DD\x20HH:mm:ss'),'priority':_0x52a3e7[_0x2c85('0x15')]?_0x52a3e7[_0x2c85('0x15')]:0x2,'callback':_0x52a3e7['callbackUniqueid']?!![]:![],'callbackuniqueid':_0x52a3e7['callbackUniqueid']?_0x52a3e7[_0x2c85('0x16')]:undefined,'callbackat':_0x52a3e7[_0x2c85('0x16')]?moment()[_0x2c85('0x14')](_0x2c85('0x8')):undefined};}function handleAlwaysCheckDuplicate(_0xa1fa04,_0x5dbe4e,_0x5bbe19,_0x548452){var _0x1e3c44={'phone':_0x5bbe19['phone']};var _0x4d1f00={'calleridnum':_0x5bbe19[_0x2c85('0x12')]};if(_0x548452){Object['assign'](_0x1e3c44,{'CampaignId':_0x5dbe4e['id']});Object[_0x2c85('0x17')](_0x4d1f00,{'CampaignId':_0x5dbe4e['id']});}else{Object['assign'](_0x1e3c44,{'VoiceQueueId':_0x5dbe4e['id']});Object[_0x2c85('0x17')](_0x4d1f00,{'VoiceQueueId':_0x5dbe4e['id']});}return _0xa1fa04['CmHopper']['findOne']({'where':_0x1e3c44})['then'](function(_0x2abd14){if(_0x2abd14){throw new Error(_0x2c85('0x18')+_0x5bbe19[_0x2c85('0x12')]+_0x2c85('0x19')+_0x5dbe4e['id']);}return _0xa1fa04['CmHopperFinal'][_0x2c85('0xb')]({'where':_0x4d1f00});})[_0x2c85('0xc')](function(_0x31b525){if(_0x31b525){throw new Error('[Always]\x20Hopper\x20Final\x20already\x20exists\x20for\x20contact\x20with\x20phone\x20'+_0x5bbe19[_0x2c85('0x12')]+_0x2c85('0x19')+_0x5dbe4e['id']);}var _0x3af34b=getNewHopperPayload(_0x5bbe19);if(_0x548452){_0x3af34b[_0x2c85('0x1a')]=_0x5dbe4e['id'];}else{_0x3af34b['VoiceQueueId']=_0x5dbe4e['id'];}return _0xa1fa04[_0x2c85('0x1b')]['create'](_0x3af34b);});}function handleOnlyIfOpenCheckDuplicate(_0x2b19db,_0x2e3979,_0x256df6,_0x21d311){var _0x3d28ad={'phone':_0x256df6[_0x2c85('0x12')]};if(_0x21d311){Object[_0x2c85('0x17')](_0x3d28ad,{'CampaignId':_0x2e3979['id']});}else{Object[_0x2c85('0x17')](_0x3d28ad,{'VoiceQueueId':_0x2e3979['id']});}return _0x2b19db[_0x2c85('0x1b')][_0x2c85('0xb')]({'where':_0x3d28ad})[_0x2c85('0xc')](function(_0x5e05c5){if(_0x5e05c5){throw new Error(_0x2c85('0x1c')+_0x256df6[_0x2c85('0x12')]+_0x2c85('0x19')+_0x2e3979['id']);}var _0x1e3b2b=getNewHopperPayload(_0x256df6);if(_0x21d311){_0x1e3b2b[_0x2c85('0x1a')]=_0x2e3979['id'];}else{_0x1e3b2b[_0x2c85('0x1d')]=_0x2e3979['id'];}return _0x2b19db[_0x2c85('0x1b')][_0x2c85('0x1e')](_0x1e3b2b);});}function handleNeverCheckDuplicate(_0x47bdab,_0xf47b40,_0x3c8525){var _0x254ff2=getNewHopperPayload(_0x3c8525);_0x254ff2[_0x2c85('0x1d')]=_0xf47b40['id'];return _0x47bdab['CmHopper'][_0x2c85('0x1e')](_0x254ff2);}function handleCheckDuplicate(_0x2426c6,_0x57ded1,_0x19583f,_0x5c99a2){return getTimezoneCallbackAt(_0x2426c6,_0x57ded1,_0x19583f,_0x5c99a2)[_0x2c85('0xc')](function(_0xb5f091){_0x19583f[_0x2c85('0x7')]=_0xb5f091;switch(_0x57ded1['dialCheckDuplicateType']){case _0x2c85('0x1f'):return handleAlwaysCheckDuplicate(_0x2426c6,_0x57ded1,_0x19583f,_0x5c99a2);case _0x2c85('0x20'):return handleOnlyIfOpenCheckDuplicate(_0x2426c6,_0x57ded1,_0x19583f,_0x5c99a2);default:return handleNeverCheckDuplicate(_0x2426c6,_0x57ded1,_0x19583f);}});}function createHopperForVoiceQueues(_0x29b212,_0x303d91){return _0x29b212[_0x2c85('0x6')][_0x2c85('0x21')]({'where':{'type':_0x2c85('0x22')},'attributes':['id',_0x2c85('0x23'),_0x2c85('0x9')],'include':[{'model':_0x29b212['CmList'],'as':_0x2c85('0x24'),'where':{'id':_0x303d91[_0x2c85('0x13')]}}],'raw':!![]})[_0x2c85('0xc')](function(_0x800c60){var _0x1d2b4c=_0x800c60[_0x2c85('0x25')](function(_0x51a9ee){return handleCheckDuplicate(_0x29b212,_0x51a9ee,_0x303d91,![]);});return Promise[_0x2c85('0x26')](_0x1d2b4c);});}function createHopperForCampaigns(_0x2df187,_0x4bc809){return _0x2df187[_0x2c85('0x5')]['findAll']({'attributes':['id',_0x2c85('0x23'),_0x2c85('0x9')],'include':[{'model':_0x2df187[_0x2c85('0x27')],'as':'Lists','where':{'id':_0x4bc809[_0x2c85('0x13')]}}],'raw':!![]})[_0x2c85('0xc')](function(_0x41d1f3){var _0x4d98a1=_0x41d1f3['map'](function(_0x3f7919){return handleCheckDuplicate(_0x2df187,_0x3f7919,_0x4bc809,!![]);});return Promise[_0x2c85('0x26')](_0x4d98a1);});}function createHopperBlackForVoiceQueues(_0x6c7b34,_0xb70fef){return _0x6c7b34[_0x2c85('0x6')][_0x2c85('0x21')]({'where':{'type':_0x2c85('0x22')},'attributes':['id'],'include':[{'model':_0x6c7b34[_0x2c85('0x27')],'as':_0x2c85('0x28'),'where':{'id':_0xb70fef[_0x2c85('0x13')]}}],'raw':!![]})[_0x2c85('0xc')](function(_0x3843e1){var _0x55b28f=_0x3843e1[_0x2c85('0x25')](function(_0x3f6e2e){return _0x6c7b34[_0x2c85('0x29')][_0x2c85('0x1e')]({'phone':_0xb70fef[_0x2c85('0x12')],'ContactId':_0xb70fef['id'],'ListId':_0xb70fef['ListId'],'VoiceQueueId':_0x3f6e2e['id']});});return Promise['all'](_0x55b28f);});}function createHopperBlackForCampaigns(_0xbffdd0,_0x22cedc){return _0xbffdd0['Campaign'][_0x2c85('0x21')]({'attributes':['id'],'include':[{'model':_0xbffdd0[_0x2c85('0x27')],'as':_0x2c85('0x28'),'where':{'id':_0x22cedc[_0x2c85('0x13')]}}],'raw':!![]})[_0x2c85('0xc')](function(_0x5b7763){var _0x4c1e94=_0x5b7763[_0x2c85('0x25')](function(_0x5681d2){return _0xbffdd0['CmHopperBlack'][_0x2c85('0x1e')]({'phone':_0x22cedc[_0x2c85('0x12')],'ContactId':_0x22cedc['id'],'ListId':_0x22cedc['ListId'],'CampaignId':_0x5681d2['id']});});return Promise[_0x2c85('0x26')](_0x4c1e94);});}module[_0x2c85('0x2a')]=function(_0x1b0998){return _0x1b0998[_0x2c85('0x2b')](_0x2c85('0x2c'),attributes,{'tableName':_0x2c85('0x2d'),'paranoid':!![],'indexes':[{'name':_0x2c85('0x12'),'fields':[_0x2c85('0x12')]},{'name':'fti_cm_contacts','fields':['firstName','lastName',_0x2c85('0x12'),_0x2c85('0x2e'),_0x2c85('0x2f'),'email'],'type':_0x2c85('0x30')}],'timestamps':!![],'charset':'utf8mb4','collate':_0x2c85('0x31'),'hooks':{'afterCreate':function(_0x4ee585,_0x33af7c,_0x2dc2f8){var _0x3e2fab=_0x1b0998[_0x2c85('0x32')];var _0x57487f=_0x4ee585[_0x2c85('0x33')]({'plain':!![]});if(!_0x57487f[_0x2c85('0x13')]){logger[_0x2c85('0x34')](_0x2c85('0x35')+_0x57487f['id']);return _0x2dc2f8();}if(!_0x57487f['phone']){return _0x2dc2f8();}return createHopperForVoiceQueues(_0x3e2fab,_0x57487f)[_0x2c85('0xc')](function(){return createHopperBlackForVoiceQueues(_0x3e2fab,_0x57487f);})[_0x2c85('0xc')](function(){return createHopperForCampaigns(_0x3e2fab,_0x57487f);})[_0x2c85('0xc')](function(){return createHopperBlackForCampaigns(_0x3e2fab,_0x57487f);})[_0x2c85('0xc')](function(){return _0x2dc2f8();})[_0x2c85('0x36')](function(_0x583d8b){logger[_0x2c85('0x34')](_0x2c85('0x37'),_0x583d8b[_0x2c85('0x38')]);_0x2dc2f8();});},'afterDestroy':function(_0x5266ca,_0x41ff28,_0x5a43af){var _0x55a304=_0x1b0998[_0x2c85('0x32')];var _0x3cf09b=_0x5266ca[_0x2c85('0x33')]({'plain':!![]});return _0x55a304[_0x2c85('0x1b')][_0x2c85('0x21')]({'raw':!![],'where':{'ListId':_0x3cf09b['ListId'],'ContactId':_0x3cf09b['id']}})[_0x2c85('0xc')](function(_0x596f86){if(!_[_0x2c85('0x39')](_0x596f86)){var _0x3262d1=[];for(var _0x3143a3=0x0;_0x3143a3<_0x596f86['length'];_0x3143a3+=0x1){var _0x51c11f=_0x55a304[_0x2c85('0x1b')][_0x2c85('0x3a')]({'where':{'ListId':_0x596f86[_0x3143a3][_0x2c85('0x13')],'ContactId':_0x596f86[_0x3143a3][_0x2c85('0x3b')],'VoiceQueueId':_0x596f86[_0x3143a3][_0x2c85('0x1d')],'CampaignId':_0x596f86[_0x3143a3][_0x2c85('0x1a')]}});_0x3262d1[_0x2c85('0x3c')](_0x51c11f);}return Promise[_0x2c85('0x26')](_0x3262d1);}})['then'](function(_0x43ba0a){logger[_0x2c85('0x3d')](_0x2c85('0x3e'),util[_0x2c85('0x3f')](_0x43ba0a,{'showHidden':![],'depth':null}));_0x5a43af();})[_0x2c85('0x36')](function(_0x5a99d4){logger[_0x2c85('0x34')](_0x2c85('0x40'),util[_0x2c85('0x3f')](_0x5a99d4,{'showHidden':![],'depth':null}));_0x5a43af(_0x5a99d4);});}}});};