Built motion from commit 10af8726.|2.6.34
[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 _0x1260=['info','[CmContact][afterDestroy][Succesfull]','inspect','catch','[CmContact][afterDestroy][Error]','util','../../config/logger','api','moment','../../config/environment/shared','./cmContact.attributes','VoiceQueue','scheduledat','format','YYYY-MM-DD\x20HH:mm:ss','isNil','resolve','findOne','dialTimezone','timezones','add','phone','ListId','priority','callbackUniqueid','assign','CmHopper','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','VoiceQueueId','create','CampaignId','dialCheckDuplicateType','always','onlyIfOpen','outbound','CmList','Lists','all','Campaign','findAll','map','BlackLists','CmHopperBlack','exports','define','CmContact','cm_contacts','fti_cm_contacts','firstName','lastName','mobile','fax','email','FULLTEXT','utf8mb4','utf8mb4_unicode_ci','get','error','[cmContact][afterCreate]\x20List\x20not\x20found\x20for\x20contact\x20with\x20id\x20','[cmContact][afterCreate]','message','isEmpty','length','destroy','ContactId'];(function(_0x35c631,_0x175667){var _0x8103bd=function(_0x2cb835){while(--_0x2cb835){_0x35c631['push'](_0x35c631['shift']());}};_0x8103bd(++_0x175667);}(_0x1260,0x159));var _0x0126=function(_0x4f717c,_0x165a0f){_0x4f717c=_0x4f717c-0x0;var _0x3866fc=_0x1260[_0x4f717c];return _0x3866fc;};'use strict';var _=require('lodash');var util=require(_0x0126('0x0'));var logger=require(_0x0126('0x1'))(_0x0126('0x2'));var moment=require(_0x0126('0x3'));var shared=require(_0x0126('0x4'));var attributes=require(_0x0126('0x5'));function getTimezoneCallbackAt(_0x1d3ae1,_0x3287af,_0xe00ded,_0x377108){var _0x28f1c2=_0x377108?'Campaign':_0x0126('0x6');var _0xbc3688=_0xe00ded[_0x0126('0x7')]?_0xe00ded[_0x0126('0x7')]:moment()[_0x0126('0x8')](_0x0126('0x9'));if(_[_0x0126('0xa')](_0xe00ded['dialTimezone'])){return Promise[_0x0126('0xb')](_0xbc3688);}return _0x1d3ae1[_0x28f1c2][_0x0126('0xc')]({'where':{'id':_0x3287af}})['then'](function(_0x1a25ef){if(_[_0x0126('0xa')](_0x1a25ef)||_['isNil'](_0x1a25ef[_0x0126('0xd')])){return Promise[_0x0126('0xb')](_0xbc3688);}var _0x112bbe=shared[_0x0126('0xe')];var _0x314944=_0x112bbe[_0x1a25ef['dialTimezone']];var _0x5dd4e4=_0x112bbe[_0xe00ded[_0x0126('0xd')]];if(_[_0x0126('0xa')](_0x314944)&&_['isNil'](_0x5dd4e4)){return Promise['resolve'](_0xbc3688);}var _0x3a1868=_0x314944['utcOffset']-_0x5dd4e4['utcOffset'];var _0x4d67e2=_0xe00ded['scheduledat']?_0xe00ded[_0x0126('0x7')]:moment();_0xbc3688=moment(_0x4d67e2)[_0x0126('0xf')](_0x3a1868,'minutes')[_0x0126('0x8')](_0x0126('0x9'));return Promise[_0x0126('0xb')](_0xbc3688);});}function getNewHopperPayload(_0x5acb1f){return{'phone':_0x5acb1f[_0x0126('0x10')],'ContactId':_0x5acb1f['id'],'ListId':_0x5acb1f[_0x0126('0x11')],'scheduledat':_0x5acb1f[_0x0126('0x7')]?_0x5acb1f['scheduledat']:moment()[_0x0126('0x8')](_0x0126('0x9')),'priority':_0x5acb1f[_0x0126('0x12')]?_0x5acb1f[_0x0126('0x12')]:0x2,'callback':_0x5acb1f[_0x0126('0x13')]?!![]:![],'callbackuniqueid':_0x5acb1f[_0x0126('0x13')]?_0x5acb1f[_0x0126('0x13')]:undefined,'callbackat':_0x5acb1f[_0x0126('0x13')]?moment()[_0x0126('0x8')](_0x0126('0x9')):undefined};}function handleAlwaysCheckDuplicate(_0x155eab,_0x172b31,_0x36692c,_0xd9fcbf){var _0x1407ee={'phone':_0x36692c['phone']};var _0x5f4d9a={'calleridnum':_0x36692c[_0x0126('0x10')]};if(_0xd9fcbf){Object[_0x0126('0x14')](_0x1407ee,{'CampaignId':_0x172b31['id']});Object[_0x0126('0x14')](_0x5f4d9a,{'CampaignId':_0x172b31['id']});}else{Object['assign'](_0x1407ee,{'VoiceQueueId':_0x172b31['id']});Object[_0x0126('0x14')](_0x5f4d9a,{'VoiceQueueId':_0x172b31['id']});}return _0x155eab[_0x0126('0x15')][_0x0126('0xc')]({'where':_0x1407ee})[_0x0126('0x16')](function(_0x229262){if(_0x229262){throw new Error(_0x0126('0x17')+_0x36692c[_0x0126('0x10')]+_0x0126('0x18')+_0x172b31['id']);}return _0x155eab['CmHopperFinal'][_0x0126('0xc')]({'where':_0x5f4d9a});})[_0x0126('0x16')](function(_0x4c133a){if(_0x4c133a){throw new Error(_0x0126('0x19')+_0x36692c[_0x0126('0x10')]+_0x0126('0x18')+_0x172b31['id']);}var _0x46f687=getNewHopperPayload(_0x36692c);if(_0xd9fcbf){_0x46f687['CampaignId']=_0x172b31['id'];}else{_0x46f687[_0x0126('0x1a')]=_0x172b31['id'];}return _0x155eab[_0x0126('0x15')][_0x0126('0x1b')](_0x46f687);});}function handleOnlyIfOpenCheckDuplicate(_0x49309a,_0x26a811,_0x245a96,_0x358291){var _0x2b8f70={'phone':_0x245a96[_0x0126('0x10')]};if(_0x358291){Object['assign'](_0x2b8f70,{'CampaignId':_0x26a811['id']});}else{Object[_0x0126('0x14')](_0x2b8f70,{'VoiceQueueId':_0x26a811['id']});}return _0x49309a[_0x0126('0x15')][_0x0126('0xc')]({'where':_0x2b8f70})[_0x0126('0x16')](function(_0xcc28d7){if(_0xcc28d7){throw new Error('[OnlyIfOpen]\x20Hopper\x20already\x20exists\x20for\x20contact\x20with\x20phone\x20'+_0x245a96[_0x0126('0x10')]+_0x0126('0x18')+_0x26a811['id']);}var _0x47f5c2=getNewHopperPayload(_0x245a96);if(_0x358291){_0x47f5c2[_0x0126('0x1c')]=_0x26a811['id'];}else{_0x47f5c2[_0x0126('0x1a')]=_0x26a811['id'];}return _0x49309a['CmHopper'][_0x0126('0x1b')](_0x47f5c2);});}function handleNeverCheckDuplicate(_0x9933a,_0x313816,_0x37ab26){var _0x5e4ed9=getNewHopperPayload(_0x37ab26);_0x5e4ed9[_0x0126('0x1a')]=_0x313816['id'];return _0x9933a['CmHopper'][_0x0126('0x1b')](_0x5e4ed9);}function handleCheckDuplicate(_0x13e670,_0x13d00a,_0x12984,_0x16df25){return getTimezoneCallbackAt(_0x13e670,_0x13d00a,_0x12984,_0x16df25)[_0x0126('0x16')](function(_0x3b51f0){_0x12984[_0x0126('0x7')]=_0x3b51f0;switch(_0x13d00a[_0x0126('0x1d')]){case _0x0126('0x1e'):return handleAlwaysCheckDuplicate(_0x13e670,_0x13d00a,_0x12984,_0x16df25);case _0x0126('0x1f'):return handleOnlyIfOpenCheckDuplicate(_0x13e670,_0x13d00a,_0x12984,_0x16df25);default:return handleNeverCheckDuplicate(_0x13e670,_0x13d00a,_0x12984);}});}function createHopperForVoiceQueues(_0x28358e,_0x18f906){return _0x28358e[_0x0126('0x6')]['findAll']({'where':{'type':_0x0126('0x20')},'attributes':['id',_0x0126('0x1d'),_0x0126('0xd')],'include':[{'model':_0x28358e[_0x0126('0x21')],'as':_0x0126('0x22'),'where':{'id':_0x18f906[_0x0126('0x11')]}}],'raw':!![]})[_0x0126('0x16')](function(_0x2584cc){var _0xb73dc6=_0x2584cc['map'](function(_0x2cf66b){return handleCheckDuplicate(_0x28358e,_0x2cf66b,_0x18f906,![]);});return Promise[_0x0126('0x23')](_0xb73dc6);});}function createHopperForCampaigns(_0x21c949,_0x48c18b){return _0x21c949[_0x0126('0x24')][_0x0126('0x25')]({'attributes':['id',_0x0126('0x1d'),_0x0126('0xd')],'include':[{'model':_0x21c949[_0x0126('0x21')],'as':'Lists','where':{'id':_0x48c18b[_0x0126('0x11')]}}],'raw':!![]})[_0x0126('0x16')](function(_0x2b498e){var _0x56b9a2=_0x2b498e[_0x0126('0x26')](function(_0x2f817d){return handleCheckDuplicate(_0x21c949,_0x2f817d,_0x48c18b,!![]);});return Promise[_0x0126('0x23')](_0x56b9a2);});}function createHopperBlackForVoiceQueues(_0x36d94e,_0x3f0b67){return _0x36d94e[_0x0126('0x6')]['findAll']({'where':{'type':'outbound'},'attributes':['id'],'include':[{'model':_0x36d94e['CmList'],'as':_0x0126('0x27'),'where':{'id':_0x3f0b67['ListId']}}],'raw':!![]})[_0x0126('0x16')](function(_0x506952){var _0x22443f=_0x506952[_0x0126('0x26')](function(_0x6b3252){return _0x36d94e[_0x0126('0x28')][_0x0126('0x1b')]({'phone':_0x3f0b67[_0x0126('0x10')],'ContactId':_0x3f0b67['id'],'ListId':_0x3f0b67['ListId'],'VoiceQueueId':_0x6b3252['id']});});return Promise['all'](_0x22443f);});}function createHopperBlackForCampaigns(_0x2e5341,_0x3d59c8){return _0x2e5341['Campaign'][_0x0126('0x25')]({'attributes':['id'],'include':[{'model':_0x2e5341[_0x0126('0x21')],'as':_0x0126('0x27'),'where':{'id':_0x3d59c8[_0x0126('0x11')]}}],'raw':!![]})[_0x0126('0x16')](function(_0x3f4882){var _0x1f72b6=_0x3f4882[_0x0126('0x26')](function(_0x29d0e6){return _0x2e5341[_0x0126('0x28')][_0x0126('0x1b')]({'phone':_0x3d59c8[_0x0126('0x10')],'ContactId':_0x3d59c8['id'],'ListId':_0x3d59c8[_0x0126('0x11')],'CampaignId':_0x29d0e6['id']});});return Promise[_0x0126('0x23')](_0x1f72b6);});}module[_0x0126('0x29')]=function(_0x4710b7){return _0x4710b7[_0x0126('0x2a')](_0x0126('0x2b'),attributes,{'tableName':_0x0126('0x2c'),'paranoid':!![],'indexes':[{'name':'phone','fields':[_0x0126('0x10')]},{'name':_0x0126('0x2d'),'fields':[_0x0126('0x2e'),_0x0126('0x2f'),'phone',_0x0126('0x30'),_0x0126('0x31'),_0x0126('0x32')],'type':_0x0126('0x33')}],'timestamps':!![],'charset':_0x0126('0x34'),'collate':_0x0126('0x35'),'hooks':{'afterCreate':function(_0x4155b8,_0x2644ab,_0x49d7d5){var _0x495494=_0x4710b7['models'];var _0xdec616=_0x4155b8[_0x0126('0x36')]({'plain':!![]});if(!_0xdec616[_0x0126('0x11')]){logger[_0x0126('0x37')](_0x0126('0x38')+_0xdec616['id']);return _0x49d7d5();}if(!_0xdec616[_0x0126('0x10')]){return _0x49d7d5();}return createHopperForVoiceQueues(_0x495494,_0xdec616)['then'](function(){return createHopperBlackForVoiceQueues(_0x495494,_0xdec616);})['then'](function(){return createHopperForCampaigns(_0x495494,_0xdec616);})[_0x0126('0x16')](function(){return createHopperBlackForCampaigns(_0x495494,_0xdec616);})[_0x0126('0x16')](function(){return _0x49d7d5();})['catch'](function(_0xce9b17){logger[_0x0126('0x37')](_0x0126('0x39'),_0xce9b17[_0x0126('0x3a')]);_0x49d7d5();});},'afterDestroy':function(_0x5599bf,_0x7e5ada,_0x1fc2bb){var _0x36c98d=_0x4710b7['models'];var _0x5ccc74=_0x5599bf[_0x0126('0x36')]({'plain':!![]});return _0x36c98d[_0x0126('0x15')]['findAll']({'raw':!![],'where':{'ListId':_0x5ccc74[_0x0126('0x11')],'ContactId':_0x5ccc74['id']}})['then'](function(_0x1c7b4a){if(!_[_0x0126('0x3b')](_0x1c7b4a)){var _0x4a07b7=[];for(var _0x439c92=0x0;_0x439c92<_0x1c7b4a[_0x0126('0x3c')];_0x439c92+=0x1){var _0x2be113=_0x36c98d['CmHopper'][_0x0126('0x3d')]({'where':{'ListId':_0x1c7b4a[_0x439c92][_0x0126('0x11')],'ContactId':_0x1c7b4a[_0x439c92][_0x0126('0x3e')],'VoiceQueueId':_0x1c7b4a[_0x439c92]['VoiceQueueId'],'CampaignId':_0x1c7b4a[_0x439c92][_0x0126('0x1c')]}});_0x4a07b7['push'](_0x2be113);}return Promise[_0x0126('0x23')](_0x4a07b7);}})[_0x0126('0x16')](function(_0x55e804){logger[_0x0126('0x3f')](_0x0126('0x40'),util[_0x0126('0x41')](_0x55e804,{'showHidden':![],'depth':null}));_0x1fc2bb();})[_0x0126('0x42')](function(_0x4f50b6){logger[_0x0126('0x37')](_0x0126('0x43'),util['inspect'](_0x4f50b6,{'showHidden':![],'depth':null}));_0x1fc2bb(_0x4f50b6);});}}});};