Built motion from commit 4c281f94.|2.6.31
[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 _0x98e0=['create','[OnlyIfOpen]\x20Hopper\x20already\x20exists\x20for\x20contact\x20with\x20phone\x20','CampaignId','always','findAll','dialCheckDuplicateType','CmList','Lists','map','all','outbound','BlackLists','CmHopperBlack','exports','fti_cm_contacts','firstName','lastName','fax','FULLTEXT','utf8mb4','utf8mb4_unicode_ci','get','error','[cmContact][afterCreate]\x20List\x20not\x20found\x20for\x20contact\x20with\x20id\x20','catch','[cmContact][afterCreate]','message','isEmpty','length','destroy','ContactId','info','[CmContact][afterDestroy][Succesfull]','inspect','[CmContact][afterDestroy][Error]','util','../../config/logger','api','moment','../../config/environment/shared','./cmContact.attributes','Campaign','VoiceQueue','scheduledat','YYYY-MM-DD\x20HH:mm:ss','isNil','dialTimezone','resolve','findOne','then','timezones','utcOffset','minutes','format','ListId','priority','callbackUniqueid','phone','assign','[Always]\x20Hopper\x20already\x20exists\x20for\x20contact\x20with\x20phone\x20','\x20in\x20Campaign\x20with\x20id\x20','VoiceQueueId','CmHopper'];(function(_0x43990b,_0x31d47b){var _0x475d9a=function(_0x1181dd){while(--_0x1181dd){_0x43990b['push'](_0x43990b['shift']());}};_0x475d9a(++_0x31d47b);}(_0x98e0,0x11f));var _0x098e=function(_0x1f4cb3,_0x3b276b){_0x1f4cb3=_0x1f4cb3-0x0;var _0x523068=_0x98e0[_0x1f4cb3];return _0x523068;};'use strict';var _=require('lodash');var util=require(_0x098e('0x0'));var logger=require(_0x098e('0x1'))(_0x098e('0x2'));var moment=require(_0x098e('0x3'));var shared=require(_0x098e('0x4'));var attributes=require(_0x098e('0x5'));function getTimezoneCallbackAt(_0x335f75,_0x47a054,_0x4b4b33,_0x518a1e){var _0x12fe25=_0x518a1e?_0x098e('0x6'):_0x098e('0x7');var _0x5538ba=_0x4b4b33[_0x098e('0x8')]?_0x4b4b33[_0x098e('0x8')]:moment()['format'](_0x098e('0x9'));if(_[_0x098e('0xa')](_0x4b4b33[_0x098e('0xb')])){return Promise[_0x098e('0xc')](_0x5538ba);}return _0x335f75[_0x12fe25][_0x098e('0xd')]({'where':{'id':_0x47a054}})[_0x098e('0xe')](function(_0x894966){if(_['isNil'](_0x894966)||_[_0x098e('0xa')](_0x894966[_0x098e('0xb')])){return Promise[_0x098e('0xc')](_0x5538ba);}var _0x5f2ffd=shared[_0x098e('0xf')];var _0x24fa16=_0x5f2ffd[_0x894966[_0x098e('0xb')]];var _0x32c935=_0x5f2ffd[_0x4b4b33['dialTimezone']];if(_[_0x098e('0xa')](_0x24fa16)&&_[_0x098e('0xa')](_0x32c935)){return Promise[_0x098e('0xc')](_0x5538ba);}var _0x4f24ee=_0x24fa16[_0x098e('0x10')]-_0x32c935['utcOffset'];var _0x3ffd93=_0x4b4b33[_0x098e('0x8')]?_0x4b4b33[_0x098e('0x8')]:moment();_0x5538ba=moment(_0x3ffd93)['add'](_0x4f24ee,_0x098e('0x11'))[_0x098e('0x12')](_0x098e('0x9'));return Promise['resolve'](_0x5538ba);});}function getNewHopperPayload(_0x248f05){return{'phone':_0x248f05['phone'],'ContactId':_0x248f05['id'],'ListId':_0x248f05[_0x098e('0x13')],'scheduledat':_0x248f05[_0x098e('0x8')]?_0x248f05['scheduledat']:moment()[_0x098e('0x12')](_0x098e('0x9')),'priority':_0x248f05[_0x098e('0x14')]?_0x248f05['priority']:0x2,'callback':_0x248f05[_0x098e('0x15')]?!![]:![],'callbackuniqueid':_0x248f05[_0x098e('0x15')]?_0x248f05['callbackUniqueid']:undefined,'callbackat':_0x248f05[_0x098e('0x15')]?moment()[_0x098e('0x12')](_0x098e('0x9')):undefined};}function handleAlwaysCheckDuplicate(_0x1bdd84,_0x34674d,_0x3d1556,_0x7573ca){var _0x321ef1={'phone':_0x3d1556[_0x098e('0x16')]};var _0x4e05b4={'calleridnum':_0x3d1556[_0x098e('0x16')]};if(_0x7573ca){Object[_0x098e('0x17')](_0x321ef1,{'CampaignId':_0x34674d['id']});Object[_0x098e('0x17')](_0x4e05b4,{'CampaignId':_0x34674d['id']});}else{Object['assign'](_0x321ef1,{'VoiceQueueId':_0x34674d['id']});Object[_0x098e('0x17')](_0x4e05b4,{'VoiceQueueId':_0x34674d['id']});}return _0x1bdd84['CmHopper']['findOne']({'where':_0x321ef1})['then'](function(_0x21e7d4){if(_0x21e7d4){throw new Error(_0x098e('0x18')+_0x3d1556[_0x098e('0x16')]+_0x098e('0x19')+_0x34674d['id']);}return _0x1bdd84['CmHopperFinal']['findOne']({'where':_0x4e05b4});})[_0x098e('0xe')](function(_0x5a5223){if(_0x5a5223){throw new Error('[Always]\x20Hopper\x20Final\x20already\x20exists\x20for\x20contact\x20with\x20phone\x20'+_0x3d1556['phone']+_0x098e('0x19')+_0x34674d['id']);}var _0x23bd0f=getNewHopperPayload(_0x3d1556);if(_0x7573ca){_0x23bd0f['CampaignId']=_0x34674d['id'];}else{_0x23bd0f[_0x098e('0x1a')]=_0x34674d['id'];}return _0x1bdd84[_0x098e('0x1b')][_0x098e('0x1c')](_0x23bd0f);});}function handleOnlyIfOpenCheckDuplicate(_0x3cd6f2,_0x4e93dd,_0xee0693,_0x59b393){var _0x35b289={'phone':_0xee0693[_0x098e('0x16')]};if(_0x59b393){Object[_0x098e('0x17')](_0x35b289,{'CampaignId':_0x4e93dd['id']});}else{Object[_0x098e('0x17')](_0x35b289,{'VoiceQueueId':_0x4e93dd['id']});}return _0x3cd6f2[_0x098e('0x1b')][_0x098e('0xd')]({'where':_0x35b289})['then'](function(_0x459ba0){if(_0x459ba0){throw new Error(_0x098e('0x1d')+_0xee0693['phone']+_0x098e('0x19')+_0x4e93dd['id']);}var _0x367c0b=getNewHopperPayload(_0xee0693);if(_0x59b393){_0x367c0b[_0x098e('0x1e')]=_0x4e93dd['id'];}else{_0x367c0b[_0x098e('0x1a')]=_0x4e93dd['id'];}return _0x3cd6f2[_0x098e('0x1b')][_0x098e('0x1c')](_0x367c0b);});}function handleNeverCheckDuplicate(_0x31cb5d,_0x551c6c,_0x27e4a0){var _0x31ceba=getNewHopperPayload(_0x27e4a0);_0x31ceba[_0x098e('0x1a')]=_0x551c6c['id'];return _0x31cb5d[_0x098e('0x1b')][_0x098e('0x1c')](_0x31ceba);}function handleCheckDuplicate(_0x31f8a3,_0x12155a,_0x4b86fc,_0xac447c){return getTimezoneCallbackAt(_0x31f8a3,_0x12155a,_0x4b86fc,_0xac447c)[_0x098e('0xe')](function(_0x16c7b8){_0x4b86fc[_0x098e('0x8')]=_0x16c7b8;switch(_0x12155a['dialCheckDuplicateType']){case _0x098e('0x1f'):return handleAlwaysCheckDuplicate(_0x31f8a3,_0x12155a,_0x4b86fc,_0xac447c);case'onlyIfOpen':return handleOnlyIfOpenCheckDuplicate(_0x31f8a3,_0x12155a,_0x4b86fc,_0xac447c);default:return handleNeverCheckDuplicate(_0x31f8a3,_0x12155a,_0x4b86fc);}});}function createHopperForVoiceQueues(_0x52daf0,_0x2dede0){return _0x52daf0[_0x098e('0x7')][_0x098e('0x20')]({'where':{'type':'outbound'},'attributes':['id',_0x098e('0x21'),_0x098e('0xb')],'include':[{'model':_0x52daf0[_0x098e('0x22')],'as':_0x098e('0x23'),'where':{'id':_0x2dede0[_0x098e('0x13')]}}],'raw':!![]})[_0x098e('0xe')](function(_0x1dab00){var _0x1b84d0=_0x1dab00[_0x098e('0x24')](function(_0x203436){return handleCheckDuplicate(_0x52daf0,_0x203436,_0x2dede0,![]);});return Promise[_0x098e('0x25')](_0x1b84d0);});}function createHopperForCampaigns(_0x4894dc,_0x3c9b68){return _0x4894dc[_0x098e('0x6')][_0x098e('0x20')]({'attributes':['id','dialCheckDuplicateType','dialTimezone'],'include':[{'model':_0x4894dc['CmList'],'as':_0x098e('0x23'),'where':{'id':_0x3c9b68[_0x098e('0x13')]}}],'raw':!![]})['then'](function(_0x2694ec){var _0x41ad69=_0x2694ec[_0x098e('0x24')](function(_0x51efae){return handleCheckDuplicate(_0x4894dc,_0x51efae,_0x3c9b68,!![]);});return Promise[_0x098e('0x25')](_0x41ad69);});}function createHopperBlackForVoiceQueues(_0x17af79,_0x4abda8){return _0x17af79[_0x098e('0x7')][_0x098e('0x20')]({'where':{'type':_0x098e('0x26')},'attributes':['id'],'include':[{'model':_0x17af79[_0x098e('0x22')],'as':_0x098e('0x27'),'where':{'id':_0x4abda8[_0x098e('0x13')]}}],'raw':!![]})['then'](function(_0x4bf8bc){var _0x58ffbd=_0x4bf8bc[_0x098e('0x24')](function(_0x548167){return _0x17af79[_0x098e('0x28')][_0x098e('0x1c')]({'phone':_0x4abda8['phone'],'ContactId':_0x4abda8['id'],'ListId':_0x4abda8[_0x098e('0x13')],'VoiceQueueId':_0x548167['id']});});return Promise[_0x098e('0x25')](_0x58ffbd);});}function createHopperBlackForCampaigns(_0x5b233d,_0x2ff49e){return _0x5b233d['Campaign'][_0x098e('0x20')]({'attributes':['id'],'include':[{'model':_0x5b233d['CmList'],'as':_0x098e('0x27'),'where':{'id':_0x2ff49e['ListId']}}],'raw':!![]})[_0x098e('0xe')](function(_0x31e1f4){var _0x81c43c=_0x31e1f4[_0x098e('0x24')](function(_0x27e5d6){return _0x5b233d[_0x098e('0x28')]['create']({'phone':_0x2ff49e[_0x098e('0x16')],'ContactId':_0x2ff49e['id'],'ListId':_0x2ff49e['ListId'],'CampaignId':_0x27e5d6['id']});});return Promise[_0x098e('0x25')](_0x81c43c);});}module[_0x098e('0x29')]=function(_0x4b00e7){return _0x4b00e7['define']('CmContact',attributes,{'tableName':'cm_contacts','paranoid':!![],'indexes':[{'name':_0x098e('0x16'),'fields':[_0x098e('0x16')]},{'name':_0x098e('0x2a'),'fields':[_0x098e('0x2b'),_0x098e('0x2c'),_0x098e('0x16'),'mobile',_0x098e('0x2d'),'email'],'type':_0x098e('0x2e')}],'timestamps':!![],'charset':_0x098e('0x2f'),'collate':_0x098e('0x30'),'hooks':{'afterCreate':function(_0x3300a5,_0x833016,_0x58f0f0){var _0x362c1c=_0x4b00e7['models'];var _0x3cb184=_0x3300a5[_0x098e('0x31')]({'plain':!![]});if(!_0x3cb184[_0x098e('0x13')]){logger[_0x098e('0x32')](_0x098e('0x33')+_0x3cb184['id']);return _0x58f0f0();}if(!_0x3cb184[_0x098e('0x16')]){return _0x58f0f0();}return createHopperForVoiceQueues(_0x362c1c,_0x3cb184)[_0x098e('0xe')](function(){return createHopperBlackForVoiceQueues(_0x362c1c,_0x3cb184);})[_0x098e('0xe')](function(){return createHopperForCampaigns(_0x362c1c,_0x3cb184);})['then'](function(){return createHopperBlackForCampaigns(_0x362c1c,_0x3cb184);})[_0x098e('0xe')](function(){return _0x58f0f0();})[_0x098e('0x34')](function(_0x5370c7){logger['error'](_0x098e('0x35'),_0x5370c7[_0x098e('0x36')]);_0x58f0f0();});},'afterDestroy':function(_0x2e25e4,_0x23b492,_0x2b0a1b){var _0x4a1fae=_0x4b00e7['models'];var _0x4bab8c=_0x2e25e4[_0x098e('0x31')]({'plain':!![]});return _0x4a1fae['CmHopper'][_0x098e('0x20')]({'raw':!![],'where':{'ListId':_0x4bab8c[_0x098e('0x13')],'ContactId':_0x4bab8c['id']}})[_0x098e('0xe')](function(_0xc5d066){if(!_[_0x098e('0x37')](_0xc5d066)){var _0x6c0503=[];for(var _0x256bff=0x0;_0x256bff<_0xc5d066[_0x098e('0x38')];_0x256bff+=0x1){var _0x1af8f1=_0x4a1fae[_0x098e('0x1b')][_0x098e('0x39')]({'where':{'ListId':_0xc5d066[_0x256bff][_0x098e('0x13')],'ContactId':_0xc5d066[_0x256bff][_0x098e('0x3a')],'VoiceQueueId':_0xc5d066[_0x256bff]['VoiceQueueId'],'CampaignId':_0xc5d066[_0x256bff][_0x098e('0x1e')]}});_0x6c0503['push'](_0x1af8f1);}return Promise[_0x098e('0x25')](_0x6c0503);}})['then'](function(_0x24d865){logger[_0x098e('0x3b')](_0x098e('0x3c'),util[_0x098e('0x3d')](_0x24d865,{'showHidden':![],'depth':null}));_0x2b0a1b();})[_0x098e('0x34')](function(_0x4f218c){logger['error'](_0x098e('0x3e'),util[_0x098e('0x3d')](_0x4f218c,{'showHidden':![],'depth':null}));_0x2b0a1b(_0x4f218c);});}}});};