5207995a2b694cd839a54898b6d5ea370ec911b4
[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 _0xdce5=['util','../../config/logger','moment','../../config/environment/shared','./cmContact.attributes','Campaign','VoiceQueue','format','isNil','resolve','then','dialTimezone','utcOffset','add','YYYY-MM-DD\x20HH:mm:ss','phone','ListId','scheduledat','priority','callbackUniqueid','assign','findOne','[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','CmHopper','create','[OnlyIfOpen]\x20Hopper\x20already\x20exists\x20for\x20contact\x20with\x20phone\x20','VoiceQueueId','dialCheckDuplicateType','always','onlyIfOpen','outbound','CmList','Lists','map','findAll','all','BlackLists','CmHopperBlack','define','CmContact','cm_contacts','firstName','lastName','fax','email','FULLTEXT','utf8mb4','utf8mb4_unicode_ci','models','error','[cmContact][afterCreate]\x20List\x20not\x20found\x20for\x20contact\x20with\x20id\x20','catch','[cmContact][afterCreate]','message','get','length','destroy','ContactId','info','[CmContact][afterDestroy][Error]','lodash'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xdce5,0x17f));var _0x5dce=function(_0x568469,_0x551ebd){_0x568469=_0x568469-0x0;var _0x1b8b2a=_0xdce5[_0x568469];return _0x1b8b2a;};'use strict';var _=require(_0x5dce('0x0'));var util=require(_0x5dce('0x1'));var logger=require(_0x5dce('0x2'))('api');var moment=require(_0x5dce('0x3'));var shared=require(_0x5dce('0x4'));var attributes=require(_0x5dce('0x5'));function getTimezoneCallbackAt(_0x34b45b,_0x6ea52,_0x480603,_0x186163){var _0x404176=_0x186163?_0x5dce('0x6'):_0x5dce('0x7');var _0x3c7cae=_0x480603['scheduledat']?_0x480603['scheduledat']:moment()[_0x5dce('0x8')]('YYYY-MM-DD\x20HH:mm:ss');if(_[_0x5dce('0x9')](_0x480603['dialTimezone'])){return Promise[_0x5dce('0xa')](_0x3c7cae);}return _0x34b45b[_0x404176]['findOne']({'where':{'id':_0x6ea52}})[_0x5dce('0xb')](function(_0x7db8b4){if(_[_0x5dce('0x9')](_0x7db8b4)||_[_0x5dce('0x9')](_0x7db8b4['dialTimezone'])){return Promise[_0x5dce('0xa')](_0x3c7cae);}var _0x1165cb=shared['timezones'];var _0x4374da=_0x1165cb[_0x7db8b4[_0x5dce('0xc')]];var _0x6b66cd=_0x1165cb[_0x480603['dialTimezone']];if(_[_0x5dce('0x9')](_0x4374da)&&_[_0x5dce('0x9')](_0x6b66cd)){return Promise[_0x5dce('0xa')](_0x3c7cae);}var _0x24079c=_0x4374da[_0x5dce('0xd')]-_0x6b66cd[_0x5dce('0xd')];var _0x516f97=_0x480603['scheduledat']?_0x480603['scheduledat']:moment();_0x3c7cae=moment(_0x516f97)[_0x5dce('0xe')](_0x24079c,'minutes')[_0x5dce('0x8')](_0x5dce('0xf'));return Promise[_0x5dce('0xa')](_0x3c7cae);});}function getNewHopperPayload(_0x5cb9bd){return{'phone':_0x5cb9bd[_0x5dce('0x10')],'ContactId':_0x5cb9bd['id'],'ListId':_0x5cb9bd[_0x5dce('0x11')],'scheduledat':_0x5cb9bd[_0x5dce('0x12')]?_0x5cb9bd[_0x5dce('0x12')]:moment()[_0x5dce('0x8')](_0x5dce('0xf')),'priority':_0x5cb9bd['priority']?_0x5cb9bd[_0x5dce('0x13')]:0x2,'callback':_0x5cb9bd[_0x5dce('0x14')]?!![]:![],'callbackuniqueid':_0x5cb9bd[_0x5dce('0x14')]?_0x5cb9bd[_0x5dce('0x14')]:undefined,'callbackat':_0x5cb9bd[_0x5dce('0x14')]?moment()[_0x5dce('0x8')](_0x5dce('0xf')):undefined};}function handleAlwaysCheckDuplicate(_0x1f9114,_0x37ba69,_0x155dc8,_0x6d33ca){var _0x6cf4b9={'phone':_0x155dc8['phone']};var _0x391484={'calleridnum':_0x155dc8[_0x5dce('0x10')]};if(_0x6d33ca){Object[_0x5dce('0x15')](_0x6cf4b9,{'CampaignId':_0x37ba69['id']});Object[_0x5dce('0x15')](_0x391484,{'CampaignId':_0x37ba69['id']});}else{Object[_0x5dce('0x15')](_0x6cf4b9,{'VoiceQueueId':_0x37ba69['id']});Object['assign'](_0x391484,{'VoiceQueueId':_0x37ba69['id']});}return _0x1f9114['CmHopper'][_0x5dce('0x16')]({'where':_0x6cf4b9})[_0x5dce('0xb')](function(_0x4bb1c5){if(_0x4bb1c5){throw new Error(_0x5dce('0x17')+_0x155dc8[_0x5dce('0x10')]+_0x5dce('0x18')+_0x37ba69['id']);}return _0x1f9114['CmHopperFinal'][_0x5dce('0x16')]({'where':_0x391484});})[_0x5dce('0xb')](function(_0x5df0ff){if(_0x5df0ff){throw new Error(_0x5dce('0x19')+_0x155dc8[_0x5dce('0x10')]+_0x5dce('0x18')+_0x37ba69['id']);}var _0x17daa1=getNewHopperPayload(_0x155dc8);if(_0x6d33ca){_0x17daa1[_0x5dce('0x1a')]=_0x37ba69['id'];}else{_0x17daa1['VoiceQueueId']=_0x37ba69['id'];}return _0x1f9114[_0x5dce('0x1b')][_0x5dce('0x1c')](_0x17daa1);});}function handleOnlyIfOpenCheckDuplicate(_0xdaad35,_0x18c753,_0x3324de,_0x384f1a){var _0x259d22={'phone':_0x3324de[_0x5dce('0x10')]};if(_0x384f1a){Object[_0x5dce('0x15')](_0x259d22,{'CampaignId':_0x18c753['id']});}else{Object[_0x5dce('0x15')](_0x259d22,{'VoiceQueueId':_0x18c753['id']});}return _0xdaad35['CmHopper'][_0x5dce('0x16')]({'where':_0x259d22})[_0x5dce('0xb')](function(_0x20064e){if(_0x20064e){throw new Error(_0x5dce('0x1d')+_0x3324de['phone']+'\x20in\x20Campaign\x20with\x20id\x20'+_0x18c753['id']);}var _0x53ca3e=getNewHopperPayload(_0x3324de);if(_0x384f1a){_0x53ca3e[_0x5dce('0x1a')]=_0x18c753['id'];}else{_0x53ca3e[_0x5dce('0x1e')]=_0x18c753['id'];}return _0xdaad35[_0x5dce('0x1b')]['create'](_0x53ca3e);});}function handleNeverCheckDuplicate(_0x227f1f,_0x58f31e,_0x41e22e){var _0x26a074=getNewHopperPayload(_0x41e22e);_0x26a074[_0x5dce('0x1e')]=_0x58f31e['id'];return _0x227f1f['CmHopper']['create'](_0x26a074);}function handleCheckDuplicate(_0x4bd1b6,_0x1864f4,_0x403eb1,_0x31a24a){return getTimezoneCallbackAt(_0x4bd1b6,_0x1864f4,_0x403eb1,_0x31a24a)[_0x5dce('0xb')](function(_0xaf9953){_0x403eb1['scheduledat']=_0xaf9953;switch(_0x1864f4[_0x5dce('0x1f')]){case _0x5dce('0x20'):return handleAlwaysCheckDuplicate(_0x4bd1b6,_0x1864f4,_0x403eb1,_0x31a24a);case _0x5dce('0x21'):return handleOnlyIfOpenCheckDuplicate(_0x4bd1b6,_0x1864f4,_0x403eb1,_0x31a24a);default:return handleNeverCheckDuplicate(_0x4bd1b6,_0x1864f4,_0x403eb1);}});}function createHopperForVoiceQueues(_0x244973,_0x439c33){return _0x244973[_0x5dce('0x7')]['findAll']({'where':{'type':_0x5dce('0x22')},'attributes':['id',_0x5dce('0x1f'),_0x5dce('0xc')],'include':[{'model':_0x244973[_0x5dce('0x23')],'as':_0x5dce('0x24'),'where':{'id':_0x439c33[_0x5dce('0x11')]}}],'raw':!![]})['then'](function(_0x1f4bfe){var _0x510f74=_0x1f4bfe[_0x5dce('0x25')](function(_0x42680a){return handleCheckDuplicate(_0x244973,_0x42680a,_0x439c33,![]);});return Promise['all'](_0x510f74);});}function createHopperForCampaigns(_0x2f5fcb,_0x4e3643){return _0x2f5fcb[_0x5dce('0x6')][_0x5dce('0x26')]({'attributes':['id',_0x5dce('0x1f'),'dialTimezone'],'include':[{'model':_0x2f5fcb['CmList'],'as':_0x5dce('0x24'),'where':{'id':_0x4e3643['ListId']}}],'raw':!![]})[_0x5dce('0xb')](function(_0x4e6347){var _0x35884d=_0x4e6347[_0x5dce('0x25')](function(_0x2ee796){return handleCheckDuplicate(_0x2f5fcb,_0x2ee796,_0x4e3643,!![]);});return Promise[_0x5dce('0x27')](_0x35884d);});}function createHopperBlackForVoiceQueues(_0x5d4eb4,_0x3bb7dc){return _0x5d4eb4[_0x5dce('0x7')]['findAll']({'where':{'type':_0x5dce('0x22')},'attributes':['id'],'include':[{'model':_0x5d4eb4[_0x5dce('0x23')],'as':_0x5dce('0x28'),'where':{'id':_0x3bb7dc[_0x5dce('0x11')]}}],'raw':!![]})[_0x5dce('0xb')](function(_0x45b29c){var _0xb57c2d=_0x45b29c['map'](function(_0xa35560){return _0x5d4eb4[_0x5dce('0x29')][_0x5dce('0x1c')]({'phone':_0x3bb7dc[_0x5dce('0x10')],'ContactId':_0x3bb7dc['id'],'ListId':_0x3bb7dc[_0x5dce('0x11')],'VoiceQueueId':_0xa35560['id']});});return Promise[_0x5dce('0x27')](_0xb57c2d);});}function createHopperBlackForCampaigns(_0x2a7bd5,_0x1d0ba4){return _0x2a7bd5['Campaign'][_0x5dce('0x26')]({'attributes':['id'],'include':[{'model':_0x2a7bd5[_0x5dce('0x23')],'as':'BlackLists','where':{'id':_0x1d0ba4['ListId']}}],'raw':!![]})[_0x5dce('0xb')](function(_0x1256c4){var _0x1a65a1=_0x1256c4[_0x5dce('0x25')](function(_0x1d4e4d){return _0x2a7bd5['CmHopperBlack'][_0x5dce('0x1c')]({'phone':_0x1d0ba4[_0x5dce('0x10')],'ContactId':_0x1d0ba4['id'],'ListId':_0x1d0ba4[_0x5dce('0x11')],'CampaignId':_0x1d4e4d['id']});});return Promise['all'](_0x1a65a1);});}module['exports']=function(_0x21e82c){return _0x21e82c[_0x5dce('0x2a')](_0x5dce('0x2b'),attributes,{'tableName':_0x5dce('0x2c'),'paranoid':!![],'indexes':[{'name':_0x5dce('0x10'),'fields':[_0x5dce('0x10')]},{'name':'fti_cm_contacts','fields':[_0x5dce('0x2d'),_0x5dce('0x2e'),_0x5dce('0x10'),'mobile',_0x5dce('0x2f'),_0x5dce('0x30')],'type':_0x5dce('0x31')}],'timestamps':!![],'charset':_0x5dce('0x32'),'collate':_0x5dce('0x33'),'hooks':{'afterCreate':function(_0x4d3226,_0x5960a4,_0x1f5ebc){var _0x25745e=_0x21e82c[_0x5dce('0x34')];var _0x3c688d=_0x4d3226['get']({'plain':!![]});if(!_0x3c688d[_0x5dce('0x11')]){logger[_0x5dce('0x35')](_0x5dce('0x36')+_0x3c688d['id']);return _0x1f5ebc();}if(!_0x3c688d[_0x5dce('0x10')]){return _0x1f5ebc();}return createHopperForVoiceQueues(_0x25745e,_0x3c688d)[_0x5dce('0xb')](function(){return createHopperBlackForVoiceQueues(_0x25745e,_0x3c688d);})[_0x5dce('0xb')](function(){return createHopperForCampaigns(_0x25745e,_0x3c688d);})[_0x5dce('0xb')](function(){return createHopperBlackForCampaigns(_0x25745e,_0x3c688d);})[_0x5dce('0xb')](function(){return _0x1f5ebc();})[_0x5dce('0x37')](function(_0x43598c){logger['error'](_0x5dce('0x38'),_0x43598c[_0x5dce('0x39')]);_0x1f5ebc();});},'afterDestroy':function(_0x292e25,_0x1d5fb3,_0x2c6622){var _0x1164bf=_0x21e82c['models'];var _0x5d39de=_0x292e25[_0x5dce('0x3a')]({'plain':!![]});return _0x1164bf['CmHopper'][_0x5dce('0x26')]({'raw':!![],'where':{'ListId':_0x5d39de[_0x5dce('0x11')],'ContactId':_0x5d39de['id']}})[_0x5dce('0xb')](function(_0x5b3c38){if(!_['isEmpty'](_0x5b3c38)){var _0x2db776=[];for(var _0x696dee=0x0;_0x696dee<_0x5b3c38[_0x5dce('0x3b')];_0x696dee+=0x1){var _0x1da772=_0x1164bf[_0x5dce('0x1b')][_0x5dce('0x3c')]({'where':{'ListId':_0x5b3c38[_0x696dee][_0x5dce('0x11')],'ContactId':_0x5b3c38[_0x696dee][_0x5dce('0x3d')],'VoiceQueueId':_0x5b3c38[_0x696dee][_0x5dce('0x1e')],'CampaignId':_0x5b3c38[_0x696dee]['CampaignId']}});_0x2db776['push'](_0x1da772);}return Promise[_0x5dce('0x27')](_0x2db776);}})[_0x5dce('0xb')](function(_0x1928d2){logger[_0x5dce('0x3e')]('[CmContact][afterDestroy][Succesfull]',util['inspect'](_0x1928d2,{'showHidden':![],'depth':null}));_0x2c6622();})[_0x5dce('0x37')](function(_0x26af79){logger[_0x5dce('0x35')](_0x5dce('0x3f'),util['inspect'](_0x26af79,{'showHidden':![],'depth':null}));_0x2c6622(_0x26af79);});}}});};