8109e97f33147b24728f7cd158c6819a9c5356a9
[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 _0x9ee4=['ContactId','push','info','[CmContact][afterDestroy][Succesfull]','inspect','[CmContact][afterDestroy][Error]','lodash','util','moment','../../config/environment/shared','Campaign','VoiceQueue','scheduledat','dialTimezone','findOne','then','isNil','resolve','utcOffset','add','format','YYYY-MM-DD\x20HH:mm:ss','phone','ListId','priority','callbackUniqueid','assign','CmHopper','[Always]\x20Hopper\x20already\x20exists\x20for\x20contact\x20with\x20phone\x20','\x20in\x20Campaign\x20with\x20id\x20','CmHopperFinal','[Always]\x20Hopper\x20Final\x20already\x20exists\x20for\x20contact\x20with\x20phone\x20','create','[OnlyIfOpen]\x20Hopper\x20already\x20exists\x20for\x20contact\x20with\x20phone\x20','CampaignId','VoiceQueueId','dialCheckDuplicateType','always','onlyIfOpen','Lists','map','all','findAll','CmList','BlackLists','CmHopperBlack','exports','define','CmContact','firstName','lastName','fax','email','FULLTEXT','utf8mb4','models','get','error','[cmContact][afterCreate]\x20List\x20not\x20found\x20for\x20contact\x20with\x20id\x20','catch','message','isEmpty','length'];(function(_0x586570,_0x1962cc){var _0x1759b2=function(_0x373a72){while(--_0x373a72){_0x586570['push'](_0x586570['shift']());}};_0x1759b2(++_0x1962cc);}(_0x9ee4,0xc3));var _0x49ee=function(_0x4c3fe8,_0x8f61f0){_0x4c3fe8=_0x4c3fe8-0x0;var _0x3ccb2=_0x9ee4[_0x4c3fe8];return _0x3ccb2;};'use strict';var _=require(_0x49ee('0x0'));var util=require(_0x49ee('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x49ee('0x2'));var shared=require(_0x49ee('0x3'));var attributes=require('./cmContact.attributes');function getTimezoneCallbackAt(_0x33ea2b,_0x1db562,_0x1b15a2,_0x336d5a){var _0x199a11=_0x336d5a?_0x49ee('0x4'):_0x49ee('0x5');var _0x5d4f00=_0x1b15a2[_0x49ee('0x6')]?_0x1b15a2[_0x49ee('0x6')]:moment()['format']('YYYY-MM-DD\x20HH:mm:ss');if(_['isNil'](_0x1b15a2[_0x49ee('0x7')])){return Promise['resolve'](_0x5d4f00);}return _0x33ea2b[_0x199a11][_0x49ee('0x8')]({'where':{'id':_0x1db562}})[_0x49ee('0x9')](function(_0x2e0f17){if(_[_0x49ee('0xa')](_0x2e0f17)||_['isNil'](_0x2e0f17['dialTimezone'])){return Promise[_0x49ee('0xb')](_0x5d4f00);}var _0x62e342=shared['timezones'];var _0x5dfdaa=_0x62e342[_0x2e0f17['dialTimezone']];var _0x408669=_0x62e342[_0x1b15a2[_0x49ee('0x7')]];if(_['isNil'](_0x5dfdaa)&&_[_0x49ee('0xa')](_0x408669)){return Promise['resolve'](_0x5d4f00);}var _0x4f8610=_0x5dfdaa[_0x49ee('0xc')]-_0x408669[_0x49ee('0xc')];var _0x562799=_0x1b15a2['scheduledat']?_0x1b15a2[_0x49ee('0x6')]:moment();_0x5d4f00=moment(_0x562799)[_0x49ee('0xd')](_0x4f8610,'minutes')[_0x49ee('0xe')](_0x49ee('0xf'));return Promise['resolve'](_0x5d4f00);});}function getNewHopperPayload(_0x6bd0b){return{'phone':_0x6bd0b[_0x49ee('0x10')],'ContactId':_0x6bd0b['id'],'ListId':_0x6bd0b[_0x49ee('0x11')],'scheduledat':_0x6bd0b[_0x49ee('0x6')]?_0x6bd0b[_0x49ee('0x6')]:moment()[_0x49ee('0xe')](_0x49ee('0xf')),'priority':_0x6bd0b[_0x49ee('0x12')]?_0x6bd0b['priority']:0x2,'callback':_0x6bd0b[_0x49ee('0x13')]?!![]:![],'callbackuniqueid':_0x6bd0b[_0x49ee('0x13')]?_0x6bd0b[_0x49ee('0x13')]:undefined,'callbackat':_0x6bd0b[_0x49ee('0x13')]?moment()['format'](_0x49ee('0xf')):undefined};}function handleAlwaysCheckDuplicate(_0x41fecd,_0x17950c,_0x1f26c6,_0x53421e){var _0x53cc48={'phone':_0x1f26c6[_0x49ee('0x10')]};var _0x5e382c={'calleridnum':_0x1f26c6[_0x49ee('0x10')]};if(_0x53421e){Object[_0x49ee('0x14')](_0x53cc48,{'CampaignId':_0x17950c['id']});Object[_0x49ee('0x14')](_0x5e382c,{'CampaignId':_0x17950c['id']});}else{Object[_0x49ee('0x14')](_0x53cc48,{'VoiceQueueId':_0x17950c['id']});Object[_0x49ee('0x14')](_0x5e382c,{'VoiceQueueId':_0x17950c['id']});}return _0x41fecd[_0x49ee('0x15')]['findOne']({'where':_0x53cc48})[_0x49ee('0x9')](function(_0x491ad3){if(_0x491ad3){throw new Error(_0x49ee('0x16')+_0x1f26c6[_0x49ee('0x10')]+_0x49ee('0x17')+_0x17950c['id']);}return _0x41fecd[_0x49ee('0x18')][_0x49ee('0x8')]({'where':_0x5e382c});})[_0x49ee('0x9')](function(_0x5b582d){if(_0x5b582d){throw new Error(_0x49ee('0x19')+_0x1f26c6[_0x49ee('0x10')]+'\x20in\x20Campaign\x20with\x20id\x20'+_0x17950c['id']);}var _0x3199b3=getNewHopperPayload(_0x1f26c6);if(_0x53421e){_0x3199b3['CampaignId']=_0x17950c['id'];}else{_0x3199b3['VoiceQueueId']=_0x17950c['id'];}return _0x41fecd[_0x49ee('0x15')][_0x49ee('0x1a')](_0x3199b3);});}function handleOnlyIfOpenCheckDuplicate(_0x1a4bf0,_0x5cab1c,_0x41c668,_0x142a9b){var _0x410da0={'phone':_0x41c668[_0x49ee('0x10')]};if(_0x142a9b){Object['assign'](_0x410da0,{'CampaignId':_0x5cab1c['id']});}else{Object['assign'](_0x410da0,{'VoiceQueueId':_0x5cab1c['id']});}return _0x1a4bf0[_0x49ee('0x15')][_0x49ee('0x8')]({'where':_0x410da0})[_0x49ee('0x9')](function(_0x5efedf){if(_0x5efedf){throw new Error(_0x49ee('0x1b')+_0x41c668['phone']+_0x49ee('0x17')+_0x5cab1c['id']);}var _0x37d002=getNewHopperPayload(_0x41c668);if(_0x142a9b){_0x37d002[_0x49ee('0x1c')]=_0x5cab1c['id'];}else{_0x37d002[_0x49ee('0x1d')]=_0x5cab1c['id'];}return _0x1a4bf0[_0x49ee('0x15')][_0x49ee('0x1a')](_0x37d002);});}function handleNeverCheckDuplicate(_0x24379c,_0x44c420,_0x27fbf5){var _0x578fec=getNewHopperPayload(_0x27fbf5);_0x578fec['VoiceQueueId']=_0x44c420['id'];return _0x24379c[_0x49ee('0x15')]['create'](_0x578fec);}function handleCheckDuplicate(_0x329193,_0x3ec387,_0x242da7,_0x37f95f){return getTimezoneCallbackAt(_0x329193,_0x3ec387,_0x242da7,_0x37f95f)[_0x49ee('0x9')](function(_0x1d1197){_0x242da7[_0x49ee('0x6')]=_0x1d1197;switch(_0x3ec387[_0x49ee('0x1e')]){case _0x49ee('0x1f'):return handleAlwaysCheckDuplicate(_0x329193,_0x3ec387,_0x242da7,_0x37f95f);case _0x49ee('0x20'):return handleOnlyIfOpenCheckDuplicate(_0x329193,_0x3ec387,_0x242da7,_0x37f95f);default:return handleNeverCheckDuplicate(_0x329193,_0x3ec387,_0x242da7);}});}function createHopperForVoiceQueues(_0x4a918c,_0x4bc914){return _0x4a918c[_0x49ee('0x5')]['findAll']({'where':{'type':'outbound'},'attributes':['id','dialCheckDuplicateType',_0x49ee('0x7')],'include':[{'model':_0x4a918c['CmList'],'as':_0x49ee('0x21'),'where':{'id':_0x4bc914['ListId']}}],'raw':!![]})[_0x49ee('0x9')](function(_0x53bc85){var _0x4125ae=_0x53bc85[_0x49ee('0x22')](function(_0x23842b){return handleCheckDuplicate(_0x4a918c,_0x23842b,_0x4bc914,![]);});return Promise[_0x49ee('0x23')](_0x4125ae);});}function createHopperForCampaigns(_0x41be4e,_0x72aeba){return _0x41be4e['Campaign'][_0x49ee('0x24')]({'attributes':['id','dialCheckDuplicateType',_0x49ee('0x7')],'include':[{'model':_0x41be4e[_0x49ee('0x25')],'as':_0x49ee('0x21'),'where':{'id':_0x72aeba[_0x49ee('0x11')]}}],'raw':!![]})[_0x49ee('0x9')](function(_0x1f1fc0){var _0x517fb7=_0x1f1fc0['map'](function(_0x3934c4){return handleCheckDuplicate(_0x41be4e,_0x3934c4,_0x72aeba,!![]);});return Promise['all'](_0x517fb7);});}function createHopperBlackForVoiceQueues(_0x138bed,_0x4dcbed){return _0x138bed['VoiceQueue'][_0x49ee('0x24')]({'where':{'type':'outbound'},'attributes':['id'],'include':[{'model':_0x138bed[_0x49ee('0x25')],'as':_0x49ee('0x26'),'where':{'id':_0x4dcbed[_0x49ee('0x11')]}}],'raw':!![]})[_0x49ee('0x9')](function(_0xf55f8){var _0x4c8dbb=_0xf55f8[_0x49ee('0x22')](function(_0x157fc4){return _0x138bed[_0x49ee('0x27')][_0x49ee('0x1a')]({'phone':_0x4dcbed['phone'],'ContactId':_0x4dcbed['id'],'ListId':_0x4dcbed[_0x49ee('0x11')],'VoiceQueueId':_0x157fc4['id']});});return Promise['all'](_0x4c8dbb);});}function createHopperBlackForCampaigns(_0x69fab7,_0x51f71a){return _0x69fab7[_0x49ee('0x4')][_0x49ee('0x24')]({'attributes':['id'],'include':[{'model':_0x69fab7['CmList'],'as':_0x49ee('0x26'),'where':{'id':_0x51f71a[_0x49ee('0x11')]}}],'raw':!![]})[_0x49ee('0x9')](function(_0x358cea){var _0x5c9709=_0x358cea['map'](function(_0x11ce3d){return _0x69fab7['CmHopperBlack'][_0x49ee('0x1a')]({'phone':_0x51f71a[_0x49ee('0x10')],'ContactId':_0x51f71a['id'],'ListId':_0x51f71a['ListId'],'CampaignId':_0x11ce3d['id']});});return Promise[_0x49ee('0x23')](_0x5c9709);});}module[_0x49ee('0x28')]=function(_0xe30425){return _0xe30425[_0x49ee('0x29')](_0x49ee('0x2a'),attributes,{'tableName':'cm_contacts','paranoid':!![],'indexes':[{'name':_0x49ee('0x10'),'fields':['phone']},{'name':'fti_cm_contacts','fields':[_0x49ee('0x2b'),_0x49ee('0x2c'),'phone','mobile',_0x49ee('0x2d'),_0x49ee('0x2e')],'type':_0x49ee('0x2f')}],'timestamps':!![],'charset':_0x49ee('0x30'),'collate':'utf8mb4_unicode_ci','hooks':{'afterCreate':function(_0x4cb8d0,_0x130651,_0x73b01c){var _0x25259d=_0xe30425[_0x49ee('0x31')];var _0x3f9386=_0x4cb8d0[_0x49ee('0x32')]({'plain':!![]});if(!_0x3f9386[_0x49ee('0x11')]){logger[_0x49ee('0x33')](_0x49ee('0x34')+_0x3f9386['id']);return _0x73b01c();}if(!_0x3f9386[_0x49ee('0x10')]){return _0x73b01c();}return createHopperForVoiceQueues(_0x25259d,_0x3f9386)[_0x49ee('0x9')](function(){return createHopperBlackForVoiceQueues(_0x25259d,_0x3f9386);})[_0x49ee('0x9')](function(){return createHopperForCampaigns(_0x25259d,_0x3f9386);})[_0x49ee('0x9')](function(){return createHopperBlackForCampaigns(_0x25259d,_0x3f9386);})[_0x49ee('0x9')](function(){return _0x73b01c();})[_0x49ee('0x35')](function(_0x2735bc){logger['error']('[cmContact][afterCreate]',_0x2735bc[_0x49ee('0x36')]);_0x73b01c();});},'afterDestroy':function(_0x2009f8,_0x1f43c4,_0x15752e){var _0x51c227=_0xe30425[_0x49ee('0x31')];var _0x4417e9=_0x2009f8[_0x49ee('0x32')]({'plain':!![]});return _0x51c227['CmHopper']['findAll']({'raw':!![],'where':{'ListId':_0x4417e9[_0x49ee('0x11')],'ContactId':_0x4417e9['id']}})['then'](function(_0x3c34a9){if(!_[_0x49ee('0x37')](_0x3c34a9)){var _0x5e9ba5=[];for(var _0x1af086=0x0;_0x1af086<_0x3c34a9[_0x49ee('0x38')];_0x1af086+=0x1){var _0x1d3448=_0x51c227['CmHopper']['destroy']({'where':{'ListId':_0x3c34a9[_0x1af086][_0x49ee('0x11')],'ContactId':_0x3c34a9[_0x1af086][_0x49ee('0x39')],'VoiceQueueId':_0x3c34a9[_0x1af086][_0x49ee('0x1d')],'CampaignId':_0x3c34a9[_0x1af086][_0x49ee('0x1c')]}});_0x5e9ba5[_0x49ee('0x3a')](_0x1d3448);}return Promise[_0x49ee('0x23')](_0x5e9ba5);}})[_0x49ee('0x9')](function(_0x2e816a){logger[_0x49ee('0x3b')](_0x49ee('0x3c'),util[_0x49ee('0x3d')](_0x2e816a,{'showHidden':![],'depth':null}));_0x15752e();})[_0x49ee('0x35')](function(_0x5a8514){logger[_0x49ee('0x33')](_0x49ee('0x3e'),util[_0x49ee('0x3d')](_0x5a8514,{'showHidden':![],'depth':null}));_0x15752e(_0x5a8514);});}}});};