Built motion from commit 953226e6.|2.6.32
[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 _0xc17f=['util','moment','../../config/environment/shared','Campaign','VoiceQueue','scheduledat','format','isNil','dialTimezone','resolve','findOne','then','timezones','utcOffset','minutes','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','[Always]\x20Hopper\x20Final\x20already\x20exists\x20for\x20contact\x20with\x20phone\x20','CampaignId','VoiceQueueId','create','[OnlyIfOpen]\x20Hopper\x20already\x20exists\x20for\x20contact\x20with\x20phone\x20','dialCheckDuplicateType','onlyIfOpen','outbound','CmList','map','Lists','all','findAll','CmHopperBlack','BlackLists','exports','cm_contacts','fti_cm_contacts','mobile','fax','utf8mb4','utf8mb4_unicode_ci','error','[cmContact][afterCreate]\x20List\x20not\x20found\x20for\x20contact\x20with\x20id\x20','catch','[cmContact][afterCreate]','message','get','isEmpty','length','destroy','info','[CmContact][afterDestroy][Succesfull]','inspect','[CmContact][afterDestroy][Error]'];(function(_0x53ccf2,_0x13cb67){var _0x5a2964=function(_0x3b0514){while(--_0x3b0514){_0x53ccf2['push'](_0x53ccf2['shift']());}};_0x5a2964(++_0x13cb67);}(_0xc17f,0x1d8));var _0xfc17=function(_0x258534,_0x586b54){_0x258534=_0x258534-0x0;var _0x37b893=_0xc17f[_0x258534];return _0x37b893;};'use strict';var _=require('lodash');var util=require(_0xfc17('0x0'));var logger=require('../../config/logger')('api');var moment=require(_0xfc17('0x1'));var shared=require(_0xfc17('0x2'));var attributes=require('./cmContact.attributes');function getTimezoneCallbackAt(_0x218bb7,_0x2ca557,_0x31a4dd,_0x1e6ff7){var _0x5c309d=_0x1e6ff7?_0xfc17('0x3'):_0xfc17('0x4');var _0x51b0c1=_0x31a4dd[_0xfc17('0x5')]?_0x31a4dd[_0xfc17('0x5')]:moment()[_0xfc17('0x6')]('YYYY-MM-DD\x20HH:mm:ss');if(_[_0xfc17('0x7')](_0x31a4dd[_0xfc17('0x8')])){return Promise[_0xfc17('0x9')](_0x51b0c1);}return _0x218bb7[_0x5c309d][_0xfc17('0xa')]({'where':{'id':_0x2ca557}})[_0xfc17('0xb')](function(_0x190a8c){if(_[_0xfc17('0x7')](_0x190a8c)||_[_0xfc17('0x7')](_0x190a8c[_0xfc17('0x8')])){return Promise[_0xfc17('0x9')](_0x51b0c1);}var _0x430e5a=shared[_0xfc17('0xc')];var _0x541b8a=_0x430e5a[_0x190a8c[_0xfc17('0x8')]];var _0x438b0a=_0x430e5a[_0x31a4dd[_0xfc17('0x8')]];if(_[_0xfc17('0x7')](_0x541b8a)&&_[_0xfc17('0x7')](_0x438b0a)){return Promise['resolve'](_0x51b0c1);}var _0x264d8f=_0x541b8a[_0xfc17('0xd')]-_0x438b0a[_0xfc17('0xd')];var _0x226ac6=_0x31a4dd[_0xfc17('0x5')]?_0x31a4dd[_0xfc17('0x5')]:moment();_0x51b0c1=moment(_0x226ac6)['add'](_0x264d8f,_0xfc17('0xe'))[_0xfc17('0x6')](_0xfc17('0xf'));return Promise[_0xfc17('0x9')](_0x51b0c1);});}function getNewHopperPayload(_0x5d4b5d){return{'phone':_0x5d4b5d[_0xfc17('0x10')],'ContactId':_0x5d4b5d['id'],'ListId':_0x5d4b5d[_0xfc17('0x11')],'scheduledat':_0x5d4b5d[_0xfc17('0x5')]?_0x5d4b5d[_0xfc17('0x5')]:moment()[_0xfc17('0x6')](_0xfc17('0xf')),'priority':_0x5d4b5d[_0xfc17('0x12')]?_0x5d4b5d[_0xfc17('0x12')]:0x2,'callback':_0x5d4b5d['callbackUniqueid']?!![]:![],'callbackuniqueid':_0x5d4b5d[_0xfc17('0x13')]?_0x5d4b5d[_0xfc17('0x13')]:undefined,'callbackat':_0x5d4b5d['callbackUniqueid']?moment()['format'](_0xfc17('0xf')):undefined};}function handleAlwaysCheckDuplicate(_0x140adc,_0x54253f,_0x2b304,_0x741623){var _0xa43f01={'phone':_0x2b304[_0xfc17('0x10')]};var _0x278d52={'calleridnum':_0x2b304[_0xfc17('0x10')]};if(_0x741623){Object[_0xfc17('0x14')](_0xa43f01,{'CampaignId':_0x54253f['id']});Object[_0xfc17('0x14')](_0x278d52,{'CampaignId':_0x54253f['id']});}else{Object['assign'](_0xa43f01,{'VoiceQueueId':_0x54253f['id']});Object[_0xfc17('0x14')](_0x278d52,{'VoiceQueueId':_0x54253f['id']});}return _0x140adc[_0xfc17('0x15')][_0xfc17('0xa')]({'where':_0xa43f01})[_0xfc17('0xb')](function(_0x340361){if(_0x340361){throw new Error(_0xfc17('0x16')+_0x2b304[_0xfc17('0x10')]+_0xfc17('0x17')+_0x54253f['id']);}return _0x140adc['CmHopperFinal'][_0xfc17('0xa')]({'where':_0x278d52});})[_0xfc17('0xb')](function(_0x658ed2){if(_0x658ed2){throw new Error(_0xfc17('0x18')+_0x2b304[_0xfc17('0x10')]+_0xfc17('0x17')+_0x54253f['id']);}var _0x2568da=getNewHopperPayload(_0x2b304);if(_0x741623){_0x2568da[_0xfc17('0x19')]=_0x54253f['id'];}else{_0x2568da[_0xfc17('0x1a')]=_0x54253f['id'];}return _0x140adc[_0xfc17('0x15')][_0xfc17('0x1b')](_0x2568da);});}function handleOnlyIfOpenCheckDuplicate(_0x33016e,_0x301f00,_0x216a01,_0x311fad){var _0xf87eb5={'phone':_0x216a01[_0xfc17('0x10')]};if(_0x311fad){Object['assign'](_0xf87eb5,{'CampaignId':_0x301f00['id']});}else{Object[_0xfc17('0x14')](_0xf87eb5,{'VoiceQueueId':_0x301f00['id']});}return _0x33016e['CmHopper'][_0xfc17('0xa')]({'where':_0xf87eb5})[_0xfc17('0xb')](function(_0x545ff7){if(_0x545ff7){throw new Error(_0xfc17('0x1c')+_0x216a01[_0xfc17('0x10')]+_0xfc17('0x17')+_0x301f00['id']);}var _0x41b6e7=getNewHopperPayload(_0x216a01);if(_0x311fad){_0x41b6e7[_0xfc17('0x19')]=_0x301f00['id'];}else{_0x41b6e7[_0xfc17('0x1a')]=_0x301f00['id'];}return _0x33016e[_0xfc17('0x15')][_0xfc17('0x1b')](_0x41b6e7);});}function handleNeverCheckDuplicate(_0xdfdce5,_0x4197b7,_0x558358){var _0x443cfb=getNewHopperPayload(_0x558358);_0x443cfb[_0xfc17('0x1a')]=_0x4197b7['id'];return _0xdfdce5[_0xfc17('0x15')][_0xfc17('0x1b')](_0x443cfb);}function handleCheckDuplicate(_0x2effb9,_0x58864e,_0x131def,_0x27ce61){return getTimezoneCallbackAt(_0x2effb9,_0x58864e,_0x131def,_0x27ce61)[_0xfc17('0xb')](function(_0x22c038){_0x131def[_0xfc17('0x5')]=_0x22c038;switch(_0x58864e[_0xfc17('0x1d')]){case'always':return handleAlwaysCheckDuplicate(_0x2effb9,_0x58864e,_0x131def,_0x27ce61);case _0xfc17('0x1e'):return handleOnlyIfOpenCheckDuplicate(_0x2effb9,_0x58864e,_0x131def,_0x27ce61);default:return handleNeverCheckDuplicate(_0x2effb9,_0x58864e,_0x131def);}});}function createHopperForVoiceQueues(_0x363a0b,_0x457d71){return _0x363a0b[_0xfc17('0x4')]['findAll']({'where':{'type':_0xfc17('0x1f')},'attributes':['id',_0xfc17('0x1d'),_0xfc17('0x8')],'include':[{'model':_0x363a0b[_0xfc17('0x20')],'as':'Lists','where':{'id':_0x457d71[_0xfc17('0x11')]}}],'raw':!![]})['then'](function(_0x316ca6){var _0x1af927=_0x316ca6[_0xfc17('0x21')](function(_0x48221e){return handleCheckDuplicate(_0x363a0b,_0x48221e,_0x457d71,![]);});return Promise['all'](_0x1af927);});}function createHopperForCampaigns(_0x22b070,_0x1614fe){return _0x22b070[_0xfc17('0x3')]['findAll']({'attributes':['id',_0xfc17('0x1d'),'dialTimezone'],'include':[{'model':_0x22b070['CmList'],'as':_0xfc17('0x22'),'where':{'id':_0x1614fe['ListId']}}],'raw':!![]})[_0xfc17('0xb')](function(_0x5511d2){var _0x29426e=_0x5511d2['map'](function(_0x2b846d){return handleCheckDuplicate(_0x22b070,_0x2b846d,_0x1614fe,!![]);});return Promise[_0xfc17('0x23')](_0x29426e);});}function createHopperBlackForVoiceQueues(_0x26eb02,_0x35d484){return _0x26eb02[_0xfc17('0x4')][_0xfc17('0x24')]({'where':{'type':_0xfc17('0x1f')},'attributes':['id'],'include':[{'model':_0x26eb02[_0xfc17('0x20')],'as':'BlackLists','where':{'id':_0x35d484[_0xfc17('0x11')]}}],'raw':!![]})['then'](function(_0x2912a9){var _0x125027=_0x2912a9[_0xfc17('0x21')](function(_0xeb5d07){return _0x26eb02[_0xfc17('0x25')][_0xfc17('0x1b')]({'phone':_0x35d484[_0xfc17('0x10')],'ContactId':_0x35d484['id'],'ListId':_0x35d484[_0xfc17('0x11')],'VoiceQueueId':_0xeb5d07['id']});});return Promise[_0xfc17('0x23')](_0x125027);});}function createHopperBlackForCampaigns(_0x2ab9a0,_0x2b9810){return _0x2ab9a0[_0xfc17('0x3')][_0xfc17('0x24')]({'attributes':['id'],'include':[{'model':_0x2ab9a0[_0xfc17('0x20')],'as':_0xfc17('0x26'),'where':{'id':_0x2b9810[_0xfc17('0x11')]}}],'raw':!![]})[_0xfc17('0xb')](function(_0xeeefc9){var _0x4acd39=_0xeeefc9[_0xfc17('0x21')](function(_0x59f3ec){return _0x2ab9a0[_0xfc17('0x25')][_0xfc17('0x1b')]({'phone':_0x2b9810['phone'],'ContactId':_0x2b9810['id'],'ListId':_0x2b9810[_0xfc17('0x11')],'CampaignId':_0x59f3ec['id']});});return Promise['all'](_0x4acd39);});}module[_0xfc17('0x27')]=function(_0x1567cf){return _0x1567cf['define']('CmContact',attributes,{'tableName':_0xfc17('0x28'),'paranoid':!![],'indexes':[{'name':'phone','fields':[_0xfc17('0x10')]},{'name':_0xfc17('0x29'),'fields':['firstName','lastName',_0xfc17('0x10'),_0xfc17('0x2a'),_0xfc17('0x2b'),'email'],'type':'FULLTEXT'}],'timestamps':!![],'charset':_0xfc17('0x2c'),'collate':_0xfc17('0x2d'),'hooks':{'afterCreate':function(_0x40b8e7,_0x287477,_0xdd4cfe){var _0x1be5ed=_0x1567cf['models'];var _0x55cc0e=_0x40b8e7['get']({'plain':!![]});if(!_0x55cc0e[_0xfc17('0x11')]){logger[_0xfc17('0x2e')](_0xfc17('0x2f')+_0x55cc0e['id']);return _0xdd4cfe();}if(!_0x55cc0e[_0xfc17('0x10')]){return _0xdd4cfe();}return createHopperForVoiceQueues(_0x1be5ed,_0x55cc0e)['then'](function(){return createHopperBlackForVoiceQueues(_0x1be5ed,_0x55cc0e);})[_0xfc17('0xb')](function(){return createHopperForCampaigns(_0x1be5ed,_0x55cc0e);})[_0xfc17('0xb')](function(){return createHopperBlackForCampaigns(_0x1be5ed,_0x55cc0e);})[_0xfc17('0xb')](function(){return _0xdd4cfe();})[_0xfc17('0x30')](function(_0x46e2f5){logger[_0xfc17('0x2e')](_0xfc17('0x31'),_0x46e2f5[_0xfc17('0x32')]);_0xdd4cfe();});},'afterDestroy':function(_0x2aab2c,_0xe8a39e,_0x3f0bea){var _0x494c65=_0x1567cf['models'];var _0x50cff6=_0x2aab2c[_0xfc17('0x33')]({'plain':!![]});return _0x494c65[_0xfc17('0x15')][_0xfc17('0x24')]({'raw':!![],'where':{'ListId':_0x50cff6[_0xfc17('0x11')],'ContactId':_0x50cff6['id']}})[_0xfc17('0xb')](function(_0x2660aa){if(!_[_0xfc17('0x34')](_0x2660aa)){var _0xbeacae=[];for(var _0xe38936=0x0;_0xe38936<_0x2660aa[_0xfc17('0x35')];_0xe38936+=0x1){var _0xf22f06=_0x494c65[_0xfc17('0x15')][_0xfc17('0x36')]({'where':{'ListId':_0x2660aa[_0xe38936]['ListId'],'ContactId':_0x2660aa[_0xe38936]['ContactId'],'VoiceQueueId':_0x2660aa[_0xe38936][_0xfc17('0x1a')],'CampaignId':_0x2660aa[_0xe38936][_0xfc17('0x19')]}});_0xbeacae['push'](_0xf22f06);}return Promise[_0xfc17('0x23')](_0xbeacae);}})[_0xfc17('0xb')](function(_0x3149e2){logger[_0xfc17('0x37')](_0xfc17('0x38'),util[_0xfc17('0x39')](_0x3149e2,{'showHidden':![],'depth':null}));_0x3f0bea();})['catch'](function(_0x27e283){logger[_0xfc17('0x2e')](_0xfc17('0x3a'),util[_0xfc17('0x39')](_0x27e283,{'showHidden':![],'depth':null}));_0x3f0bea(_0x27e283);});}}});};