Built motion from commit c116dc8b.|2.6.30
[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 _0x68bf=['[OnlyIfOpen]\x20Hopper\x20already\x20exists\x20for\x20contact\x20with\x20phone\x20','\x20in\x20Campaign\x20with\x20id\x20','dialCheckDuplicateType','onlyIfOpen','findAll','outbound','CmList','Lists','ListId','map','all','BlackLists','CmHopperBlack','exports','define','CmContact','cm_contacts','firstName','lastName','mobile','fax','FULLTEXT','utf8mb4_unicode_ci','models','error','[cmContact][afterCreate]\x20List\x20not\x20found\x20for\x20contact\x20with\x20id\x20','catch','get','isEmpty','length','destroy','ContactId','info','[CmContact][afterDestroy][Succesfull]','inspect','[CmContact][afterDestroy][Error]','lodash','util','../../config/logger','moment','./cmContact.attributes','Campaign','VoiceQueue','scheduledat','dialTimezone','resolve','findOne','then','isNil','timezones','utcOffset','add','YYYY-MM-DD\x20HH:mm:ss','phone','format','priority','callbackUniqueid','assign','CmHopper','[Always]\x20Hopper\x20already\x20exists\x20for\x20contact\x20with\x20phone\x20','CmHopperFinal','[Always]\x20Hopper\x20Final\x20already\x20exists\x20for\x20contact\x20with\x20phone\x20','CampaignId','VoiceQueueId','create'];(function(_0x59b732,_0x471ce6){var _0x17e28f=function(_0x6c22f8){while(--_0x6c22f8){_0x59b732['push'](_0x59b732['shift']());}};_0x17e28f(++_0x471ce6);}(_0x68bf,0xe7));var _0xf68b=function(_0x332806,_0x100100){_0x332806=_0x332806-0x0;var _0x166615=_0x68bf[_0x332806];return _0x166615;};'use strict';var _=require(_0xf68b('0x0'));var util=require(_0xf68b('0x1'));var logger=require(_0xf68b('0x2'))('api');var moment=require(_0xf68b('0x3'));var shared=require('../../config/environment/shared');var attributes=require(_0xf68b('0x4'));function getTimezoneCallbackAt(_0x315b53,_0x17477b,_0x504775,_0x1d20e6){var _0x46851b=_0x1d20e6?_0xf68b('0x5'):_0xf68b('0x6');var _0x3801f3=_0x504775[_0xf68b('0x7')]?_0x504775[_0xf68b('0x7')]:moment()['format']('YYYY-MM-DD\x20HH:mm:ss');if(_['isNil'](_0x504775[_0xf68b('0x8')])){return Promise[_0xf68b('0x9')](_0x3801f3);}return _0x315b53[_0x46851b][_0xf68b('0xa')]({'where':{'id':_0x17477b}})[_0xf68b('0xb')](function(_0x2a78e3){if(_['isNil'](_0x2a78e3)||_[_0xf68b('0xc')](_0x2a78e3['dialTimezone'])){return Promise['resolve'](_0x3801f3);}var _0x191bb6=shared[_0xf68b('0xd')];var _0x4ea7ac=_0x191bb6[_0x2a78e3[_0xf68b('0x8')]];var _0x29aba9=_0x191bb6[_0x504775[_0xf68b('0x8')]];if(_[_0xf68b('0xc')](_0x4ea7ac)&&_['isNil'](_0x29aba9)){return Promise[_0xf68b('0x9')](_0x3801f3);}var _0x571c23=_0x4ea7ac['utcOffset']-_0x29aba9[_0xf68b('0xe')];var _0x4a5846=_0x504775[_0xf68b('0x7')]?_0x504775['scheduledat']:moment();_0x3801f3=moment(_0x4a5846)[_0xf68b('0xf')](_0x571c23,'minutes')['format'](_0xf68b('0x10'));return Promise[_0xf68b('0x9')](_0x3801f3);});}function getNewHopperPayload(_0x12a3b1){return{'phone':_0x12a3b1[_0xf68b('0x11')],'ContactId':_0x12a3b1['id'],'ListId':_0x12a3b1['ListId'],'scheduledat':_0x12a3b1[_0xf68b('0x7')]?_0x12a3b1['scheduledat']:moment()[_0xf68b('0x12')](_0xf68b('0x10')),'priority':_0x12a3b1[_0xf68b('0x13')]?_0x12a3b1[_0xf68b('0x13')]:0x2,'callback':_0x12a3b1['callbackUniqueid']?!![]:![],'callbackuniqueid':_0x12a3b1[_0xf68b('0x14')]?_0x12a3b1[_0xf68b('0x14')]:undefined,'callbackat':_0x12a3b1['callbackUniqueid']?moment()['format'](_0xf68b('0x10')):undefined};}function handleAlwaysCheckDuplicate(_0x502d63,_0x2f1aec,_0x5430ef,_0x4379d7){var _0x13153e={'phone':_0x5430ef[_0xf68b('0x11')]};var _0x2d9c78={'calleridnum':_0x5430ef[_0xf68b('0x11')]};if(_0x4379d7){Object[_0xf68b('0x15')](_0x13153e,{'CampaignId':_0x2f1aec['id']});Object['assign'](_0x2d9c78,{'CampaignId':_0x2f1aec['id']});}else{Object[_0xf68b('0x15')](_0x13153e,{'VoiceQueueId':_0x2f1aec['id']});Object[_0xf68b('0x15')](_0x2d9c78,{'VoiceQueueId':_0x2f1aec['id']});}return _0x502d63[_0xf68b('0x16')][_0xf68b('0xa')]({'where':_0x13153e})[_0xf68b('0xb')](function(_0x849335){if(_0x849335){throw new Error(_0xf68b('0x17')+_0x5430ef['phone']+'\x20in\x20Campaign\x20with\x20id\x20'+_0x2f1aec['id']);}return _0x502d63[_0xf68b('0x18')][_0xf68b('0xa')]({'where':_0x2d9c78});})[_0xf68b('0xb')](function(_0x26e8b7){if(_0x26e8b7){throw new Error(_0xf68b('0x19')+_0x5430ef['phone']+'\x20in\x20Campaign\x20with\x20id\x20'+_0x2f1aec['id']);}var _0x25c50d=getNewHopperPayload(_0x5430ef);if(_0x4379d7){_0x25c50d[_0xf68b('0x1a')]=_0x2f1aec['id'];}else{_0x25c50d[_0xf68b('0x1b')]=_0x2f1aec['id'];}return _0x502d63[_0xf68b('0x16')][_0xf68b('0x1c')](_0x25c50d);});}function handleOnlyIfOpenCheckDuplicate(_0x4540f4,_0x3d722d,_0x188357,_0xf9da0a){var _0xd74d06={'phone':_0x188357[_0xf68b('0x11')]};if(_0xf9da0a){Object[_0xf68b('0x15')](_0xd74d06,{'CampaignId':_0x3d722d['id']});}else{Object[_0xf68b('0x15')](_0xd74d06,{'VoiceQueueId':_0x3d722d['id']});}return _0x4540f4[_0xf68b('0x16')][_0xf68b('0xa')]({'where':_0xd74d06})['then'](function(_0x4e1f7b){if(_0x4e1f7b){throw new Error(_0xf68b('0x1d')+_0x188357['phone']+_0xf68b('0x1e')+_0x3d722d['id']);}var _0x366f7d=getNewHopperPayload(_0x188357);if(_0xf9da0a){_0x366f7d[_0xf68b('0x1a')]=_0x3d722d['id'];}else{_0x366f7d['VoiceQueueId']=_0x3d722d['id'];}return _0x4540f4[_0xf68b('0x16')][_0xf68b('0x1c')](_0x366f7d);});}function handleNeverCheckDuplicate(_0x56290d,_0x52d4f3,_0x2f9366){var _0x249d04=getNewHopperPayload(_0x2f9366);_0x249d04['VoiceQueueId']=_0x52d4f3['id'];return _0x56290d[_0xf68b('0x16')][_0xf68b('0x1c')](_0x249d04);}function handleCheckDuplicate(_0x25c485,_0x1eec41,_0x182349,_0x4530f0){return getTimezoneCallbackAt(_0x25c485,_0x1eec41,_0x182349,_0x4530f0)['then'](function(_0x3bf863){_0x182349[_0xf68b('0x7')]=_0x3bf863;switch(_0x1eec41[_0xf68b('0x1f')]){case'always':return handleAlwaysCheckDuplicate(_0x25c485,_0x1eec41,_0x182349,_0x4530f0);case _0xf68b('0x20'):return handleOnlyIfOpenCheckDuplicate(_0x25c485,_0x1eec41,_0x182349,_0x4530f0);default:return handleNeverCheckDuplicate(_0x25c485,_0x1eec41,_0x182349);}});}function createHopperForVoiceQueues(_0xd68838,_0x57dc9c){return _0xd68838[_0xf68b('0x6')][_0xf68b('0x21')]({'where':{'type':_0xf68b('0x22')},'attributes':['id','dialCheckDuplicateType','dialTimezone'],'include':[{'model':_0xd68838[_0xf68b('0x23')],'as':_0xf68b('0x24'),'where':{'id':_0x57dc9c[_0xf68b('0x25')]}}],'raw':!![]})[_0xf68b('0xb')](function(_0x4a9916){var _0x221241=_0x4a9916[_0xf68b('0x26')](function(_0x47701e){return handleCheckDuplicate(_0xd68838,_0x47701e,_0x57dc9c,![]);});return Promise['all'](_0x221241);});}function createHopperForCampaigns(_0x32c6dd,_0x140778){return _0x32c6dd[_0xf68b('0x5')][_0xf68b('0x21')]({'attributes':['id',_0xf68b('0x1f'),'dialTimezone'],'include':[{'model':_0x32c6dd[_0xf68b('0x23')],'as':_0xf68b('0x24'),'where':{'id':_0x140778[_0xf68b('0x25')]}}],'raw':!![]})[_0xf68b('0xb')](function(_0xbd0ff4){var _0x48f650=_0xbd0ff4[_0xf68b('0x26')](function(_0x32c3c9){return handleCheckDuplicate(_0x32c6dd,_0x32c3c9,_0x140778,!![]);});return Promise[_0xf68b('0x27')](_0x48f650);});}function createHopperBlackForVoiceQueues(_0x275bf2,_0x496c1d){return _0x275bf2[_0xf68b('0x6')][_0xf68b('0x21')]({'where':{'type':_0xf68b('0x22')},'attributes':['id'],'include':[{'model':_0x275bf2[_0xf68b('0x23')],'as':_0xf68b('0x28'),'where':{'id':_0x496c1d[_0xf68b('0x25')]}}],'raw':!![]})[_0xf68b('0xb')](function(_0x336ff2){var _0xf49a76=_0x336ff2['map'](function(_0x27418e){return _0x275bf2[_0xf68b('0x29')]['create']({'phone':_0x496c1d[_0xf68b('0x11')],'ContactId':_0x496c1d['id'],'ListId':_0x496c1d[_0xf68b('0x25')],'VoiceQueueId':_0x27418e['id']});});return Promise['all'](_0xf49a76);});}function createHopperBlackForCampaigns(_0x2e44e8,_0x3655d5){return _0x2e44e8[_0xf68b('0x5')][_0xf68b('0x21')]({'attributes':['id'],'include':[{'model':_0x2e44e8[_0xf68b('0x23')],'as':_0xf68b('0x28'),'where':{'id':_0x3655d5['ListId']}}],'raw':!![]})['then'](function(_0x469ee8){var _0x5a895b=_0x469ee8[_0xf68b('0x26')](function(_0x229992){return _0x2e44e8['CmHopperBlack'][_0xf68b('0x1c')]({'phone':_0x3655d5['phone'],'ContactId':_0x3655d5['id'],'ListId':_0x3655d5[_0xf68b('0x25')],'CampaignId':_0x229992['id']});});return Promise[_0xf68b('0x27')](_0x5a895b);});}module[_0xf68b('0x2a')]=function(_0x4bba7f){return _0x4bba7f[_0xf68b('0x2b')](_0xf68b('0x2c'),attributes,{'tableName':_0xf68b('0x2d'),'paranoid':!![],'indexes':[{'name':_0xf68b('0x11'),'fields':[_0xf68b('0x11')]},{'name':'fti_cm_contacts','fields':[_0xf68b('0x2e'),_0xf68b('0x2f'),'phone',_0xf68b('0x30'),_0xf68b('0x31'),'email'],'type':_0xf68b('0x32')}],'timestamps':!![],'charset':'utf8mb4','collate':_0xf68b('0x33'),'hooks':{'afterCreate':function(_0x5793d3,_0x318ae6,_0x457557){var _0x153f91=_0x4bba7f[_0xf68b('0x34')];var _0x4f3824=_0x5793d3['get']({'plain':!![]});if(!_0x4f3824[_0xf68b('0x25')]){logger[_0xf68b('0x35')](_0xf68b('0x36')+_0x4f3824['id']);return _0x457557();}if(!_0x4f3824[_0xf68b('0x11')]){return _0x457557();}return createHopperForVoiceQueues(_0x153f91,_0x4f3824)[_0xf68b('0xb')](function(){return createHopperBlackForVoiceQueues(_0x153f91,_0x4f3824);})[_0xf68b('0xb')](function(){return createHopperForCampaigns(_0x153f91,_0x4f3824);})['then'](function(){return createHopperBlackForCampaigns(_0x153f91,_0x4f3824);})[_0xf68b('0xb')](function(){return _0x457557();})[_0xf68b('0x37')](function(_0x409f24){logger[_0xf68b('0x35')]('[cmContact][afterCreate]',_0x409f24['message']);_0x457557();});},'afterDestroy':function(_0x18f8fb,_0x27e81c,_0x4142bf){var _0x3500a4=_0x4bba7f[_0xf68b('0x34')];var _0x17a200=_0x18f8fb[_0xf68b('0x38')]({'plain':!![]});return _0x3500a4[_0xf68b('0x16')][_0xf68b('0x21')]({'raw':!![],'where':{'ListId':_0x17a200['ListId'],'ContactId':_0x17a200['id']}})[_0xf68b('0xb')](function(_0x56be7c){if(!_[_0xf68b('0x39')](_0x56be7c)){var _0x25cdee=[];for(var _0x5f2dd9=0x0;_0x5f2dd9<_0x56be7c[_0xf68b('0x3a')];_0x5f2dd9+=0x1){var _0x32fb1e=_0x3500a4[_0xf68b('0x16')][_0xf68b('0x3b')]({'where':{'ListId':_0x56be7c[_0x5f2dd9][_0xf68b('0x25')],'ContactId':_0x56be7c[_0x5f2dd9][_0xf68b('0x3c')],'VoiceQueueId':_0x56be7c[_0x5f2dd9][_0xf68b('0x1b')],'CampaignId':_0x56be7c[_0x5f2dd9]['CampaignId']}});_0x25cdee['push'](_0x32fb1e);}return Promise[_0xf68b('0x27')](_0x25cdee);}})['then'](function(_0x725b12){logger[_0xf68b('0x3d')](_0xf68b('0x3e'),util[_0xf68b('0x3f')](_0x725b12,{'showHidden':![],'depth':null}));_0x4142bf();})[_0xf68b('0x37')](function(_0x131385){logger['error'](_0xf68b('0x40'),util[_0xf68b('0x3f')](_0x131385,{'showHidden':![],'depth':null}));_0x4142bf(_0x131385);});}}});};