6a75ffdbe1dbb5896a467a345b6152cca3edb983
[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 _0x1189=['utcOffset','add','minutes','format','phone','priority','callbackUniqueid','assign','CmHopper','[Always]\x20Hopper\x20already\x20exists\x20for\x20contact\x20with\x20phone\x20','CmHopperFinal','[Always]\x20Hopper\x20Final\x20already\x20exists\x20for\x20contact\x20with\x20phone\x20','\x20in\x20Campaign\x20with\x20id\x20','CampaignId','VoiceQueueId','create','dialCheckDuplicateType','always','findAll','outbound','ListId','Lists','map','all','CmList','BlackLists','CmHopperBlack','exports','define','CmContact','cm_contacts','fti_cm_contacts','firstName','mobile','fax','email','FULLTEXT','utf8mb4','utf8mb4_unicode_ci','models','error','[cmContact][afterCreate]\x20List\x20not\x20found\x20for\x20contact\x20with\x20id\x20','catch','[cmContact][afterCreate]','get','isEmpty','destroy','ContactId','info','inspect','[CmContact][afterDestroy][Error]','util','../../config/logger','api','../../config/environment/shared','Campaign','VoiceQueue','scheduledat','YYYY-MM-DD\x20HH:mm:ss','isNil','dialTimezone','findOne','then','timezones','resolve'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x1189,0xb5));var _0x9118=function(_0x3bcbc9,_0x4f1ec2){_0x3bcbc9=_0x3bcbc9-0x0;var _0x46afb8=_0x1189[_0x3bcbc9];return _0x46afb8;};'use strict';var _=require('lodash');var util=require(_0x9118('0x0'));var logger=require(_0x9118('0x1'))(_0x9118('0x2'));var moment=require('moment');var shared=require(_0x9118('0x3'));var attributes=require('./cmContact.attributes');function getTimezoneCallbackAt(_0x1c3212,_0x84d646,_0x585d25,_0x5d6bd4){var _0x4c3654=_0x5d6bd4?_0x9118('0x4'):_0x9118('0x5');var _0x883101=_0x585d25[_0x9118('0x6')]?_0x585d25[_0x9118('0x6')]:moment()['format'](_0x9118('0x7'));if(_[_0x9118('0x8')](_0x585d25[_0x9118('0x9')])){return Promise['resolve'](_0x883101);}return _0x1c3212[_0x4c3654][_0x9118('0xa')]({'where':{'id':_0x84d646}})[_0x9118('0xb')](function(_0x355657){if(_['isNil'](_0x355657)||_[_0x9118('0x8')](_0x355657[_0x9118('0x9')])){return Promise['resolve'](_0x883101);}var _0x5003a4=shared[_0x9118('0xc')];var _0x1c1967=_0x5003a4[_0x355657[_0x9118('0x9')]];var _0x3d6336=_0x5003a4[_0x585d25[_0x9118('0x9')]];if(_[_0x9118('0x8')](_0x1c1967)&&_[_0x9118('0x8')](_0x3d6336)){return Promise[_0x9118('0xd')](_0x883101);}var _0x1ca7db=_0x1c1967[_0x9118('0xe')]-_0x3d6336[_0x9118('0xe')];var _0x4ef65c=_0x585d25['scheduledat']?_0x585d25['scheduledat']:moment();_0x883101=moment(_0x4ef65c)[_0x9118('0xf')](_0x1ca7db,_0x9118('0x10'))[_0x9118('0x11')](_0x9118('0x7'));return Promise[_0x9118('0xd')](_0x883101);});}function getNewHopperPayload(_0x159d60){return{'phone':_0x159d60[_0x9118('0x12')],'ContactId':_0x159d60['id'],'ListId':_0x159d60['ListId'],'scheduledat':_0x159d60[_0x9118('0x6')]?_0x159d60[_0x9118('0x6')]:moment()[_0x9118('0x11')]('YYYY-MM-DD\x20HH:mm:ss'),'priority':_0x159d60[_0x9118('0x13')]?_0x159d60['priority']:0x2,'callback':_0x159d60[_0x9118('0x14')]?!![]:![],'callbackuniqueid':_0x159d60[_0x9118('0x14')]?_0x159d60[_0x9118('0x14')]:undefined,'callbackat':_0x159d60[_0x9118('0x14')]?moment()[_0x9118('0x11')]('YYYY-MM-DD\x20HH:mm:ss'):undefined};}function handleAlwaysCheckDuplicate(_0x274e9c,_0x4622db,_0x21b62c,_0x3f5957){var _0x211170={'phone':_0x21b62c['phone']};var _0x1cc12e={'calleridnum':_0x21b62c[_0x9118('0x12')]};if(_0x3f5957){Object[_0x9118('0x15')](_0x211170,{'CampaignId':_0x4622db['id']});Object[_0x9118('0x15')](_0x1cc12e,{'CampaignId':_0x4622db['id']});}else{Object['assign'](_0x211170,{'VoiceQueueId':_0x4622db['id']});Object[_0x9118('0x15')](_0x1cc12e,{'VoiceQueueId':_0x4622db['id']});}return _0x274e9c[_0x9118('0x16')][_0x9118('0xa')]({'where':_0x211170})[_0x9118('0xb')](function(_0x1306fc){if(_0x1306fc){throw new Error(_0x9118('0x17')+_0x21b62c[_0x9118('0x12')]+'\x20in\x20Campaign\x20with\x20id\x20'+_0x4622db['id']);}return _0x274e9c[_0x9118('0x18')]['findOne']({'where':_0x1cc12e});})[_0x9118('0xb')](function(_0x2469bb){if(_0x2469bb){throw new Error(_0x9118('0x19')+_0x21b62c['phone']+_0x9118('0x1a')+_0x4622db['id']);}var _0x6e26ba=getNewHopperPayload(_0x21b62c);if(_0x3f5957){_0x6e26ba[_0x9118('0x1b')]=_0x4622db['id'];}else{_0x6e26ba[_0x9118('0x1c')]=_0x4622db['id'];}return _0x274e9c['CmHopper'][_0x9118('0x1d')](_0x6e26ba);});}function handleOnlyIfOpenCheckDuplicate(_0x58f38f,_0x179f1d,_0x235631,_0x3a2c44){var _0x18f8f2={'phone':_0x235631[_0x9118('0x12')]};if(_0x3a2c44){Object['assign'](_0x18f8f2,{'CampaignId':_0x179f1d['id']});}else{Object[_0x9118('0x15')](_0x18f8f2,{'VoiceQueueId':_0x179f1d['id']});}return _0x58f38f[_0x9118('0x16')]['findOne']({'where':_0x18f8f2})['then'](function(_0x5c1cf7){if(_0x5c1cf7){throw new Error('[OnlyIfOpen]\x20Hopper\x20already\x20exists\x20for\x20contact\x20with\x20phone\x20'+_0x235631[_0x9118('0x12')]+_0x9118('0x1a')+_0x179f1d['id']);}var _0x9e7080=getNewHopperPayload(_0x235631);if(_0x3a2c44){_0x9e7080[_0x9118('0x1b')]=_0x179f1d['id'];}else{_0x9e7080[_0x9118('0x1c')]=_0x179f1d['id'];}return _0x58f38f[_0x9118('0x16')]['create'](_0x9e7080);});}function handleNeverCheckDuplicate(_0x5f67dc,_0x5e17a8,_0x53fae0){var _0x4dddfe=getNewHopperPayload(_0x53fae0);_0x4dddfe[_0x9118('0x1c')]=_0x5e17a8['id'];return _0x5f67dc[_0x9118('0x16')][_0x9118('0x1d')](_0x4dddfe);}function handleCheckDuplicate(_0x12e806,_0x20cb94,_0x1ca335,_0x2791a8){return getTimezoneCallbackAt(_0x12e806,_0x20cb94,_0x1ca335,_0x2791a8)[_0x9118('0xb')](function(_0x2be701){_0x1ca335[_0x9118('0x6')]=_0x2be701;switch(_0x20cb94[_0x9118('0x1e')]){case _0x9118('0x1f'):return handleAlwaysCheckDuplicate(_0x12e806,_0x20cb94,_0x1ca335,_0x2791a8);case'onlyIfOpen':return handleOnlyIfOpenCheckDuplicate(_0x12e806,_0x20cb94,_0x1ca335,_0x2791a8);default:return handleNeverCheckDuplicate(_0x12e806,_0x20cb94,_0x1ca335);}});}function createHopperForVoiceQueues(_0x2101c3,_0x3497fe){return _0x2101c3['VoiceQueue'][_0x9118('0x20')]({'where':{'type':_0x9118('0x21')},'attributes':['id',_0x9118('0x1e'),'dialTimezone'],'include':[{'model':_0x2101c3['CmList'],'as':'Lists','where':{'id':_0x3497fe[_0x9118('0x22')]}}],'raw':!![]})[_0x9118('0xb')](function(_0x27a528){var _0x4a23a5=_0x27a528['map'](function(_0x3d1a5b){return handleCheckDuplicate(_0x2101c3,_0x3d1a5b,_0x3497fe,![]);});return Promise['all'](_0x4a23a5);});}function createHopperForCampaigns(_0x5a6f91,_0x4948ce){return _0x5a6f91[_0x9118('0x4')][_0x9118('0x20')]({'attributes':['id','dialCheckDuplicateType',_0x9118('0x9')],'include':[{'model':_0x5a6f91['CmList'],'as':_0x9118('0x23'),'where':{'id':_0x4948ce['ListId']}}],'raw':!![]})[_0x9118('0xb')](function(_0x5cad27){var _0x100a94=_0x5cad27[_0x9118('0x24')](function(_0x377291){return handleCheckDuplicate(_0x5a6f91,_0x377291,_0x4948ce,!![]);});return Promise[_0x9118('0x25')](_0x100a94);});}function createHopperBlackForVoiceQueues(_0x4d52c7,_0x91dff3){return _0x4d52c7[_0x9118('0x5')]['findAll']({'where':{'type':_0x9118('0x21')},'attributes':['id'],'include':[{'model':_0x4d52c7[_0x9118('0x26')],'as':_0x9118('0x27'),'where':{'id':_0x91dff3[_0x9118('0x22')]}}],'raw':!![]})['then'](function(_0xa2bf7e){var _0x1c23c3=_0xa2bf7e[_0x9118('0x24')](function(_0x59c4fe){return _0x4d52c7[_0x9118('0x28')][_0x9118('0x1d')]({'phone':_0x91dff3['phone'],'ContactId':_0x91dff3['id'],'ListId':_0x91dff3['ListId'],'VoiceQueueId':_0x59c4fe['id']});});return Promise[_0x9118('0x25')](_0x1c23c3);});}function createHopperBlackForCampaigns(_0x2b8e8e,_0x5a65a5){return _0x2b8e8e[_0x9118('0x4')][_0x9118('0x20')]({'attributes':['id'],'include':[{'model':_0x2b8e8e[_0x9118('0x26')],'as':_0x9118('0x27'),'where':{'id':_0x5a65a5[_0x9118('0x22')]}}],'raw':!![]})[_0x9118('0xb')](function(_0x2d3477){var _0x41ec52=_0x2d3477[_0x9118('0x24')](function(_0x100f1e){return _0x2b8e8e[_0x9118('0x28')][_0x9118('0x1d')]({'phone':_0x5a65a5[_0x9118('0x12')],'ContactId':_0x5a65a5['id'],'ListId':_0x5a65a5[_0x9118('0x22')],'CampaignId':_0x100f1e['id']});});return Promise[_0x9118('0x25')](_0x41ec52);});}module[_0x9118('0x29')]=function(_0x3a0307){return _0x3a0307[_0x9118('0x2a')](_0x9118('0x2b'),attributes,{'tableName':_0x9118('0x2c'),'paranoid':!![],'indexes':[{'name':'phone','fields':[_0x9118('0x12')]},{'name':_0x9118('0x2d'),'fields':[_0x9118('0x2e'),'lastName',_0x9118('0x12'),_0x9118('0x2f'),_0x9118('0x30'),_0x9118('0x31')],'type':_0x9118('0x32')}],'timestamps':!![],'charset':_0x9118('0x33'),'collate':_0x9118('0x34'),'hooks':{'afterCreate':function(_0x35ebe8,_0x53792c,_0x1da6b5){var _0x326433=_0x3a0307[_0x9118('0x35')];var _0x32b706=_0x35ebe8['get']({'plain':!![]});if(!_0x32b706['ListId']){logger[_0x9118('0x36')](_0x9118('0x37')+_0x32b706['id']);return _0x1da6b5();}if(!_0x32b706[_0x9118('0x12')]){return _0x1da6b5();}return createHopperForVoiceQueues(_0x326433,_0x32b706)[_0x9118('0xb')](function(){return createHopperBlackForVoiceQueues(_0x326433,_0x32b706);})['then'](function(){return createHopperForCampaigns(_0x326433,_0x32b706);})[_0x9118('0xb')](function(){return createHopperBlackForCampaigns(_0x326433,_0x32b706);})['then'](function(){return _0x1da6b5();})[_0x9118('0x38')](function(_0x1d8af1){logger[_0x9118('0x36')](_0x9118('0x39'),_0x1d8af1['message']);_0x1da6b5();});},'afterDestroy':function(_0x444e1a,_0x1cc720,_0x1fe374){var _0xfe262c=_0x3a0307[_0x9118('0x35')];var _0x2c6a2d=_0x444e1a[_0x9118('0x3a')]({'plain':!![]});return _0xfe262c['CmHopper'][_0x9118('0x20')]({'raw':!![],'where':{'ListId':_0x2c6a2d[_0x9118('0x22')],'ContactId':_0x2c6a2d['id']}})['then'](function(_0x39bd43){if(!_[_0x9118('0x3b')](_0x39bd43)){var _0x31c40d=[];for(var _0x30a851=0x0;_0x30a851<_0x39bd43['length'];_0x30a851+=0x1){var _0x778576=_0xfe262c[_0x9118('0x16')][_0x9118('0x3c')]({'where':{'ListId':_0x39bd43[_0x30a851][_0x9118('0x22')],'ContactId':_0x39bd43[_0x30a851][_0x9118('0x3d')],'VoiceQueueId':_0x39bd43[_0x30a851][_0x9118('0x1c')],'CampaignId':_0x39bd43[_0x30a851]['CampaignId']}});_0x31c40d['push'](_0x778576);}return Promise[_0x9118('0x25')](_0x31c40d);}})[_0x9118('0xb')](function(_0x12ade4){logger[_0x9118('0x3e')]('[CmContact][afterDestroy][Succesfull]',util[_0x9118('0x3f')](_0x12ade4,{'showHidden':![],'depth':null}));_0x1fe374();})['catch'](function(_0x2061e8){logger['error'](_0x9118('0x40'),util[_0x9118('0x3f')](_0x2061e8,{'showHidden':![],'depth':null}));_0x1fe374(_0x2061e8);});}}});};