c17a82cc23eac6c28fc55875424882b229aa1b6d
[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 _0x3ee7=['error','[cmContact][afterCreate]\x20List\x20not\x20found\x20for\x20contact\x20with\x20id\x20','catch','[cmContact][afterCreate]','message','isEmpty','destroy','ContactId','push','info','[CmContact][afterDestroy][Succesfull]','[CmContact][afterDestroy][Error]','inspect','util','../../config/logger','moment','../../config/environment/shared','./cmContact.attributes','Campaign','VoiceQueue','scheduledat','dialTimezone','findOne','then','isNil','timezones','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','VoiceQueueId','create','CampaignId','dialCheckDuplicateType','always','findAll','map','all','CmList','Lists','outbound','CmHopperBlack','BlackLists','exports','define','CmContact','fti_cm_contacts','firstName','lastName','mobile','email','FULLTEXT','utf8mb4','models','get'];(function(_0x20a558,_0x160e0e){var _0x53d3f7=function(_0x259bd8){while(--_0x259bd8){_0x20a558['push'](_0x20a558['shift']());}};_0x53d3f7(++_0x160e0e);}(_0x3ee7,0x157));var _0x73ee=function(_0x3f8850,_0x3018c5){_0x3f8850=_0x3f8850-0x0;var _0x439d7a=_0x3ee7[_0x3f8850];return _0x439d7a;};'use strict';var _=require('lodash');var util=require(_0x73ee('0x0'));var logger=require(_0x73ee('0x1'))('api');var moment=require(_0x73ee('0x2'));var shared=require(_0x73ee('0x3'));var attributes=require(_0x73ee('0x4'));function getTimezoneCallbackAt(_0x1efd68,_0x19844f,_0x22f7a0,_0x3964bf){var _0x2cfcee=_0x3964bf?_0x73ee('0x5'):_0x73ee('0x6');var _0x4eb3ef=_0x22f7a0[_0x73ee('0x7')]?_0x22f7a0[_0x73ee('0x7')]:moment()['format']('YYYY-MM-DD\x20HH:mm:ss');if(_['isNil'](_0x22f7a0[_0x73ee('0x8')])){return Promise['resolve'](_0x4eb3ef);}return _0x1efd68[_0x2cfcee][_0x73ee('0x9')]({'where':{'id':_0x19844f}})[_0x73ee('0xa')](function(_0x166115){if(_[_0x73ee('0xb')](_0x166115)||_[_0x73ee('0xb')](_0x166115[_0x73ee('0x8')])){return Promise['resolve'](_0x4eb3ef);}var _0x24562c=shared[_0x73ee('0xc')];var _0x40b4cc=_0x24562c[_0x166115[_0x73ee('0x8')]];var _0x26880e=_0x24562c[_0x22f7a0[_0x73ee('0x8')]];if(_[_0x73ee('0xb')](_0x40b4cc)&&_[_0x73ee('0xb')](_0x26880e)){return Promise[_0x73ee('0xd')](_0x4eb3ef);}var _0x15bfc3=_0x40b4cc[_0x73ee('0xe')]-_0x26880e['utcOffset'];var _0x396ec1=_0x22f7a0[_0x73ee('0x7')]?_0x22f7a0[_0x73ee('0x7')]:moment();_0x4eb3ef=moment(_0x396ec1)[_0x73ee('0xf')](_0x15bfc3,'minutes')[_0x73ee('0x10')](_0x73ee('0x11'));return Promise[_0x73ee('0xd')](_0x4eb3ef);});}function getNewHopperPayload(_0x4a9b44){return{'phone':_0x4a9b44[_0x73ee('0x12')],'ContactId':_0x4a9b44['id'],'ListId':_0x4a9b44[_0x73ee('0x13')],'scheduledat':_0x4a9b44[_0x73ee('0x7')]?_0x4a9b44[_0x73ee('0x7')]:moment()['format'](_0x73ee('0x11')),'priority':_0x4a9b44[_0x73ee('0x14')]?_0x4a9b44[_0x73ee('0x14')]:0x2,'callback':_0x4a9b44[_0x73ee('0x15')]?!![]:![],'callbackuniqueid':_0x4a9b44[_0x73ee('0x15')]?_0x4a9b44['callbackUniqueid']:undefined,'callbackat':_0x4a9b44[_0x73ee('0x15')]?moment()[_0x73ee('0x10')](_0x73ee('0x11')):undefined};}function handleAlwaysCheckDuplicate(_0x420345,_0x1a8532,_0x2a1834,_0x22f1ee){var _0x1b8e57={'phone':_0x2a1834[_0x73ee('0x12')]};var _0x39bea2={'calleridnum':_0x2a1834[_0x73ee('0x12')]};if(_0x22f1ee){Object['assign'](_0x1b8e57,{'CampaignId':_0x1a8532['id']});Object[_0x73ee('0x16')](_0x39bea2,{'CampaignId':_0x1a8532['id']});}else{Object[_0x73ee('0x16')](_0x1b8e57,{'VoiceQueueId':_0x1a8532['id']});Object[_0x73ee('0x16')](_0x39bea2,{'VoiceQueueId':_0x1a8532['id']});}return _0x420345[_0x73ee('0x17')][_0x73ee('0x9')]({'where':_0x1b8e57})[_0x73ee('0xa')](function(_0x26c5a7){if(_0x26c5a7){throw new Error(_0x73ee('0x18')+_0x2a1834[_0x73ee('0x12')]+_0x73ee('0x19')+_0x1a8532['id']);}return _0x420345[_0x73ee('0x1a')][_0x73ee('0x9')]({'where':_0x39bea2});})[_0x73ee('0xa')](function(_0x418bb0){if(_0x418bb0){throw new Error(_0x73ee('0x1b')+_0x2a1834[_0x73ee('0x12')]+_0x73ee('0x19')+_0x1a8532['id']);}var _0x3914ac=getNewHopperPayload(_0x2a1834);if(_0x22f1ee){_0x3914ac['CampaignId']=_0x1a8532['id'];}else{_0x3914ac[_0x73ee('0x1c')]=_0x1a8532['id'];}return _0x420345[_0x73ee('0x17')][_0x73ee('0x1d')](_0x3914ac);});}function handleOnlyIfOpenCheckDuplicate(_0x261839,_0x21f33a,_0x38cbc2,_0x187441){var _0x1f6ce2={'phone':_0x38cbc2[_0x73ee('0x12')]};if(_0x187441){Object['assign'](_0x1f6ce2,{'CampaignId':_0x21f33a['id']});}else{Object[_0x73ee('0x16')](_0x1f6ce2,{'VoiceQueueId':_0x21f33a['id']});}return _0x261839[_0x73ee('0x17')][_0x73ee('0x9')]({'where':_0x1f6ce2})[_0x73ee('0xa')](function(_0x505d8b){if(_0x505d8b){throw new Error('[OnlyIfOpen]\x20Hopper\x20already\x20exists\x20for\x20contact\x20with\x20phone\x20'+_0x38cbc2[_0x73ee('0x12')]+'\x20in\x20Campaign\x20with\x20id\x20'+_0x21f33a['id']);}var _0x5637ac=getNewHopperPayload(_0x38cbc2);if(_0x187441){_0x5637ac[_0x73ee('0x1e')]=_0x21f33a['id'];}else{_0x5637ac[_0x73ee('0x1c')]=_0x21f33a['id'];}return _0x261839[_0x73ee('0x17')][_0x73ee('0x1d')](_0x5637ac);});}function handleNeverCheckDuplicate(_0x21178a,_0x1a36c9,_0x7a0634){var _0x17f872=getNewHopperPayload(_0x7a0634);_0x17f872[_0x73ee('0x1c')]=_0x1a36c9['id'];return _0x21178a[_0x73ee('0x17')][_0x73ee('0x1d')](_0x17f872);}function handleCheckDuplicate(_0x16ff88,_0x14f259,_0x15b9c6,_0x2c66b2){return getTimezoneCallbackAt(_0x16ff88,_0x14f259,_0x15b9c6,_0x2c66b2)['then'](function(_0x2e5f85){_0x15b9c6[_0x73ee('0x7')]=_0x2e5f85;switch(_0x14f259[_0x73ee('0x1f')]){case _0x73ee('0x20'):return handleAlwaysCheckDuplicate(_0x16ff88,_0x14f259,_0x15b9c6,_0x2c66b2);case'onlyIfOpen':return handleOnlyIfOpenCheckDuplicate(_0x16ff88,_0x14f259,_0x15b9c6,_0x2c66b2);default:return handleNeverCheckDuplicate(_0x16ff88,_0x14f259,_0x15b9c6);}});}function createHopperForVoiceQueues(_0x4179d4,_0x4a0ce2){return _0x4179d4['VoiceQueue'][_0x73ee('0x21')]({'where':{'type':'outbound'},'attributes':['id','dialCheckDuplicateType',_0x73ee('0x8')],'include':[{'model':_0x4179d4['CmList'],'as':'Lists','where':{'id':_0x4a0ce2['ListId']}}],'raw':!![]})[_0x73ee('0xa')](function(_0x515032){var _0x4950a0=_0x515032[_0x73ee('0x22')](function(_0x5d9b08){return handleCheckDuplicate(_0x4179d4,_0x5d9b08,_0x4a0ce2,![]);});return Promise[_0x73ee('0x23')](_0x4950a0);});}function createHopperForCampaigns(_0x43cc19,_0x26eea6){return _0x43cc19['Campaign'][_0x73ee('0x21')]({'attributes':['id','dialCheckDuplicateType','dialTimezone'],'include':[{'model':_0x43cc19[_0x73ee('0x24')],'as':_0x73ee('0x25'),'where':{'id':_0x26eea6['ListId']}}],'raw':!![]})[_0x73ee('0xa')](function(_0x4c7481){var _0x52b1a9=_0x4c7481[_0x73ee('0x22')](function(_0x5b01d8){return handleCheckDuplicate(_0x43cc19,_0x5b01d8,_0x26eea6,!![]);});return Promise[_0x73ee('0x23')](_0x52b1a9);});}function createHopperBlackForVoiceQueues(_0x2a0ee6,_0x36d6d2){return _0x2a0ee6[_0x73ee('0x6')][_0x73ee('0x21')]({'where':{'type':_0x73ee('0x26')},'attributes':['id'],'include':[{'model':_0x2a0ee6['CmList'],'as':'BlackLists','where':{'id':_0x36d6d2[_0x73ee('0x13')]}}],'raw':!![]})[_0x73ee('0xa')](function(_0x38d574){var _0x9d6110=_0x38d574[_0x73ee('0x22')](function(_0x3f0395){return _0x2a0ee6[_0x73ee('0x27')][_0x73ee('0x1d')]({'phone':_0x36d6d2[_0x73ee('0x12')],'ContactId':_0x36d6d2['id'],'ListId':_0x36d6d2[_0x73ee('0x13')],'VoiceQueueId':_0x3f0395['id']});});return Promise[_0x73ee('0x23')](_0x9d6110);});}function createHopperBlackForCampaigns(_0x388509,_0x251ece){return _0x388509[_0x73ee('0x5')][_0x73ee('0x21')]({'attributes':['id'],'include':[{'model':_0x388509[_0x73ee('0x24')],'as':_0x73ee('0x28'),'where':{'id':_0x251ece[_0x73ee('0x13')]}}],'raw':!![]})[_0x73ee('0xa')](function(_0x536688){var _0x47e772=_0x536688['map'](function(_0x4e66b8){return _0x388509['CmHopperBlack'][_0x73ee('0x1d')]({'phone':_0x251ece[_0x73ee('0x12')],'ContactId':_0x251ece['id'],'ListId':_0x251ece['ListId'],'CampaignId':_0x4e66b8['id']});});return Promise[_0x73ee('0x23')](_0x47e772);});}module[_0x73ee('0x29')]=function(_0x62a923){return _0x62a923[_0x73ee('0x2a')](_0x73ee('0x2b'),attributes,{'tableName':'cm_contacts','paranoid':!![],'indexes':[{'name':_0x73ee('0x12'),'fields':['phone']},{'name':_0x73ee('0x2c'),'fields':[_0x73ee('0x2d'),_0x73ee('0x2e'),'phone',_0x73ee('0x2f'),'fax',_0x73ee('0x30')],'type':_0x73ee('0x31')}],'timestamps':!![],'charset':_0x73ee('0x32'),'collate':'utf8mb4_unicode_ci','hooks':{'afterCreate':function(_0x332375,_0x4f85a6,_0x37e937){var _0x21d06f=_0x62a923[_0x73ee('0x33')];var _0x4aa366=_0x332375[_0x73ee('0x34')]({'plain':!![]});if(!_0x4aa366[_0x73ee('0x13')]){logger[_0x73ee('0x35')](_0x73ee('0x36')+_0x4aa366['id']);return _0x37e937();}if(!_0x4aa366[_0x73ee('0x12')]){return _0x37e937();}return createHopperForVoiceQueues(_0x21d06f,_0x4aa366)['then'](function(){return createHopperBlackForVoiceQueues(_0x21d06f,_0x4aa366);})[_0x73ee('0xa')](function(){return createHopperForCampaigns(_0x21d06f,_0x4aa366);})[_0x73ee('0xa')](function(){return createHopperBlackForCampaigns(_0x21d06f,_0x4aa366);})[_0x73ee('0xa')](function(){return _0x37e937();})[_0x73ee('0x37')](function(_0x3d2a42){logger[_0x73ee('0x35')](_0x73ee('0x38'),_0x3d2a42[_0x73ee('0x39')]);_0x37e937();});},'afterDestroy':function(_0x170a8a,_0x3c10fc,_0x1deeee){var _0x413ca7=_0x62a923['models'];var _0x32337c=_0x170a8a[_0x73ee('0x34')]({'plain':!![]});return _0x413ca7[_0x73ee('0x17')][_0x73ee('0x21')]({'raw':!![],'where':{'ListId':_0x32337c['ListId'],'ContactId':_0x32337c['id']}})[_0x73ee('0xa')](function(_0x264979){if(!_[_0x73ee('0x3a')](_0x264979)){var _0x352c70=[];for(var _0x295399=0x0;_0x295399<_0x264979['length'];_0x295399+=0x1){var _0x4d62ce=_0x413ca7[_0x73ee('0x17')][_0x73ee('0x3b')]({'where':{'ListId':_0x264979[_0x295399]['ListId'],'ContactId':_0x264979[_0x295399][_0x73ee('0x3c')],'VoiceQueueId':_0x264979[_0x295399][_0x73ee('0x1c')],'CampaignId':_0x264979[_0x295399][_0x73ee('0x1e')]}});_0x352c70[_0x73ee('0x3d')](_0x4d62ce);}return Promise['all'](_0x352c70);}})[_0x73ee('0xa')](function(_0x364704){logger[_0x73ee('0x3e')](_0x73ee('0x3f'),util['inspect'](_0x364704,{'showHidden':![],'depth':null}));_0x1deeee();})[_0x73ee('0x37')](function(_0x5c09e5){logger[_0x73ee('0x35')](_0x73ee('0x40'),util[_0x73ee('0x41')](_0x5c09e5,{'showHidden':![],'depth':null}));_0x1deeee(_0x5c09e5);});}}});};