83a3310053b33dc06955010ae4a474f96f11c8f2
[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 _0x4591=['[CmContact][afterDestroy][Succesfull]','inspect','catch','[CmContact][afterDestroy][Error]','lodash','../../config/logger','api','moment','./cmContact.attributes','Campaign','VoiceQueue','scheduledat','format','YYYY-MM-DD\x20HH:mm:ss','isNil','dialTimezone','findOne','timezones','utcOffset','add','resolve','priority','callbackUniqueid','phone','assign','CmHopper','then','[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','CampaignId','create','always','findAll','outbound','CmList','ListId','map','dialCheckDuplicateType','Lists','all','CmHopperBlack','BlackLists','exports','define','fti_cm_contacts','firstName','lastName','mobile','FULLTEXT','models','get','[cmContact][afterCreate]\x20List\x20not\x20found\x20for\x20contact\x20with\x20id\x20','error','[cmContact][afterCreate]','message','length','destroy','push','info'];(function(_0x3abde4,_0x4076e2){var _0x96f3cc=function(_0x1c3b55){while(--_0x1c3b55){_0x3abde4['push'](_0x3abde4['shift']());}};_0x96f3cc(++_0x4076e2);}(_0x4591,0xfc));var _0x1459=function(_0x379b5e,_0x5e105c){_0x379b5e=_0x379b5e-0x0;var _0x3b66a4=_0x4591[_0x379b5e];return _0x3b66a4;};'use strict';var _=require(_0x1459('0x0'));var util=require('util');var logger=require(_0x1459('0x1'))(_0x1459('0x2'));var moment=require(_0x1459('0x3'));var shared=require('../../config/environment/shared');var attributes=require(_0x1459('0x4'));function getTimezoneCallbackAt(_0x4b3f4b,_0x1fa828,_0xac82e9,_0x291074){var _0x400e4d=_0x291074?_0x1459('0x5'):_0x1459('0x6');var _0x4ffc95=_0xac82e9[_0x1459('0x7')]?_0xac82e9[_0x1459('0x7')]:moment()[_0x1459('0x8')](_0x1459('0x9'));if(_[_0x1459('0xa')](_0xac82e9[_0x1459('0xb')])){return Promise['resolve'](_0x4ffc95);}return _0x4b3f4b[_0x400e4d][_0x1459('0xc')]({'where':{'id':_0x1fa828}})['then'](function(_0xc9e729){if(_[_0x1459('0xa')](_0xc9e729)||_[_0x1459('0xa')](_0xc9e729['dialTimezone'])){return Promise['resolve'](_0x4ffc95);}var _0x5dba79=shared[_0x1459('0xd')];var _0xab17b=_0x5dba79[_0xc9e729[_0x1459('0xb')]];var _0x553175=_0x5dba79[_0xac82e9['dialTimezone']];if(_[_0x1459('0xa')](_0xab17b)&&_[_0x1459('0xa')](_0x553175)){return Promise['resolve'](_0x4ffc95);}var _0x3ce9d6=_0xab17b[_0x1459('0xe')]-_0x553175[_0x1459('0xe')];var _0x2b7977=_0xac82e9[_0x1459('0x7')]?_0xac82e9[_0x1459('0x7')]:moment();_0x4ffc95=moment(_0x2b7977)[_0x1459('0xf')](_0x3ce9d6,'minutes')[_0x1459('0x8')](_0x1459('0x9'));return Promise[_0x1459('0x10')](_0x4ffc95);});}function getNewHopperPayload(_0x4f7052){return{'phone':_0x4f7052['phone'],'ContactId':_0x4f7052['id'],'ListId':_0x4f7052['ListId'],'scheduledat':_0x4f7052[_0x1459('0x7')]?_0x4f7052['scheduledat']:moment()[_0x1459('0x8')]('YYYY-MM-DD\x20HH:mm:ss'),'priority':_0x4f7052[_0x1459('0x11')]?_0x4f7052[_0x1459('0x11')]:0x2,'callback':_0x4f7052[_0x1459('0x12')]?!![]:![],'callbackuniqueid':_0x4f7052['callbackUniqueid']?_0x4f7052[_0x1459('0x12')]:undefined,'callbackat':_0x4f7052['callbackUniqueid']?moment()[_0x1459('0x8')]('YYYY-MM-DD\x20HH:mm:ss'):undefined};}function handleAlwaysCheckDuplicate(_0x44dc9d,_0x886800,_0x46c6f8,_0x31eb70){var _0x4c6247={'phone':_0x46c6f8[_0x1459('0x13')]};var _0x2ebc88={'calleridnum':_0x46c6f8[_0x1459('0x13')]};if(_0x31eb70){Object[_0x1459('0x14')](_0x4c6247,{'CampaignId':_0x886800['id']});Object[_0x1459('0x14')](_0x2ebc88,{'CampaignId':_0x886800['id']});}else{Object['assign'](_0x4c6247,{'VoiceQueueId':_0x886800['id']});Object[_0x1459('0x14')](_0x2ebc88,{'VoiceQueueId':_0x886800['id']});}return _0x44dc9d[_0x1459('0x15')][_0x1459('0xc')]({'where':_0x4c6247})[_0x1459('0x16')](function(_0x1138ad){if(_0x1138ad){throw new Error(_0x1459('0x17')+_0x46c6f8[_0x1459('0x13')]+_0x1459('0x18')+_0x886800['id']);}return _0x44dc9d[_0x1459('0x19')][_0x1459('0xc')]({'where':_0x2ebc88});})['then'](function(_0x1596b3){if(_0x1596b3){throw new Error(_0x1459('0x1a')+_0x46c6f8['phone']+_0x1459('0x18')+_0x886800['id']);}var _0x12e85f=getNewHopperPayload(_0x46c6f8);if(_0x31eb70){_0x12e85f['CampaignId']=_0x886800['id'];}else{_0x12e85f[_0x1459('0x1b')]=_0x886800['id'];}return _0x44dc9d['CmHopper']['create'](_0x12e85f);});}function handleOnlyIfOpenCheckDuplicate(_0x112b14,_0xfb92a6,_0x24d7de,_0xa9ce73){var _0x27273b={'phone':_0x24d7de[_0x1459('0x13')]};if(_0xa9ce73){Object[_0x1459('0x14')](_0x27273b,{'CampaignId':_0xfb92a6['id']});}else{Object['assign'](_0x27273b,{'VoiceQueueId':_0xfb92a6['id']});}return _0x112b14[_0x1459('0x15')]['findOne']({'where':_0x27273b})['then'](function(_0x374aa5){if(_0x374aa5){throw new Error('[OnlyIfOpen]\x20Hopper\x20already\x20exists\x20for\x20contact\x20with\x20phone\x20'+_0x24d7de[_0x1459('0x13')]+_0x1459('0x18')+_0xfb92a6['id']);}var _0x20f9b0=getNewHopperPayload(_0x24d7de);if(_0xa9ce73){_0x20f9b0[_0x1459('0x1c')]=_0xfb92a6['id'];}else{_0x20f9b0[_0x1459('0x1b')]=_0xfb92a6['id'];}return _0x112b14[_0x1459('0x15')]['create'](_0x20f9b0);});}function handleNeverCheckDuplicate(_0x131e66,_0x9ddda4,_0x3bc593){var _0x384581=getNewHopperPayload(_0x3bc593);_0x384581['VoiceQueueId']=_0x9ddda4['id'];return _0x131e66[_0x1459('0x15')][_0x1459('0x1d')](_0x384581);}function handleCheckDuplicate(_0x5ebc53,_0x2510bb,_0x5e9671,_0x1d3dd6){return getTimezoneCallbackAt(_0x5ebc53,_0x2510bb,_0x5e9671,_0x1d3dd6)[_0x1459('0x16')](function(_0x317f76){_0x5e9671['scheduledat']=_0x317f76;switch(_0x2510bb['dialCheckDuplicateType']){case _0x1459('0x1e'):return handleAlwaysCheckDuplicate(_0x5ebc53,_0x2510bb,_0x5e9671,_0x1d3dd6);case'onlyIfOpen':return handleOnlyIfOpenCheckDuplicate(_0x5ebc53,_0x2510bb,_0x5e9671,_0x1d3dd6);default:return handleNeverCheckDuplicate(_0x5ebc53,_0x2510bb,_0x5e9671);}});}function createHopperForVoiceQueues(_0x3768e3,_0x26c1fe){return _0x3768e3[_0x1459('0x6')][_0x1459('0x1f')]({'where':{'type':_0x1459('0x20')},'attributes':['id','dialCheckDuplicateType',_0x1459('0xb')],'include':[{'model':_0x3768e3[_0x1459('0x21')],'as':'Lists','where':{'id':_0x26c1fe[_0x1459('0x22')]}}],'raw':!![]})[_0x1459('0x16')](function(_0x1fed98){var _0x3f9cde=_0x1fed98[_0x1459('0x23')](function(_0x5668e9){return handleCheckDuplicate(_0x3768e3,_0x5668e9,_0x26c1fe,![]);});return Promise['all'](_0x3f9cde);});}function createHopperForCampaigns(_0x5449fb,_0x49e216){return _0x5449fb[_0x1459('0x5')][_0x1459('0x1f')]({'attributes':['id',_0x1459('0x24'),'dialTimezone'],'include':[{'model':_0x5449fb['CmList'],'as':_0x1459('0x25'),'where':{'id':_0x49e216[_0x1459('0x22')]}}],'raw':!![]})['then'](function(_0x143704){var _0x2d1b8c=_0x143704['map'](function(_0x4e144){return handleCheckDuplicate(_0x5449fb,_0x4e144,_0x49e216,!![]);});return Promise[_0x1459('0x26')](_0x2d1b8c);});}function createHopperBlackForVoiceQueues(_0xbe4ee0,_0x526e97){return _0xbe4ee0[_0x1459('0x6')][_0x1459('0x1f')]({'where':{'type':_0x1459('0x20')},'attributes':['id'],'include':[{'model':_0xbe4ee0[_0x1459('0x21')],'as':'BlackLists','where':{'id':_0x526e97['ListId']}}],'raw':!![]})[_0x1459('0x16')](function(_0x49ce74){var _0x4fb075=_0x49ce74[_0x1459('0x23')](function(_0x130d6c){return _0xbe4ee0[_0x1459('0x27')][_0x1459('0x1d')]({'phone':_0x526e97['phone'],'ContactId':_0x526e97['id'],'ListId':_0x526e97[_0x1459('0x22')],'VoiceQueueId':_0x130d6c['id']});});return Promise[_0x1459('0x26')](_0x4fb075);});}function createHopperBlackForCampaigns(_0x18b6c0,_0x27ffcd){return _0x18b6c0[_0x1459('0x5')][_0x1459('0x1f')]({'attributes':['id'],'include':[{'model':_0x18b6c0[_0x1459('0x21')],'as':_0x1459('0x28'),'where':{'id':_0x27ffcd['ListId']}}],'raw':!![]})[_0x1459('0x16')](function(_0x4ed141){var _0xb06fb6=_0x4ed141[_0x1459('0x23')](function(_0x385c27){return _0x18b6c0[_0x1459('0x27')]['create']({'phone':_0x27ffcd[_0x1459('0x13')],'ContactId':_0x27ffcd['id'],'ListId':_0x27ffcd[_0x1459('0x22')],'CampaignId':_0x385c27['id']});});return Promise[_0x1459('0x26')](_0xb06fb6);});}module[_0x1459('0x29')]=function(_0x3cf979){return _0x3cf979[_0x1459('0x2a')]('CmContact',attributes,{'tableName':'cm_contacts','paranoid':!![],'indexes':[{'name':_0x1459('0x13'),'fields':['phone']},{'name':_0x1459('0x2b'),'fields':[_0x1459('0x2c'),_0x1459('0x2d'),_0x1459('0x13'),_0x1459('0x2e'),'fax','email'],'type':_0x1459('0x2f')}],'timestamps':!![],'charset':'utf8mb4','collate':'utf8mb4_unicode_ci','hooks':{'afterCreate':function(_0x4b6474,_0xe81635,_0x1f63d8){var _0x231a2f=_0x3cf979[_0x1459('0x30')];var _0x4abbbe=_0x4b6474[_0x1459('0x31')]({'plain':!![]});if(!_0x4abbbe[_0x1459('0x22')]){logger['error'](_0x1459('0x32')+_0x4abbbe['id']);return _0x1f63d8();}if(!_0x4abbbe[_0x1459('0x13')]){return _0x1f63d8();}return createHopperForVoiceQueues(_0x231a2f,_0x4abbbe)[_0x1459('0x16')](function(){return createHopperBlackForVoiceQueues(_0x231a2f,_0x4abbbe);})[_0x1459('0x16')](function(){return createHopperForCampaigns(_0x231a2f,_0x4abbbe);})[_0x1459('0x16')](function(){return createHopperBlackForCampaigns(_0x231a2f,_0x4abbbe);})[_0x1459('0x16')](function(){return _0x1f63d8();})['catch'](function(_0x1d39eb){logger[_0x1459('0x33')](_0x1459('0x34'),_0x1d39eb[_0x1459('0x35')]);_0x1f63d8();});},'afterDestroy':function(_0x12a9a2,_0x43e036,_0x15c7c0){var _0x2d228f=_0x3cf979[_0x1459('0x30')];var _0x18a95c=_0x12a9a2[_0x1459('0x31')]({'plain':!![]});return _0x2d228f['CmHopper']['findAll']({'raw':!![],'where':{'ListId':_0x18a95c['ListId'],'ContactId':_0x18a95c['id']}})[_0x1459('0x16')](function(_0x6aa927){if(!_['isEmpty'](_0x6aa927)){var _0x2d3f54=[];for(var _0x552d03=0x0;_0x552d03<_0x6aa927[_0x1459('0x36')];_0x552d03+=0x1){var _0x9845cf=_0x2d228f[_0x1459('0x15')][_0x1459('0x37')]({'where':{'ListId':_0x6aa927[_0x552d03][_0x1459('0x22')],'ContactId':_0x6aa927[_0x552d03]['ContactId'],'VoiceQueueId':_0x6aa927[_0x552d03]['VoiceQueueId'],'CampaignId':_0x6aa927[_0x552d03][_0x1459('0x1c')]}});_0x2d3f54[_0x1459('0x38')](_0x9845cf);}return Promise[_0x1459('0x26')](_0x2d3f54);}})[_0x1459('0x16')](function(_0xaf5450){logger[_0x1459('0x39')](_0x1459('0x3a'),util[_0x1459('0x3b')](_0xaf5450,{'showHidden':![],'depth':null}));_0x15c7c0();})[_0x1459('0x3c')](function(_0x46005e){logger[_0x1459('0x33')](_0x1459('0x3d'),util[_0x1459('0x3b')](_0x46005e,{'showHidden':![],'depth':null}));_0x15c7c0(_0x46005e);});}}});};