Built motion from commit b0a9a629.|2.6.33
[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 _0x7706=['utcOffset','add','minutes','YYYY-MM-DD\x20HH:mm:ss','phone','ListId','priority','callbackUniqueid','assign','CmHopper','findOne','[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','CampaignId','create','[OnlyIfOpen]\x20Hopper\x20already\x20exists\x20for\x20contact\x20with\x20phone\x20','VoiceQueueId','dialCheckDuplicateType','always','onlyIfOpen','findAll','outbound','CmList','Lists','map','all','BlackLists','CmHopperBlack','exports','define','CmContact','cm_contacts','fti_cm_contacts','firstName','lastName','mobile','utf8mb4','utf8mb4_unicode_ci','models','catch','error','[cmContact][afterCreate]','get','isEmpty','length','push','info','[CmContact][afterDestroy][Succesfull]','inspect','[CmContact][afterDestroy][Error]','lodash','util','../../config/logger','api','moment','./cmContact.attributes','Campaign','VoiceQueue','scheduledat','format','resolve','then','isNil','dialTimezone','timezones'];(function(_0x138adb,_0x193fee){var _0x1b27f2=function(_0x5e97a2){while(--_0x5e97a2){_0x138adb['push'](_0x138adb['shift']());}};_0x1b27f2(++_0x193fee);}(_0x7706,0xba));var _0x6770=function(_0x404b97,_0x16d72f){_0x404b97=_0x404b97-0x0;var _0x32992c=_0x7706[_0x404b97];return _0x32992c;};'use strict';var _=require(_0x6770('0x0'));var util=require(_0x6770('0x1'));var logger=require(_0x6770('0x2'))(_0x6770('0x3'));var moment=require(_0x6770('0x4'));var shared=require('../../config/environment/shared');var attributes=require(_0x6770('0x5'));function getTimezoneCallbackAt(_0x59656a,_0x1bdf5d,_0x238da6,_0x2aaae1){var _0x177f84=_0x2aaae1?_0x6770('0x6'):_0x6770('0x7');var _0x3a1168=_0x238da6[_0x6770('0x8')]?_0x238da6[_0x6770('0x8')]:moment()[_0x6770('0x9')]('YYYY-MM-DD\x20HH:mm:ss');if(_['isNil'](_0x238da6['dialTimezone'])){return Promise[_0x6770('0xa')](_0x3a1168);}return _0x59656a[_0x177f84]['findOne']({'where':{'id':_0x1bdf5d}})[_0x6770('0xb')](function(_0x1e5e53){if(_[_0x6770('0xc')](_0x1e5e53)||_[_0x6770('0xc')](_0x1e5e53[_0x6770('0xd')])){return Promise['resolve'](_0x3a1168);}var _0x485ecd=shared[_0x6770('0xe')];var _0x4b57e9=_0x485ecd[_0x1e5e53[_0x6770('0xd')]];var _0x2f9a12=_0x485ecd[_0x238da6[_0x6770('0xd')]];if(_[_0x6770('0xc')](_0x4b57e9)&&_[_0x6770('0xc')](_0x2f9a12)){return Promise['resolve'](_0x3a1168);}var _0x47754e=_0x4b57e9[_0x6770('0xf')]-_0x2f9a12['utcOffset'];var _0x583c42=_0x238da6[_0x6770('0x8')]?_0x238da6[_0x6770('0x8')]:moment();_0x3a1168=moment(_0x583c42)[_0x6770('0x10')](_0x47754e,_0x6770('0x11'))[_0x6770('0x9')](_0x6770('0x12'));return Promise[_0x6770('0xa')](_0x3a1168);});}function getNewHopperPayload(_0x4d111e){return{'phone':_0x4d111e[_0x6770('0x13')],'ContactId':_0x4d111e['id'],'ListId':_0x4d111e[_0x6770('0x14')],'scheduledat':_0x4d111e[_0x6770('0x8')]?_0x4d111e['scheduledat']:moment()[_0x6770('0x9')](_0x6770('0x12')),'priority':_0x4d111e[_0x6770('0x15')]?_0x4d111e[_0x6770('0x15')]:0x2,'callback':_0x4d111e['callbackUniqueid']?!![]:![],'callbackuniqueid':_0x4d111e[_0x6770('0x16')]?_0x4d111e[_0x6770('0x16')]:undefined,'callbackat':_0x4d111e['callbackUniqueid']?moment()[_0x6770('0x9')](_0x6770('0x12')):undefined};}function handleAlwaysCheckDuplicate(_0x34f002,_0x1b5c45,_0x2ac12f,_0x21c188){var _0x4883f9={'phone':_0x2ac12f[_0x6770('0x13')]};var _0x2f9bac={'calleridnum':_0x2ac12f[_0x6770('0x13')]};if(_0x21c188){Object[_0x6770('0x17')](_0x4883f9,{'CampaignId':_0x1b5c45['id']});Object[_0x6770('0x17')](_0x2f9bac,{'CampaignId':_0x1b5c45['id']});}else{Object[_0x6770('0x17')](_0x4883f9,{'VoiceQueueId':_0x1b5c45['id']});Object['assign'](_0x2f9bac,{'VoiceQueueId':_0x1b5c45['id']});}return _0x34f002[_0x6770('0x18')][_0x6770('0x19')]({'where':_0x4883f9})[_0x6770('0xb')](function(_0x2e5a5e){if(_0x2e5a5e){throw new Error(_0x6770('0x1a')+_0x2ac12f[_0x6770('0x13')]+_0x6770('0x1b')+_0x1b5c45['id']);}return _0x34f002[_0x6770('0x1c')][_0x6770('0x19')]({'where':_0x2f9bac});})[_0x6770('0xb')](function(_0x6c5e6e){if(_0x6c5e6e){throw new Error(_0x6770('0x1d')+_0x2ac12f[_0x6770('0x13')]+_0x6770('0x1b')+_0x1b5c45['id']);}var _0x5889dc=getNewHopperPayload(_0x2ac12f);if(_0x21c188){_0x5889dc[_0x6770('0x1e')]=_0x1b5c45['id'];}else{_0x5889dc['VoiceQueueId']=_0x1b5c45['id'];}return _0x34f002['CmHopper'][_0x6770('0x1f')](_0x5889dc);});}function handleOnlyIfOpenCheckDuplicate(_0xbe1cbd,_0x2edb5b,_0xd379f7,_0x468a32){var _0x5c654e={'phone':_0xd379f7[_0x6770('0x13')]};if(_0x468a32){Object[_0x6770('0x17')](_0x5c654e,{'CampaignId':_0x2edb5b['id']});}else{Object[_0x6770('0x17')](_0x5c654e,{'VoiceQueueId':_0x2edb5b['id']});}return _0xbe1cbd[_0x6770('0x18')]['findOne']({'where':_0x5c654e})[_0x6770('0xb')](function(_0xbebeca){if(_0xbebeca){throw new Error(_0x6770('0x20')+_0xd379f7[_0x6770('0x13')]+_0x6770('0x1b')+_0x2edb5b['id']);}var _0x2ce6bd=getNewHopperPayload(_0xd379f7);if(_0x468a32){_0x2ce6bd['CampaignId']=_0x2edb5b['id'];}else{_0x2ce6bd[_0x6770('0x21')]=_0x2edb5b['id'];}return _0xbe1cbd[_0x6770('0x18')][_0x6770('0x1f')](_0x2ce6bd);});}function handleNeverCheckDuplicate(_0x4a4471,_0x2b2e88,_0x4e52ab){var _0xac7598=getNewHopperPayload(_0x4e52ab);_0xac7598[_0x6770('0x21')]=_0x2b2e88['id'];return _0x4a4471['CmHopper'][_0x6770('0x1f')](_0xac7598);}function handleCheckDuplicate(_0x40485c,_0x22195e,_0xa8fd1,_0x35bd26){return getTimezoneCallbackAt(_0x40485c,_0x22195e,_0xa8fd1,_0x35bd26)['then'](function(_0x35a516){_0xa8fd1[_0x6770('0x8')]=_0x35a516;switch(_0x22195e[_0x6770('0x22')]){case _0x6770('0x23'):return handleAlwaysCheckDuplicate(_0x40485c,_0x22195e,_0xa8fd1,_0x35bd26);case _0x6770('0x24'):return handleOnlyIfOpenCheckDuplicate(_0x40485c,_0x22195e,_0xa8fd1,_0x35bd26);default:return handleNeverCheckDuplicate(_0x40485c,_0x22195e,_0xa8fd1);}});}function createHopperForVoiceQueues(_0x3bee98,_0x4afb78){return _0x3bee98[_0x6770('0x7')][_0x6770('0x25')]({'where':{'type':_0x6770('0x26')},'attributes':['id',_0x6770('0x22'),'dialTimezone'],'include':[{'model':_0x3bee98[_0x6770('0x27')],'as':_0x6770('0x28'),'where':{'id':_0x4afb78[_0x6770('0x14')]}}],'raw':!![]})[_0x6770('0xb')](function(_0x52a163){var _0x292e23=_0x52a163[_0x6770('0x29')](function(_0x41823f){return handleCheckDuplicate(_0x3bee98,_0x41823f,_0x4afb78,![]);});return Promise['all'](_0x292e23);});}function createHopperForCampaigns(_0x497645,_0x1f79a0){return _0x497645[_0x6770('0x6')]['findAll']({'attributes':['id',_0x6770('0x22'),_0x6770('0xd')],'include':[{'model':_0x497645[_0x6770('0x27')],'as':_0x6770('0x28'),'where':{'id':_0x1f79a0[_0x6770('0x14')]}}],'raw':!![]})[_0x6770('0xb')](function(_0x575cc2){var _0x1b019e=_0x575cc2[_0x6770('0x29')](function(_0x6f9a8f){return handleCheckDuplicate(_0x497645,_0x6f9a8f,_0x1f79a0,!![]);});return Promise[_0x6770('0x2a')](_0x1b019e);});}function createHopperBlackForVoiceQueues(_0x113f5e,_0x38ee52){return _0x113f5e[_0x6770('0x7')][_0x6770('0x25')]({'where':{'type':_0x6770('0x26')},'attributes':['id'],'include':[{'model':_0x113f5e['CmList'],'as':_0x6770('0x2b'),'where':{'id':_0x38ee52[_0x6770('0x14')]}}],'raw':!![]})[_0x6770('0xb')](function(_0xeea777){var _0x45ec43=_0xeea777['map'](function(_0x2e534b){return _0x113f5e[_0x6770('0x2c')]['create']({'phone':_0x38ee52[_0x6770('0x13')],'ContactId':_0x38ee52['id'],'ListId':_0x38ee52[_0x6770('0x14')],'VoiceQueueId':_0x2e534b['id']});});return Promise[_0x6770('0x2a')](_0x45ec43);});}function createHopperBlackForCampaigns(_0x2e20c9,_0x3c354e){return _0x2e20c9[_0x6770('0x6')][_0x6770('0x25')]({'attributes':['id'],'include':[{'model':_0x2e20c9[_0x6770('0x27')],'as':_0x6770('0x2b'),'where':{'id':_0x3c354e[_0x6770('0x14')]}}],'raw':!![]})['then'](function(_0x34e764){var _0x433f16=_0x34e764['map'](function(_0x1b08c6){return _0x2e20c9[_0x6770('0x2c')][_0x6770('0x1f')]({'phone':_0x3c354e[_0x6770('0x13')],'ContactId':_0x3c354e['id'],'ListId':_0x3c354e[_0x6770('0x14')],'CampaignId':_0x1b08c6['id']});});return Promise[_0x6770('0x2a')](_0x433f16);});}module[_0x6770('0x2d')]=function(_0x5ef308){return _0x5ef308[_0x6770('0x2e')](_0x6770('0x2f'),attributes,{'tableName':_0x6770('0x30'),'paranoid':!![],'indexes':[{'name':_0x6770('0x13'),'fields':[_0x6770('0x13')]},{'name':_0x6770('0x31'),'fields':[_0x6770('0x32'),_0x6770('0x33'),'phone',_0x6770('0x34'),'fax','email'],'type':'FULLTEXT'}],'timestamps':!![],'charset':_0x6770('0x35'),'collate':_0x6770('0x36'),'hooks':{'afterCreate':function(_0x3a2166,_0x12d6bf,_0x43c9bd){var _0x14a349=_0x5ef308[_0x6770('0x37')];var _0x1087e2=_0x3a2166['get']({'plain':!![]});if(!_0x1087e2['ListId']){logger['error']('[cmContact][afterCreate]\x20List\x20not\x20found\x20for\x20contact\x20with\x20id\x20'+_0x1087e2['id']);return _0x43c9bd();}if(!_0x1087e2['phone']){return _0x43c9bd();}return createHopperForVoiceQueues(_0x14a349,_0x1087e2)[_0x6770('0xb')](function(){return createHopperBlackForVoiceQueues(_0x14a349,_0x1087e2);})[_0x6770('0xb')](function(){return createHopperForCampaigns(_0x14a349,_0x1087e2);})[_0x6770('0xb')](function(){return createHopperBlackForCampaigns(_0x14a349,_0x1087e2);})[_0x6770('0xb')](function(){return _0x43c9bd();})[_0x6770('0x38')](function(_0x5168b2){logger[_0x6770('0x39')](_0x6770('0x3a'),_0x5168b2['message']);_0x43c9bd();});},'afterDestroy':function(_0x38d2d1,_0x19275f,_0x1d6001){var _0x44848e=_0x5ef308['models'];var _0x2d04ea=_0x38d2d1[_0x6770('0x3b')]({'plain':!![]});return _0x44848e[_0x6770('0x18')][_0x6770('0x25')]({'raw':!![],'where':{'ListId':_0x2d04ea[_0x6770('0x14')],'ContactId':_0x2d04ea['id']}})[_0x6770('0xb')](function(_0x3f7279){if(!_[_0x6770('0x3c')](_0x3f7279)){var _0x5a6165=[];for(var _0x50b233=0x0;_0x50b233<_0x3f7279[_0x6770('0x3d')];_0x50b233+=0x1){var _0x524026=_0x44848e['CmHopper']['destroy']({'where':{'ListId':_0x3f7279[_0x50b233][_0x6770('0x14')],'ContactId':_0x3f7279[_0x50b233]['ContactId'],'VoiceQueueId':_0x3f7279[_0x50b233][_0x6770('0x21')],'CampaignId':_0x3f7279[_0x50b233][_0x6770('0x1e')]}});_0x5a6165[_0x6770('0x3e')](_0x524026);}return Promise[_0x6770('0x2a')](_0x5a6165);}})['then'](function(_0x1a796a){logger[_0x6770('0x3f')](_0x6770('0x40'),util[_0x6770('0x41')](_0x1a796a,{'showHidden':![],'depth':null}));_0x1d6001();})['catch'](function(_0x42352d){logger[_0x6770('0x39')](_0x6770('0x42'),util[_0x6770('0x41')](_0x42352d,{'showHidden':![],'depth':null}));_0x1d6001(_0x42352d);});}}});};