3562909af124af5d68af1e8969a97f1ca6e4dd70
[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 _0x6691=['cmContact','afterCreate','inspect','CmHopper','findOne','isNil','cmContact,\x20afterCreate\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20VoiceQueue\x20','ListId','priority','scheduledat','format','callbackUniqueid','catch','CmHopperFinal','then','cmContact,\x20afterCreate,\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20VoiceQueue\x20','create','YYYY-MM-DD\x20HH:mm:ss','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20Campaign\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20Campaign\x20','VoiceQueue','findAll','outbound','CmList','length','always','onlyIfOpen','CmHopperBlack','cmContact,\x20%s,\x20%s','message','Campaign','dialCheckDuplicateType','Lists','BlackLists','List\x20not\x20found','isEmpty','destroy','ContactId','VoiceQueueId','CampaignId','push','info','[CmContact][afterDestroy][Succesfull]','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','phone','fax','email','FULLTEXT','models','get','error'];(function(_0x323af1,_0x164004){var _0x411001=function(_0x293ea5){while(--_0x293ea5){_0x323af1['push'](_0x323af1['shift']());}};_0x411001(++_0x164004);}(_0x6691,0x12d));var _0x1669=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0x6691[_0x2dafbe];return _0x58a45a;};'use strict';var _=require(_0x1669('0x0'));var util=require(_0x1669('0x1'));var logger=require(_0x1669('0x2'))(_0x1669('0x3'));var moment=require(_0x1669('0x4'));var BPromise=require(_0x1669('0x5'));var rp=require(_0x1669('0x6'));var fs=require('fs');var path=require(_0x1669('0x7'));var rimraf=require(_0x1669('0x8'));var config=require(_0x1669('0x9'));var attributes=require('./cmContact.attributes');module[_0x1669('0xa')]=function(_0x1bf2c8,_0x30f92c){return _0x1bf2c8[_0x1669('0xb')]('CmContact',attributes,{'tableName':'cm_contacts','paranoid':!![],'indexes':[{'name':'phone','fields':[_0x1669('0xc')]},{'name':'fti_cm_contacts','fields':['firstName','lastName',_0x1669('0xc'),'mobile',_0x1669('0xd'),_0x1669('0xe')],'type':_0x1669('0xf')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x14907e,_0x46b260,_0x3d6f5e){var _0x1b4da2=_0x1bf2c8[_0x1669('0x10')];var _0x13c117=_0x14907e[_0x1669('0x11')]({'plain':!![]});function _0x3709f0(){return function(_0x2031eb){logger[_0x1669('0x12')](_0x1669('0x13'),_0x1669('0x14'),util[_0x1669('0x15')](_0x2031eb,{'showHidden':![],'depth':null}));};}var _0x102193=function(_0x2904b6){return new BPromise(function(_0x455b15,_0x318db1){_0x1b4da2[_0x1669('0x16')][_0x1669('0x17')]({'where':{'phone':_0x13c117[_0x1669('0xc')],'VoiceQueueId':_0x2904b6['id']}})['then'](function(_0x21a5d2){if(!_[_0x1669('0x18')](_0x21a5d2)){throw new Error(_0x1669('0x19')+_0x13c117[_0x1669('0xc')]+_0x1669('0x1a')+_0x2904b6['id']);}return _0x1b4da2['CmHopper']['create']({'phone':_0x13c117[_0x1669('0xc')],'ContactId':_0x13c117['id'],'ListId':_0x13c117[_0x1669('0x1b')],'priority':_0x13c117[_0x1669('0x1c')]?_0x13c117[_0x1669('0x1c')]:0x2,'scheduledat':_0x13c117[_0x1669('0x1d')]?_0x13c117[_0x1669('0x1d')]:moment()[_0x1669('0x1e')]('YYYY-MM-DD\x20HH:mm:ss'),'callback':_0x13c117[_0x1669('0x1f')]?!![]:![],'callbackuniqueid':_0x13c117[_0x1669('0x1f')]?_0x13c117['callbackUniqueid']:undefined,'callbackat':_0x13c117[_0x1669('0x1f')]?moment()[_0x1669('0x1e')]('YYYY-MM-DD\x20HH:mm:ss'):undefined,'VoiceQueueId':_0x2904b6['id']});})[_0x1669('0x20')](function(_0x2d6f16){_0x318db1(_0x2d6f16);});});};var _0x2e95c3=function(_0x17c227){return new BPromise(function(_0x311f56,_0x5c66cb){_0x1b4da2[_0x1669('0x16')][_0x1669('0x17')]({'where':{'phone':_0x13c117[_0x1669('0xc')],'VoiceQueueId':_0x17c227['id']}})['then'](function(_0x176b4b){if(!_['isNil'](_0x176b4b)){throw new Error('cmContact,\x20afterCreate\x20'+_0x13c117[_0x1669('0xc')]+'\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopper\x20VoiceQueue\x20'+_0x17c227['id']);}return _0x1b4da2[_0x1669('0x21')][_0x1669('0x17')]({'where':{'calleridnum':_0x13c117[_0x1669('0xc')],'VoiceQueueId':_0x17c227['id']}});})[_0x1669('0x22')](function(_0x50abe4){if(!_[_0x1669('0x18')](_0x50abe4)){throw new Error(_0x1669('0x23')+_0x13c117['phone']+_0x1669('0x24')+_0x17c227['id']);}return _0x1b4da2['CmHopper'][_0x1669('0x25')]({'phone':_0x13c117[_0x1669('0xc')],'ContactId':_0x13c117['id'],'ListId':_0x13c117['ListId'],'priority':_0x13c117[_0x1669('0x1c')]?_0x13c117['priority']:0x2,'scheduledat':_0x13c117[_0x1669('0x1d')]?_0x13c117[_0x1669('0x1d')]:moment()[_0x1669('0x1e')](_0x1669('0x26')),'callback':_0x13c117['callbackUniqueid']?!![]:![],'callbackuniqueid':_0x13c117['callbackUniqueid']?_0x13c117['callbackUniqueid']:undefined,'callbackat':_0x13c117[_0x1669('0x1f')]?moment()[_0x1669('0x1e')](_0x1669('0x26')):undefined,'VoiceQueueId':_0x17c227['id']});})[_0x1669('0x20')](function(_0x3af755){_0x5c66cb(_0x3af755);});});};function _0x59bd31(){return function(_0x322235){logger[_0x1669('0x12')](_0x1669('0x13'),_0x1669('0x14'),util[_0x1669('0x15')](_0x322235,{'showHidden':![],'depth':null}));};}var _0x24fa95=function(_0x1a5763){return new BPromise(function(_0x4414cd,_0x496df9){_0x1b4da2[_0x1669('0x16')]['findOne']({'where':{'phone':_0x13c117[_0x1669('0xc')],'CampaignId':_0x1a5763['id']}})['then'](function(_0x5846ec){if(!_[_0x1669('0x18')](_0x5846ec)){throw new Error(_0x1669('0x19')+_0x13c117[_0x1669('0xc')]+_0x1669('0x27')+_0x1a5763['id']);}return _0x1b4da2[_0x1669('0x16')][_0x1669('0x25')]({'phone':_0x13c117[_0x1669('0xc')],'ContactId':_0x13c117['id'],'ListId':_0x13c117[_0x1669('0x1b')],'priority':_0x13c117[_0x1669('0x1c')]?_0x13c117['priority']:0x2,'scheduledat':_0x13c117[_0x1669('0x1d')]?_0x13c117[_0x1669('0x1d')]:moment()[_0x1669('0x1e')](_0x1669('0x26')),'callback':_0x13c117[_0x1669('0x1f')]?!![]:![],'callbackuniqueid':_0x13c117[_0x1669('0x1f')]?_0x13c117[_0x1669('0x1f')]:undefined,'callbackat':_0x13c117['callbackUniqueid']?moment()[_0x1669('0x1e')](_0x1669('0x26')):undefined,'CampaignId':_0x1a5763['id']});})[_0x1669('0x20')](function(_0x13ec42){_0x496df9(_0x13ec42);});});};var _0x157edf=function(_0x1f4487){return new BPromise(function(_0x5ea93f,_0x5c2629){_0x1b4da2['CmHopper'][_0x1669('0x17')]({'where':{'phone':_0x13c117[_0x1669('0xc')],'CampaignId':_0x1f4487['id']}})[_0x1669('0x22')](function(_0x3a87c8){if(!_[_0x1669('0x18')](_0x3a87c8)){throw new Error(_0x1669('0x19')+_0x13c117[_0x1669('0xc')]+'\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopper\x20Campaign\x20'+_0x1f4487['id']);}return _0x1b4da2[_0x1669('0x21')][_0x1669('0x17')]({'where':{'calleridnum':_0x13c117['phone'],'CampaignId':_0x1f4487['id']}});})['then'](function(_0x144880){if(!_[_0x1669('0x18')](_0x144880)){throw new Error(_0x1669('0x23')+_0x13c117[_0x1669('0xc')]+_0x1669('0x28')+_0x1f4487['id']);}return _0x1b4da2['CmHopper'][_0x1669('0x25')]({'phone':_0x13c117['phone'],'ContactId':_0x13c117['id'],'ListId':_0x13c117['ListId'],'priority':_0x13c117[_0x1669('0x1c')]?_0x13c117['priority']:0x2,'scheduledat':_0x13c117[_0x1669('0x1d')]?_0x13c117[_0x1669('0x1d')]:moment()[_0x1669('0x1e')](_0x1669('0x26')),'callback':_0x13c117['callbackUniqueid']?!![]:![],'callbackuniqueid':_0x13c117[_0x1669('0x1f')]?_0x13c117[_0x1669('0x1f')]:undefined,'callbackat':_0x13c117[_0x1669('0x1f')]?moment()['format'](_0x1669('0x26')):undefined,'CampaignId':_0x1f4487['id']});})[_0x1669('0x20')](function(_0x3c4434){_0x5c2629(_0x3c4434);});});};if(_0x13c117[_0x1669('0x1b')]){_0x1b4da2[_0x1669('0x29')][_0x1669('0x2a')]({'where':{'type':_0x1669('0x2b')},'attributes':['id','dialCheckDuplicateType'],'include':[{'model':_0x1b4da2[_0x1669('0x2c')],'as':'Lists','where':{'id':_0x13c117[_0x1669('0x1b')]}}]})['then'](function(_0x2826a2){if(_0x2826a2){var _0x2d4d9f=[];for(var _0x1f4d93=0x0,_0x169c01;_0x1f4d93<_0x2826a2[_0x1669('0x2d')];_0x1f4d93+=0x1){_0x169c01=_0x2826a2[_0x1f4d93][_0x1669('0x11')]({'plain':!![]});switch(_0x169c01['dialCheckDuplicateType']){case _0x1669('0x2e'):_0x2e95c3(_0x169c01)[_0x1669('0x20')](_0x3709f0());break;case _0x1669('0x2f'):_0x102193(_0x169c01)['catch'](_0x3709f0());break;default:_0x1b4da2['CmHopper']['create']({'phone':_0x13c117['phone'],'ContactId':_0x13c117['id'],'ListId':_0x13c117[_0x1669('0x1b')],'scheduledat':_0x13c117[_0x1669('0x1d')]?_0x13c117[_0x1669('0x1d')]:moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'priority':_0x13c117[_0x1669('0x1c')]?_0x13c117['priority']:0x2,'callback':_0x13c117[_0x1669('0x1f')]?!![]:![],'callbackuniqueid':_0x13c117[_0x1669('0x1f')]?_0x13c117[_0x1669('0x1f')]:undefined,'callbackat':_0x13c117[_0x1669('0x1f')]?moment()[_0x1669('0x1e')](_0x1669('0x26')):undefined,'VoiceQueueId':_0x169c01['id']})[_0x1669('0x20')](_0x3709f0());}}}})['then'](function(){return _0x1b4da2[_0x1669('0x29')]['findAll']({'where':{'type':_0x1669('0x2b')},'attributes':['id'],'include':[{'model':_0x1b4da2['CmList'],'as':'BlackLists','where':{'id':_0x13c117[_0x1669('0x1b')]}}]})[_0x1669('0x22')](function(_0x42ec31){if(_0x42ec31){var _0x3440d7=[];for(var _0x1f9b98=0x0,_0x2e09b8;_0x1f9b98<_0x42ec31['length'];_0x1f9b98+=0x1){_0x2e09b8=_0x42ec31[_0x1f9b98][_0x1669('0x11')]({'plain':!![]});_0x1b4da2[_0x1669('0x30')]['create']({'phone':_0x13c117[_0x1669('0xc')],'ContactId':_0x13c117['id'],'ListId':_0x13c117[_0x1669('0x1b')],'VoiceQueueId':_0x2e09b8['id']})['catch'](function(_0x53d184){logger[_0x1669('0x12')](_0x1669('0x31'),_0x1669('0x14'),_0x53d184[_0x1669('0x32')]);});}}});})['then'](function(){return _0x1b4da2[_0x1669('0x33')][_0x1669('0x2a')]({'attributes':['id',_0x1669('0x34')],'include':[{'model':_0x1b4da2['CmList'],'as':_0x1669('0x35'),'where':{'id':_0x13c117['ListId']}}]})['then'](function(_0x2b1cdc){if(_0x2b1cdc){var _0x4a98a7=[];for(var _0x5b4f9e=0x0,_0x19df35;_0x5b4f9e<_0x2b1cdc['length'];_0x5b4f9e+=0x1){_0x19df35=_0x2b1cdc[_0x5b4f9e][_0x1669('0x11')]({'plain':!![]});switch(_0x19df35[_0x1669('0x34')]){case _0x1669('0x2e'):_0x157edf(_0x19df35)[_0x1669('0x20')](_0x59bd31());break;case'onlyIfOpen':_0x24fa95(_0x19df35)[_0x1669('0x20')](_0x59bd31());break;default:_0x1b4da2['CmHopper']['create']({'phone':_0x13c117['phone'],'ContactId':_0x13c117['id'],'ListId':_0x13c117[_0x1669('0x1b')],'scheduledat':_0x13c117[_0x1669('0x1d')]?_0x13c117[_0x1669('0x1d')]:moment()[_0x1669('0x1e')](_0x1669('0x26')),'priority':_0x13c117[_0x1669('0x1c')]?_0x13c117[_0x1669('0x1c')]:0x2,'callback':_0x13c117[_0x1669('0x1f')]?!![]:![],'callbackuniqueid':_0x13c117[_0x1669('0x1f')]?_0x13c117[_0x1669('0x1f')]:undefined,'callbackat':_0x13c117[_0x1669('0x1f')]?moment()[_0x1669('0x1e')]('YYYY-MM-DD\x20HH:mm:ss'):undefined,'CampaignId':_0x19df35['id']})[_0x1669('0x20')](_0x59bd31());}}}});})['then'](function(){return _0x1b4da2['Campaign'][_0x1669('0x2a')]({'attributes':['id'],'include':[{'model':_0x1b4da2['CmList'],'as':_0x1669('0x36'),'where':{'id':_0x13c117[_0x1669('0x1b')]}}]})[_0x1669('0x22')](function(_0x38e2cf){if(_0x38e2cf){var _0x59fdd3=[];for(var _0x5a7650=0x0,_0x4fe1da;_0x5a7650<_0x38e2cf[_0x1669('0x2d')];_0x5a7650+=0x1){_0x4fe1da=_0x38e2cf[_0x5a7650][_0x1669('0x11')]({'plain':!![]});_0x1b4da2[_0x1669('0x30')]['create']({'phone':_0x13c117['phone'],'ContactId':_0x13c117['id'],'ListId':_0x13c117[_0x1669('0x1b')],'CampaignId':_0x4fe1da['id']})[_0x1669('0x20')](function(_0x658afa){logger[_0x1669('0x12')]('cmContact,\x20%s,\x20%s',_0x1669('0x14'),_0x658afa[_0x1669('0x32')]);});}}});})[_0x1669('0x22')](function(){_0x3d6f5e();})[_0x1669('0x20')](function(_0x5afdd4){logger['error']('cmContact,\x20%s,\x20%s','afterCreate',_0x5afdd4[_0x1669('0x32')]);_0x3d6f5e(_0x5afdd4);});}else{_0x3d6f5e(new Error(_0x1669('0x37')));}},'afterDestroy':function(_0x386929,_0x5311f5,_0x5e29f0){var _0x547adf=_0x1bf2c8['models'];var _0x47537e=_0x386929[_0x1669('0x11')]({'plain':!![]});return _0x547adf[_0x1669('0x16')][_0x1669('0x2a')]({'raw':!![],'where':{'ListId':_0x47537e['ListId'],'ContactId':_0x47537e['id']}})[_0x1669('0x22')](function(_0x223333){if(!_[_0x1669('0x38')](_0x223333)){var _0x408602=[];for(var _0x5e1db1=0x0;_0x5e1db1<_0x223333['length'];_0x5e1db1+=0x1){var _0x4d42c2=_0x547adf[_0x1669('0x16')][_0x1669('0x39')]({'where':{'ListId':_0x223333[_0x5e1db1]['ListId'],'ContactId':_0x223333[_0x5e1db1][_0x1669('0x3a')],'VoiceQueueId':_0x223333[_0x5e1db1][_0x1669('0x3b')],'CampaignId':_0x223333[_0x5e1db1][_0x1669('0x3c')]}});_0x408602[_0x1669('0x3d')](_0x4d42c2);}return BPromise['all'](_0x408602);}})['then'](function(_0x42142a){logger[_0x1669('0x3e')](_0x1669('0x3f'),util[_0x1669('0x15')](_0x42142a,{'showHidden':![],'depth':null}));_0x5e29f0();})[_0x1669('0x20')](function(_0x413697){logger[_0x1669('0x12')]('[CmContact][afterDestroy][Error]',util[_0x1669('0x15')](_0x413697,{'showHidden':![],'depth':null}));_0x5e29f0(_0x413697);});}}});};