37afeb071ed8ca95f18ad0226766d12a73a20550
[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 _0x263a=['map','all','Campaign','BlackLists','CmHopperBlack','exports','define','CmContact','cm_contacts','firstName','lastName','mobile','email','FULLTEXT','models','get','error','[cmContact][afterCreate]\x20List\x20not\x20found\x20for\x20contact\x20with\x20id\x20','catch','message','isEmpty','length','destroy','ContactId','info','[CmContact][afterDestroy][Succesfull]','inspect','lodash','util','../../config/logger','api','moment','../../config/environment/shared','./cmContact.attributes','VoiceQueue','scheduledat','format','YYYY-MM-DD\x20HH:mm:ss','isNil','resolve','dialTimezone','timezones','add','phone','ListId','priority','callbackUniqueid','assign','findOne','then','[Always]\x20Hopper\x20already\x20exists\x20for\x20contact\x20with\x20phone\x20','\x20in\x20Campaign\x20with\x20id\x20','[Always]\x20Hopper\x20Final\x20already\x20exists\x20for\x20contact\x20with\x20phone\x20','CampaignId','VoiceQueueId','create','[OnlyIfOpen]\x20Hopper\x20already\x20exists\x20for\x20contact\x20with\x20phone\x20','CmHopper','dialCheckDuplicateType','onlyIfOpen','findAll','outbound','CmList'];(function(_0x433273,_0x311962){var _0x20992f=function(_0x1c1c5b){while(--_0x1c1c5b){_0x433273['push'](_0x433273['shift']());}};_0x20992f(++_0x311962);}(_0x263a,0x99));var _0xa263=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x263a[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xa263('0x0'));var util=require(_0xa263('0x1'));var logger=require(_0xa263('0x2'))(_0xa263('0x3'));var moment=require(_0xa263('0x4'));var shared=require(_0xa263('0x5'));var attributes=require(_0xa263('0x6'));function getTimezoneCallbackAt(_0x91955c,_0x395174,_0x2f1283,_0xb689b3){var _0x354986=_0xb689b3?'Campaign':_0xa263('0x7');var _0x3fac66=_0x2f1283[_0xa263('0x8')]?_0x2f1283[_0xa263('0x8')]:moment()[_0xa263('0x9')](_0xa263('0xa'));if(_[_0xa263('0xb')](_0x2f1283['dialTimezone'])){return Promise[_0xa263('0xc')](_0x3fac66);}return _0x91955c[_0x354986]['findOne']({'where':{'id':_0x395174}})['then'](function(_0xe8cb9d){if(_[_0xa263('0xb')](_0xe8cb9d)||_[_0xa263('0xb')](_0xe8cb9d[_0xa263('0xd')])){return Promise[_0xa263('0xc')](_0x3fac66);}var _0x218891=shared[_0xa263('0xe')];var _0x4ca28f=_0x218891[_0xe8cb9d[_0xa263('0xd')]];var _0x5a9aca=_0x218891[_0x2f1283['dialTimezone']];if(_[_0xa263('0xb')](_0x4ca28f)&&_[_0xa263('0xb')](_0x5a9aca)){return Promise[_0xa263('0xc')](_0x3fac66);}var _0x30cb95=_0x4ca28f['utcOffset']-_0x5a9aca['utcOffset'];var _0x3198de=_0x2f1283[_0xa263('0x8')]?_0x2f1283[_0xa263('0x8')]:moment();_0x3fac66=moment(_0x3198de)[_0xa263('0xf')](_0x30cb95,'minutes')[_0xa263('0x9')](_0xa263('0xa'));return Promise[_0xa263('0xc')](_0x3fac66);});}function getNewHopperPayload(_0x1fde92){return{'phone':_0x1fde92[_0xa263('0x10')],'ContactId':_0x1fde92['id'],'ListId':_0x1fde92[_0xa263('0x11')],'scheduledat':_0x1fde92[_0xa263('0x8')]?_0x1fde92[_0xa263('0x8')]:moment()[_0xa263('0x9')]('YYYY-MM-DD\x20HH:mm:ss'),'priority':_0x1fde92['priority']?_0x1fde92[_0xa263('0x12')]:0x2,'callback':_0x1fde92['callbackUniqueid']?!![]:![],'callbackuniqueid':_0x1fde92[_0xa263('0x13')]?_0x1fde92[_0xa263('0x13')]:undefined,'callbackat':_0x1fde92[_0xa263('0x13')]?moment()[_0xa263('0x9')](_0xa263('0xa')):undefined};}function handleAlwaysCheckDuplicate(_0x399775,_0x40fe2f,_0x496c67,_0x352e08){var _0x5b59a9={'phone':_0x496c67['phone']};var _0x4d0052={'calleridnum':_0x496c67[_0xa263('0x10')]};if(_0x352e08){Object[_0xa263('0x14')](_0x5b59a9,{'CampaignId':_0x40fe2f['id']});Object[_0xa263('0x14')](_0x4d0052,{'CampaignId':_0x40fe2f['id']});}else{Object['assign'](_0x5b59a9,{'VoiceQueueId':_0x40fe2f['id']});Object[_0xa263('0x14')](_0x4d0052,{'VoiceQueueId':_0x40fe2f['id']});}return _0x399775['CmHopper'][_0xa263('0x15')]({'where':_0x5b59a9})[_0xa263('0x16')](function(_0x5e2229){if(_0x5e2229){throw new Error(_0xa263('0x17')+_0x496c67['phone']+_0xa263('0x18')+_0x40fe2f['id']);}return _0x399775['CmHopperFinal'][_0xa263('0x15')]({'where':_0x4d0052});})[_0xa263('0x16')](function(_0x3ecf41){if(_0x3ecf41){throw new Error(_0xa263('0x19')+_0x496c67[_0xa263('0x10')]+'\x20in\x20Campaign\x20with\x20id\x20'+_0x40fe2f['id']);}var _0x45a742=getNewHopperPayload(_0x496c67);if(_0x352e08){_0x45a742[_0xa263('0x1a')]=_0x40fe2f['id'];}else{_0x45a742[_0xa263('0x1b')]=_0x40fe2f['id'];}return _0x399775['CmHopper'][_0xa263('0x1c')](_0x45a742);});}function handleOnlyIfOpenCheckDuplicate(_0x1e6317,_0x5d179c,_0x27df09,_0x101a34){var _0x107fcc={'phone':_0x27df09[_0xa263('0x10')]};if(_0x101a34){Object[_0xa263('0x14')](_0x107fcc,{'CampaignId':_0x5d179c['id']});}else{Object['assign'](_0x107fcc,{'VoiceQueueId':_0x5d179c['id']});}return _0x1e6317['CmHopper'][_0xa263('0x15')]({'where':_0x107fcc})[_0xa263('0x16')](function(_0x5c11db){if(_0x5c11db){throw new Error(_0xa263('0x1d')+_0x27df09['phone']+_0xa263('0x18')+_0x5d179c['id']);}var _0x560cec=getNewHopperPayload(_0x27df09);if(_0x101a34){_0x560cec['CampaignId']=_0x5d179c['id'];}else{_0x560cec[_0xa263('0x1b')]=_0x5d179c['id'];}return _0x1e6317[_0xa263('0x1e')]['create'](_0x560cec);});}function handleNeverCheckDuplicate(_0x36a5c7,_0x85ee25,_0x58d333){var _0x28a7d8=getNewHopperPayload(_0x58d333);_0x28a7d8[_0xa263('0x1b')]=_0x85ee25['id'];return _0x36a5c7[_0xa263('0x1e')][_0xa263('0x1c')](_0x28a7d8);}function handleCheckDuplicate(_0x18c835,_0x339be7,_0x5e02e9,_0x1be11e){return getTimezoneCallbackAt(_0x18c835,_0x339be7,_0x5e02e9,_0x1be11e)[_0xa263('0x16')](function(_0x21f4f7){_0x5e02e9[_0xa263('0x8')]=_0x21f4f7;switch(_0x339be7[_0xa263('0x1f')]){case'always':return handleAlwaysCheckDuplicate(_0x18c835,_0x339be7,_0x5e02e9,_0x1be11e);case _0xa263('0x20'):return handleOnlyIfOpenCheckDuplicate(_0x18c835,_0x339be7,_0x5e02e9,_0x1be11e);default:return handleNeverCheckDuplicate(_0x18c835,_0x339be7,_0x5e02e9);}});}function createHopperForVoiceQueues(_0x33b88a,_0x501a7e){return _0x33b88a[_0xa263('0x7')][_0xa263('0x21')]({'where':{'type':_0xa263('0x22')},'attributes':['id',_0xa263('0x1f'),_0xa263('0xd')],'include':[{'model':_0x33b88a[_0xa263('0x23')],'as':'Lists','where':{'id':_0x501a7e['ListId']}}],'raw':!![]})[_0xa263('0x16')](function(_0x1fdde0){var _0x52cbc7=_0x1fdde0[_0xa263('0x24')](function(_0x1fcc6f){return handleCheckDuplicate(_0x33b88a,_0x1fcc6f,_0x501a7e,![]);});return Promise[_0xa263('0x25')](_0x52cbc7);});}function createHopperForCampaigns(_0x1b3bde,_0x1b031f){return _0x1b3bde[_0xa263('0x26')][_0xa263('0x21')]({'attributes':['id',_0xa263('0x1f'),_0xa263('0xd')],'include':[{'model':_0x1b3bde[_0xa263('0x23')],'as':'Lists','where':{'id':_0x1b031f['ListId']}}],'raw':!![]})[_0xa263('0x16')](function(_0x5ab54e){var _0x3d9f12=_0x5ab54e[_0xa263('0x24')](function(_0x4847d0){return handleCheckDuplicate(_0x1b3bde,_0x4847d0,_0x1b031f,!![]);});return Promise[_0xa263('0x25')](_0x3d9f12);});}function createHopperBlackForVoiceQueues(_0x6bdd43,_0x3449b7){return _0x6bdd43['VoiceQueue'][_0xa263('0x21')]({'where':{'type':_0xa263('0x22')},'attributes':['id'],'include':[{'model':_0x6bdd43[_0xa263('0x23')],'as':_0xa263('0x27'),'where':{'id':_0x3449b7[_0xa263('0x11')]}}],'raw':!![]})['then'](function(_0x51c95b){var _0x1c6848=_0x51c95b[_0xa263('0x24')](function(_0x506a78){return _0x6bdd43[_0xa263('0x28')][_0xa263('0x1c')]({'phone':_0x3449b7[_0xa263('0x10')],'ContactId':_0x3449b7['id'],'ListId':_0x3449b7['ListId'],'VoiceQueueId':_0x506a78['id']});});return Promise[_0xa263('0x25')](_0x1c6848);});}function createHopperBlackForCampaigns(_0x39bedf,_0x2be7ca){return _0x39bedf[_0xa263('0x26')][_0xa263('0x21')]({'attributes':['id'],'include':[{'model':_0x39bedf['CmList'],'as':_0xa263('0x27'),'where':{'id':_0x2be7ca['ListId']}}],'raw':!![]})[_0xa263('0x16')](function(_0x20998d){var _0xd1b890=_0x20998d[_0xa263('0x24')](function(_0x4109d1){return _0x39bedf[_0xa263('0x28')][_0xa263('0x1c')]({'phone':_0x2be7ca[_0xa263('0x10')],'ContactId':_0x2be7ca['id'],'ListId':_0x2be7ca['ListId'],'CampaignId':_0x4109d1['id']});});return Promise['all'](_0xd1b890);});}module[_0xa263('0x29')]=function(_0x259989){return _0x259989[_0xa263('0x2a')](_0xa263('0x2b'),attributes,{'tableName':_0xa263('0x2c'),'paranoid':!![],'indexes':[{'name':_0xa263('0x10'),'fields':[_0xa263('0x10')]},{'name':'fti_cm_contacts','fields':[_0xa263('0x2d'),_0xa263('0x2e'),_0xa263('0x10'),_0xa263('0x2f'),'fax',_0xa263('0x30')],'type':_0xa263('0x31')}],'timestamps':!![],'charset':'utf8mb4','collate':'utf8mb4_unicode_ci','hooks':{'afterCreate':function(_0x34c1e2,_0x44de55,_0x3b08ec){var _0x48a073=_0x259989[_0xa263('0x32')];var _0x59777b=_0x34c1e2[_0xa263('0x33')]({'plain':!![]});if(!_0x59777b[_0xa263('0x11')]){logger[_0xa263('0x34')](_0xa263('0x35')+_0x59777b['id']);return _0x3b08ec();}if(!_0x59777b[_0xa263('0x10')]){return _0x3b08ec();}return createHopperForVoiceQueues(_0x48a073,_0x59777b)['then'](function(){return createHopperBlackForVoiceQueues(_0x48a073,_0x59777b);})[_0xa263('0x16')](function(){return createHopperForCampaigns(_0x48a073,_0x59777b);})[_0xa263('0x16')](function(){return createHopperBlackForCampaigns(_0x48a073,_0x59777b);})[_0xa263('0x16')](function(){return _0x3b08ec();})[_0xa263('0x36')](function(_0x184d8f){logger[_0xa263('0x34')]('[cmContact][afterCreate]',_0x184d8f[_0xa263('0x37')]);_0x3b08ec();});},'afterDestroy':function(_0xd18250,_0x14b70e,_0x8366f5){var _0x7f31ba=_0x259989[_0xa263('0x32')];var _0x6c44f=_0xd18250[_0xa263('0x33')]({'plain':!![]});return _0x7f31ba[_0xa263('0x1e')][_0xa263('0x21')]({'raw':!![],'where':{'ListId':_0x6c44f['ListId'],'ContactId':_0x6c44f['id']}})['then'](function(_0x2c5ba0){if(!_[_0xa263('0x38')](_0x2c5ba0)){var _0x235b24=[];for(var _0x566998=0x0;_0x566998<_0x2c5ba0[_0xa263('0x39')];_0x566998+=0x1){var _0x30c133=_0x7f31ba[_0xa263('0x1e')][_0xa263('0x3a')]({'where':{'ListId':_0x2c5ba0[_0x566998][_0xa263('0x11')],'ContactId':_0x2c5ba0[_0x566998][_0xa263('0x3b')],'VoiceQueueId':_0x2c5ba0[_0x566998][_0xa263('0x1b')],'CampaignId':_0x2c5ba0[_0x566998][_0xa263('0x1a')]}});_0x235b24['push'](_0x30c133);}return Promise[_0xa263('0x25')](_0x235b24);}})[_0xa263('0x16')](function(_0x5bc0f5){logger[_0xa263('0x3c')](_0xa263('0x3d'),util[_0xa263('0x3e')](_0x5bc0f5,{'showHidden':![],'depth':null}));_0x8366f5();})[_0xa263('0x36')](function(_0x101695){logger['error']('[CmContact][afterDestroy][Error]',util[_0xa263('0x3e')](_0x101695,{'showHidden':![],'depth':null}));_0x8366f5(_0x101695);});}}});};