066800a0779efbce96e3c582177af68ed9686359
[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 _0x2e50=['CampaignId','CmHopper','create','VoiceQueueId','dialCheckDuplicateType','onlyIfOpen','findAll','outbound','CmList','Lists','ListId','map','all','BlackLists','CmHopperBlack','exports','cm_contacts','fti_cm_contacts','lastName','models','get','error','catch','length','destroy','ContactId','push','info','[CmContact][afterDestroy][Succesfull]','inspect','lodash','api','../../config/environment/shared','Campaign','VoiceQueue','scheduledat','format','YYYY-MM-DD\x20HH:mm:ss','isNil','dialTimezone','resolve','findOne','then','timezones','utcOffset','add','minutes','phone','priority','callbackUniqueid','assign','[Always]\x20Hopper\x20already\x20exists\x20for\x20contact\x20with\x20phone\x20','[Always]\x20Hopper\x20Final\x20already\x20exists\x20for\x20contact\x20with\x20phone\x20','\x20in\x20Campaign\x20with\x20id\x20'];(function(_0x431d94,_0x1ef420){var _0x51900c=function(_0x27cd95){while(--_0x27cd95){_0x431d94['push'](_0x431d94['shift']());}};_0x51900c(++_0x1ef420);}(_0x2e50,0x1ce));var _0x02e5=function(_0x16d10f,_0x2ba2d5){_0x16d10f=_0x16d10f-0x0;var _0x50c823=_0x2e50[_0x16d10f];return _0x50c823;};'use strict';var _=require(_0x02e5('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x02e5('0x1'));var moment=require('moment');var shared=require(_0x02e5('0x2'));var attributes=require('./cmContact.attributes');function getTimezoneCallbackAt(_0x1fefb1,_0x3ff6bf,_0x44ce75,_0x9e756d){var _0x2887cf=_0x9e756d?_0x02e5('0x3'):_0x02e5('0x4');var _0x497924=_0x44ce75[_0x02e5('0x5')]?_0x44ce75[_0x02e5('0x5')]:moment()[_0x02e5('0x6')](_0x02e5('0x7'));if(_[_0x02e5('0x8')](_0x44ce75[_0x02e5('0x9')])){return Promise[_0x02e5('0xa')](_0x497924);}return _0x1fefb1[_0x2887cf][_0x02e5('0xb')]({'where':{'id':_0x3ff6bf}})[_0x02e5('0xc')](function(_0x471a40){if(_[_0x02e5('0x8')](_0x471a40)||_[_0x02e5('0x8')](_0x471a40[_0x02e5('0x9')])){return Promise[_0x02e5('0xa')](_0x497924);}var _0x1b2d17=shared[_0x02e5('0xd')];var _0x254557=_0x1b2d17[_0x471a40[_0x02e5('0x9')]];var _0x3ce4d9=_0x1b2d17[_0x44ce75[_0x02e5('0x9')]];if(_[_0x02e5('0x8')](_0x254557)&&_['isNil'](_0x3ce4d9)){return Promise['resolve'](_0x497924);}var _0x1f4799=_0x254557[_0x02e5('0xe')]-_0x3ce4d9['utcOffset'];var _0x58b858=_0x44ce75[_0x02e5('0x5')]?_0x44ce75[_0x02e5('0x5')]:moment();_0x497924=moment(_0x58b858)[_0x02e5('0xf')](_0x1f4799,_0x02e5('0x10'))['format'](_0x02e5('0x7'));return Promise['resolve'](_0x497924);});}function getNewHopperPayload(_0x1ea69d){return{'phone':_0x1ea69d[_0x02e5('0x11')],'ContactId':_0x1ea69d['id'],'ListId':_0x1ea69d['ListId'],'scheduledat':_0x1ea69d[_0x02e5('0x5')]?_0x1ea69d[_0x02e5('0x5')]:moment()[_0x02e5('0x6')](_0x02e5('0x7')),'priority':_0x1ea69d[_0x02e5('0x12')]?_0x1ea69d[_0x02e5('0x12')]:0x2,'callback':_0x1ea69d[_0x02e5('0x13')]?!![]:![],'callbackuniqueid':_0x1ea69d['callbackUniqueid']?_0x1ea69d['callbackUniqueid']:undefined,'callbackat':_0x1ea69d['callbackUniqueid']?moment()[_0x02e5('0x6')](_0x02e5('0x7')):undefined};}function handleAlwaysCheckDuplicate(_0x58917b,_0x15efe9,_0x559f47,_0x2bb502){var _0x32469d={'phone':_0x559f47[_0x02e5('0x11')]};var _0x3609aa={'calleridnum':_0x559f47['phone']};if(_0x2bb502){Object[_0x02e5('0x14')](_0x32469d,{'CampaignId':_0x15efe9['id']});Object[_0x02e5('0x14')](_0x3609aa,{'CampaignId':_0x15efe9['id']});}else{Object[_0x02e5('0x14')](_0x32469d,{'VoiceQueueId':_0x15efe9['id']});Object['assign'](_0x3609aa,{'VoiceQueueId':_0x15efe9['id']});}return _0x58917b['CmHopper'][_0x02e5('0xb')]({'where':_0x32469d})[_0x02e5('0xc')](function(_0x4ae25f){if(_0x4ae25f){throw new Error(_0x02e5('0x15')+_0x559f47[_0x02e5('0x11')]+'\x20in\x20Campaign\x20with\x20id\x20'+_0x15efe9['id']);}return _0x58917b['CmHopperFinal'][_0x02e5('0xb')]({'where':_0x3609aa});})['then'](function(_0x1ccbfe){if(_0x1ccbfe){throw new Error(_0x02e5('0x16')+_0x559f47[_0x02e5('0x11')]+_0x02e5('0x17')+_0x15efe9['id']);}var _0xdb0f62=getNewHopperPayload(_0x559f47);if(_0x2bb502){_0xdb0f62[_0x02e5('0x18')]=_0x15efe9['id'];}else{_0xdb0f62['VoiceQueueId']=_0x15efe9['id'];}return _0x58917b[_0x02e5('0x19')][_0x02e5('0x1a')](_0xdb0f62);});}function handleOnlyIfOpenCheckDuplicate(_0x684225,_0x5e75ee,_0x7c711,_0x548546){var _0x518612={'phone':_0x7c711['phone']};if(_0x548546){Object[_0x02e5('0x14')](_0x518612,{'CampaignId':_0x5e75ee['id']});}else{Object[_0x02e5('0x14')](_0x518612,{'VoiceQueueId':_0x5e75ee['id']});}return _0x684225[_0x02e5('0x19')][_0x02e5('0xb')]({'where':_0x518612})['then'](function(_0x5598d6){if(_0x5598d6){throw new Error('[OnlyIfOpen]\x20Hopper\x20already\x20exists\x20for\x20contact\x20with\x20phone\x20'+_0x7c711[_0x02e5('0x11')]+_0x02e5('0x17')+_0x5e75ee['id']);}var _0x4f177f=getNewHopperPayload(_0x7c711);if(_0x548546){_0x4f177f[_0x02e5('0x18')]=_0x5e75ee['id'];}else{_0x4f177f[_0x02e5('0x1b')]=_0x5e75ee['id'];}return _0x684225['CmHopper']['create'](_0x4f177f);});}function handleNeverCheckDuplicate(_0x10df35,_0x468e23,_0x110c80){var _0x203fe5=getNewHopperPayload(_0x110c80);_0x203fe5[_0x02e5('0x1b')]=_0x468e23['id'];return _0x10df35['CmHopper']['create'](_0x203fe5);}function handleCheckDuplicate(_0x32b698,_0x5762e3,_0x19aae2,_0x8dfe01){return getTimezoneCallbackAt(_0x32b698,_0x5762e3,_0x19aae2,_0x8dfe01)[_0x02e5('0xc')](function(_0x259cb0){_0x19aae2[_0x02e5('0x5')]=_0x259cb0;switch(_0x5762e3[_0x02e5('0x1c')]){case'always':return handleAlwaysCheckDuplicate(_0x32b698,_0x5762e3,_0x19aae2,_0x8dfe01);case _0x02e5('0x1d'):return handleOnlyIfOpenCheckDuplicate(_0x32b698,_0x5762e3,_0x19aae2,_0x8dfe01);default:return handleNeverCheckDuplicate(_0x32b698,_0x5762e3,_0x19aae2);}});}function createHopperForVoiceQueues(_0x2b7069,_0x28d0bc){return _0x2b7069[_0x02e5('0x4')][_0x02e5('0x1e')]({'where':{'type':_0x02e5('0x1f')},'attributes':['id',_0x02e5('0x1c'),_0x02e5('0x9')],'include':[{'model':_0x2b7069[_0x02e5('0x20')],'as':_0x02e5('0x21'),'where':{'id':_0x28d0bc[_0x02e5('0x22')]}}],'raw':!![]})['then'](function(_0x396cf8){var _0x1f7cdc=_0x396cf8[_0x02e5('0x23')](function(_0x289ba8){return handleCheckDuplicate(_0x2b7069,_0x289ba8,_0x28d0bc,![]);});return Promise[_0x02e5('0x24')](_0x1f7cdc);});}function createHopperForCampaigns(_0x40a3c3,_0x547eb9){return _0x40a3c3[_0x02e5('0x3')][_0x02e5('0x1e')]({'attributes':['id',_0x02e5('0x1c'),_0x02e5('0x9')],'include':[{'model':_0x40a3c3[_0x02e5('0x20')],'as':_0x02e5('0x21'),'where':{'id':_0x547eb9[_0x02e5('0x22')]}}],'raw':!![]})[_0x02e5('0xc')](function(_0x8d6903){var _0x5bb30c=_0x8d6903[_0x02e5('0x23')](function(_0x4e3ba0){return handleCheckDuplicate(_0x40a3c3,_0x4e3ba0,_0x547eb9,!![]);});return Promise['all'](_0x5bb30c);});}function createHopperBlackForVoiceQueues(_0x4c0646,_0x1b2416){return _0x4c0646[_0x02e5('0x4')][_0x02e5('0x1e')]({'where':{'type':_0x02e5('0x1f')},'attributes':['id'],'include':[{'model':_0x4c0646[_0x02e5('0x20')],'as':_0x02e5('0x25'),'where':{'id':_0x1b2416['ListId']}}],'raw':!![]})[_0x02e5('0xc')](function(_0x49ab7b){var _0x146c2f=_0x49ab7b[_0x02e5('0x23')](function(_0x2b60a1){return _0x4c0646[_0x02e5('0x26')][_0x02e5('0x1a')]({'phone':_0x1b2416[_0x02e5('0x11')],'ContactId':_0x1b2416['id'],'ListId':_0x1b2416[_0x02e5('0x22')],'VoiceQueueId':_0x2b60a1['id']});});return Promise[_0x02e5('0x24')](_0x146c2f);});}function createHopperBlackForCampaigns(_0x5d6167,_0xaea5bb){return _0x5d6167[_0x02e5('0x3')][_0x02e5('0x1e')]({'attributes':['id'],'include':[{'model':_0x5d6167['CmList'],'as':_0x02e5('0x25'),'where':{'id':_0xaea5bb[_0x02e5('0x22')]}}],'raw':!![]})[_0x02e5('0xc')](function(_0x221487){var _0xdac367=_0x221487[_0x02e5('0x23')](function(_0x4068d0){return _0x5d6167[_0x02e5('0x26')][_0x02e5('0x1a')]({'phone':_0xaea5bb[_0x02e5('0x11')],'ContactId':_0xaea5bb['id'],'ListId':_0xaea5bb[_0x02e5('0x22')],'CampaignId':_0x4068d0['id']});});return Promise['all'](_0xdac367);});}module[_0x02e5('0x27')]=function(_0x343a88){return _0x343a88['define']('CmContact',attributes,{'tableName':_0x02e5('0x28'),'paranoid':!![],'indexes':[{'name':_0x02e5('0x11'),'fields':[_0x02e5('0x11')]},{'name':_0x02e5('0x29'),'fields':['firstName',_0x02e5('0x2a'),_0x02e5('0x11'),'mobile','fax','email'],'type':'FULLTEXT'}],'timestamps':!![],'charset':'utf8mb4','collate':'utf8mb4_unicode_ci','hooks':{'afterCreate':function(_0x1aa95a,_0x42a79c,_0x5b7441){var _0x5581a4=_0x343a88[_0x02e5('0x2b')];var _0x31d9ec=_0x1aa95a[_0x02e5('0x2c')]({'plain':!![]});if(!_0x31d9ec['ListId']){logger[_0x02e5('0x2d')]('[cmContact][afterCreate]\x20List\x20not\x20found\x20for\x20contact\x20with\x20id\x20'+_0x31d9ec['id']);return _0x5b7441();}if(!_0x31d9ec[_0x02e5('0x11')]){return _0x5b7441();}return createHopperForVoiceQueues(_0x5581a4,_0x31d9ec)[_0x02e5('0xc')](function(){return createHopperBlackForVoiceQueues(_0x5581a4,_0x31d9ec);})['then'](function(){return createHopperForCampaigns(_0x5581a4,_0x31d9ec);})[_0x02e5('0xc')](function(){return createHopperBlackForCampaigns(_0x5581a4,_0x31d9ec);})['then'](function(){return _0x5b7441();})[_0x02e5('0x2e')](function(_0xf12db){logger['error']('[cmContact][afterCreate]',_0xf12db['message']);_0x5b7441();});},'afterDestroy':function(_0x1b13f9,_0x21b789,_0x1aba7e){var _0x6c03d0=_0x343a88[_0x02e5('0x2b')];var _0x71b90b=_0x1b13f9[_0x02e5('0x2c')]({'plain':!![]});return _0x6c03d0['CmHopper'][_0x02e5('0x1e')]({'raw':!![],'where':{'ListId':_0x71b90b['ListId'],'ContactId':_0x71b90b['id']}})[_0x02e5('0xc')](function(_0x478f23){if(!_['isEmpty'](_0x478f23)){var _0x3cf216=[];for(var _0x262aa6=0x0;_0x262aa6<_0x478f23[_0x02e5('0x2f')];_0x262aa6+=0x1){var _0x3dd80f=_0x6c03d0['CmHopper'][_0x02e5('0x30')]({'where':{'ListId':_0x478f23[_0x262aa6][_0x02e5('0x22')],'ContactId':_0x478f23[_0x262aa6][_0x02e5('0x31')],'VoiceQueueId':_0x478f23[_0x262aa6][_0x02e5('0x1b')],'CampaignId':_0x478f23[_0x262aa6][_0x02e5('0x18')]}});_0x3cf216[_0x02e5('0x32')](_0x3dd80f);}return Promise[_0x02e5('0x24')](_0x3cf216);}})['then'](function(_0x2b0dc0){logger[_0x02e5('0x33')](_0x02e5('0x34'),util[_0x02e5('0x35')](_0x2b0dc0,{'showHidden':![],'depth':null}));_0x1aba7e();})[_0x02e5('0x2e')](function(_0x4f783c){logger[_0x02e5('0x2d')]('[CmContact][afterDestroy][Error]',util['inspect'](_0x4f783c,{'showHidden':![],'depth':null}));_0x1aba7e(_0x4f783c);});}}});};