6dbdc7843b871cb09fbe180abff7ba55ce8a30e3
[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 _0x5a9c=['length','BlackLists','cmContact,\x20%s,\x20%s','ContactId','CampaignId','push','[CmContact][afterDestroy][Succesfull]','[CmContact][afterDestroy][Error]','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','define','CmContact','cm_contacts','phone','fti_cm_contacts','firstName','mobile','fax','email','FULLTEXT','utf8mb4','utf8mb4_unicode_ci','models','get','cmContact','afterCreate','inspect','findOne','cmContact,\x20afterCreate\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20VoiceQueue\x20','CmHopper','create','ListId','priority','scheduledat','format','callbackUniqueid','YYYY-MM-DD\x20HH:mm:ss','catch','then','isNil','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopper\x20VoiceQueue\x20','CmHopperFinal','cmContact,\x20afterCreate,\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20VoiceQueue\x20','error','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20Campaign\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopper\x20Campaign\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20Campaign\x20','VoiceQueue','findAll','dialCheckDuplicateType','Lists','always','onlyIfOpen','CmList','CmHopperBlack','message','Campaign'];(function(_0x59943d,_0x2e751b){var _0x46ace9=function(_0xfbd5f2){while(--_0xfbd5f2){_0x59943d['push'](_0x59943d['shift']());}};_0x46ace9(++_0x2e751b);}(_0x5a9c,0xcb));var _0xc5a9=function(_0x2dc3de,_0x2fcf78){_0x2dc3de=_0x2dc3de-0x0;var _0x35150a=_0x5a9c[_0x2dc3de];return _0x35150a;};'use strict';var _=require('lodash');var util=require(_0xc5a9('0x0'));var logger=require(_0xc5a9('0x1'))(_0xc5a9('0x2'));var moment=require(_0xc5a9('0x3'));var BPromise=require(_0xc5a9('0x4'));var rp=require(_0xc5a9('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xc5a9('0x6'));var config=require(_0xc5a9('0x7'));var attributes=require('./cmContact.attributes');module['exports']=function(_0x2740c5,_0x3cbf00){return _0x2740c5[_0xc5a9('0x8')](_0xc5a9('0x9'),attributes,{'tableName':_0xc5a9('0xa'),'paranoid':!![],'indexes':[{'name':_0xc5a9('0xb'),'fields':['phone']},{'name':_0xc5a9('0xc'),'fields':[_0xc5a9('0xd'),'lastName',_0xc5a9('0xb'),_0xc5a9('0xe'),_0xc5a9('0xf'),_0xc5a9('0x10')],'type':_0xc5a9('0x11')}],'timestamps':!![],'charset':_0xc5a9('0x12'),'collate':_0xc5a9('0x13'),'hooks':{'afterCreate':function(_0x2f650f,_0x39756d,_0x178710){var _0x39049e=_0x2740c5[_0xc5a9('0x14')];var _0x22b75c=_0x2f650f[_0xc5a9('0x15')]({'plain':!![]});function _0x144735(){return function(_0x2b8d3c){logger['error'](_0xc5a9('0x16'),_0xc5a9('0x17'),util[_0xc5a9('0x18')](_0x2b8d3c,{'showHidden':![],'depth':null}));};}var _0x20b393=function(_0x3bb6fc){return new BPromise(function(_0x471ce5,_0x3cdde1){_0x39049e['CmHopper'][_0xc5a9('0x19')]({'where':{'phone':_0x22b75c['phone'],'VoiceQueueId':_0x3bb6fc['id']}})['then'](function(_0x1e106a){if(!_['isNil'](_0x1e106a)){throw new Error(_0xc5a9('0x1a')+_0x22b75c[_0xc5a9('0xb')]+_0xc5a9('0x1b')+_0x3bb6fc['id']);}return _0x39049e[_0xc5a9('0x1c')][_0xc5a9('0x1d')]({'phone':_0x22b75c[_0xc5a9('0xb')],'ContactId':_0x22b75c['id'],'ListId':_0x22b75c[_0xc5a9('0x1e')],'priority':_0x22b75c[_0xc5a9('0x1f')]?_0x22b75c[_0xc5a9('0x1f')]:0x2,'scheduledat':_0x22b75c[_0xc5a9('0x20')]?_0x22b75c['scheduledat']:moment()[_0xc5a9('0x21')]('YYYY-MM-DD\x20HH:mm:ss'),'callback':_0x22b75c[_0xc5a9('0x22')]?!![]:![],'callbackuniqueid':_0x22b75c['callbackUniqueid']?_0x22b75c['callbackUniqueid']:undefined,'callbackat':_0x22b75c[_0xc5a9('0x22')]?moment()[_0xc5a9('0x21')](_0xc5a9('0x23')):undefined,'VoiceQueueId':_0x3bb6fc['id']});})[_0xc5a9('0x24')](function(_0x42e5cb){_0x3cdde1(_0x42e5cb);});});};var _0x509b93=function(_0x45c46c){return new BPromise(function(_0x425a21,_0x1b0dd7){_0x39049e['CmHopper'][_0xc5a9('0x19')]({'where':{'phone':_0x22b75c[_0xc5a9('0xb')],'VoiceQueueId':_0x45c46c['id']}})[_0xc5a9('0x25')](function(_0x403255){if(!_[_0xc5a9('0x26')](_0x403255)){throw new Error(_0xc5a9('0x1a')+_0x22b75c[_0xc5a9('0xb')]+_0xc5a9('0x27')+_0x45c46c['id']);}return _0x39049e[_0xc5a9('0x28')]['findOne']({'where':{'calleridnum':_0x22b75c[_0xc5a9('0xb')],'VoiceQueueId':_0x45c46c['id']}});})[_0xc5a9('0x25')](function(_0x2d1b8d){if(!_[_0xc5a9('0x26')](_0x2d1b8d)){throw new Error(_0xc5a9('0x29')+_0x22b75c[_0xc5a9('0xb')]+_0xc5a9('0x2a')+_0x45c46c['id']);}return _0x39049e['CmHopper'][_0xc5a9('0x1d')]({'phone':_0x22b75c[_0xc5a9('0xb')],'ContactId':_0x22b75c['id'],'ListId':_0x22b75c[_0xc5a9('0x1e')],'priority':_0x22b75c[_0xc5a9('0x1f')]?_0x22b75c[_0xc5a9('0x1f')]:0x2,'scheduledat':_0x22b75c[_0xc5a9('0x20')]?_0x22b75c[_0xc5a9('0x20')]:moment()[_0xc5a9('0x21')](_0xc5a9('0x23')),'callback':_0x22b75c[_0xc5a9('0x22')]?!![]:![],'callbackuniqueid':_0x22b75c[_0xc5a9('0x22')]?_0x22b75c[_0xc5a9('0x22')]:undefined,'callbackat':_0x22b75c[_0xc5a9('0x22')]?moment()['format'](_0xc5a9('0x23')):undefined,'VoiceQueueId':_0x45c46c['id']});})[_0xc5a9('0x24')](function(_0x3d8675){_0x1b0dd7(_0x3d8675);});});};function _0x16337e(){return function(_0x338637){logger[_0xc5a9('0x2b')]('cmContact',_0xc5a9('0x17'),util[_0xc5a9('0x18')](_0x338637,{'showHidden':![],'depth':null}));};}var _0x2ba069=function(_0x53425e){return new BPromise(function(_0x19d992,_0xb72990){_0x39049e['CmHopper']['findOne']({'where':{'phone':_0x22b75c[_0xc5a9('0xb')],'CampaignId':_0x53425e['id']}})['then'](function(_0x3dfe57){if(!_[_0xc5a9('0x26')](_0x3dfe57)){throw new Error('cmContact,\x20afterCreate\x20'+_0x22b75c[_0xc5a9('0xb')]+_0xc5a9('0x2c')+_0x53425e['id']);}return _0x39049e['CmHopper'][_0xc5a9('0x1d')]({'phone':_0x22b75c[_0xc5a9('0xb')],'ContactId':_0x22b75c['id'],'ListId':_0x22b75c[_0xc5a9('0x1e')],'priority':_0x22b75c['priority']?_0x22b75c[_0xc5a9('0x1f')]:0x2,'scheduledat':_0x22b75c['scheduledat']?_0x22b75c[_0xc5a9('0x20')]:moment()['format'](_0xc5a9('0x23')),'callback':_0x22b75c[_0xc5a9('0x22')]?!![]:![],'callbackuniqueid':_0x22b75c['callbackUniqueid']?_0x22b75c[_0xc5a9('0x22')]:undefined,'callbackat':_0x22b75c[_0xc5a9('0x22')]?moment()['format'](_0xc5a9('0x23')):undefined,'CampaignId':_0x53425e['id']});})[_0xc5a9('0x24')](function(_0xadbf30){_0xb72990(_0xadbf30);});});};var _0x1065fd=function(_0x14ea9b){return new BPromise(function(_0x61099b,_0x4e78a7){_0x39049e[_0xc5a9('0x1c')][_0xc5a9('0x19')]({'where':{'phone':_0x22b75c[_0xc5a9('0xb')],'CampaignId':_0x14ea9b['id']}})[_0xc5a9('0x25')](function(_0x3ac226){if(!_[_0xc5a9('0x26')](_0x3ac226)){throw new Error(_0xc5a9('0x1a')+_0x22b75c[_0xc5a9('0xb')]+_0xc5a9('0x2d')+_0x14ea9b['id']);}return _0x39049e['CmHopperFinal'][_0xc5a9('0x19')]({'where':{'calleridnum':_0x22b75c['phone'],'CampaignId':_0x14ea9b['id']}});})['then'](function(_0x9eb771){if(!_[_0xc5a9('0x26')](_0x9eb771)){throw new Error('cmContact,\x20afterCreate,\x20'+_0x22b75c[_0xc5a9('0xb')]+_0xc5a9('0x2e')+_0x14ea9b['id']);}return _0x39049e['CmHopper'][_0xc5a9('0x1d')]({'phone':_0x22b75c[_0xc5a9('0xb')],'ContactId':_0x22b75c['id'],'ListId':_0x22b75c[_0xc5a9('0x1e')],'priority':_0x22b75c[_0xc5a9('0x1f')]?_0x22b75c[_0xc5a9('0x1f')]:0x2,'scheduledat':_0x22b75c['scheduledat']?_0x22b75c[_0xc5a9('0x20')]:moment()['format'](_0xc5a9('0x23')),'callback':_0x22b75c[_0xc5a9('0x22')]?!![]:![],'callbackuniqueid':_0x22b75c[_0xc5a9('0x22')]?_0x22b75c['callbackUniqueid']:undefined,'callbackat':_0x22b75c[_0xc5a9('0x22')]?moment()[_0xc5a9('0x21')](_0xc5a9('0x23')):undefined,'CampaignId':_0x14ea9b['id']});})['catch'](function(_0x292eeb){_0x4e78a7(_0x292eeb);});});};if(_0x22b75c[_0xc5a9('0x1e')]){_0x39049e[_0xc5a9('0x2f')][_0xc5a9('0x30')]({'where':{'type':'outbound'},'attributes':['id',_0xc5a9('0x31')],'include':[{'model':_0x39049e['CmList'],'as':_0xc5a9('0x32'),'where':{'id':_0x22b75c[_0xc5a9('0x1e')]}}]})[_0xc5a9('0x25')](function(_0x589ae0){if(_0x589ae0){var _0x39f451=[];for(var _0x142eaa=0x0,_0x18b370;_0x142eaa<_0x589ae0['length'];_0x142eaa+=0x1){_0x18b370=_0x589ae0[_0x142eaa][_0xc5a9('0x15')]({'plain':!![]});switch(_0x18b370[_0xc5a9('0x31')]){case _0xc5a9('0x33'):_0x509b93(_0x18b370)[_0xc5a9('0x24')](_0x144735());break;case _0xc5a9('0x34'):_0x20b393(_0x18b370)[_0xc5a9('0x24')](_0x144735());break;default:_0x39049e[_0xc5a9('0x1c')][_0xc5a9('0x1d')]({'phone':_0x22b75c[_0xc5a9('0xb')],'ContactId':_0x22b75c['id'],'ListId':_0x22b75c[_0xc5a9('0x1e')],'scheduledat':_0x22b75c[_0xc5a9('0x20')]?_0x22b75c['scheduledat']:moment()[_0xc5a9('0x21')](_0xc5a9('0x23')),'priority':_0x22b75c[_0xc5a9('0x1f')]?_0x22b75c['priority']:0x2,'callback':_0x22b75c['callbackUniqueid']?!![]:![],'callbackuniqueid':_0x22b75c[_0xc5a9('0x22')]?_0x22b75c[_0xc5a9('0x22')]:undefined,'callbackat':_0x22b75c[_0xc5a9('0x22')]?moment()['format']('YYYY-MM-DD\x20HH:mm:ss'):undefined,'VoiceQueueId':_0x18b370['id']})[_0xc5a9('0x24')](_0x144735());}}}})[_0xc5a9('0x25')](function(){return _0x39049e[_0xc5a9('0x2f')][_0xc5a9('0x30')]({'where':{'type':'outbound'},'attributes':['id'],'include':[{'model':_0x39049e[_0xc5a9('0x35')],'as':'BlackLists','where':{'id':_0x22b75c[_0xc5a9('0x1e')]}}]})[_0xc5a9('0x25')](function(_0x1989b8){if(_0x1989b8){var _0x24304b=[];for(var _0x2361bc=0x0,_0x3e3098;_0x2361bc<_0x1989b8['length'];_0x2361bc+=0x1){_0x3e3098=_0x1989b8[_0x2361bc]['get']({'plain':!![]});_0x39049e[_0xc5a9('0x36')][_0xc5a9('0x1d')]({'phone':_0x22b75c[_0xc5a9('0xb')],'ContactId':_0x22b75c['id'],'ListId':_0x22b75c['ListId'],'VoiceQueueId':_0x3e3098['id']})['catch'](function(_0x386687){logger[_0xc5a9('0x2b')]('cmContact,\x20%s,\x20%s',_0xc5a9('0x17'),_0x386687[_0xc5a9('0x37')]);});}}});})[_0xc5a9('0x25')](function(){return _0x39049e[_0xc5a9('0x38')][_0xc5a9('0x30')]({'attributes':['id',_0xc5a9('0x31')],'include':[{'model':_0x39049e[_0xc5a9('0x35')],'as':_0xc5a9('0x32'),'where':{'id':_0x22b75c[_0xc5a9('0x1e')]}}]})['then'](function(_0x14f7e5){if(_0x14f7e5){var _0x11dc7f=[];for(var _0x3f7687=0x0,_0x5ece66;_0x3f7687<_0x14f7e5[_0xc5a9('0x39')];_0x3f7687+=0x1){_0x5ece66=_0x14f7e5[_0x3f7687][_0xc5a9('0x15')]({'plain':!![]});switch(_0x5ece66['dialCheckDuplicateType']){case _0xc5a9('0x33'):_0x1065fd(_0x5ece66)[_0xc5a9('0x24')](_0x16337e());break;case _0xc5a9('0x34'):_0x2ba069(_0x5ece66)[_0xc5a9('0x24')](_0x16337e());break;default:_0x39049e[_0xc5a9('0x1c')][_0xc5a9('0x1d')]({'phone':_0x22b75c['phone'],'ContactId':_0x22b75c['id'],'ListId':_0x22b75c[_0xc5a9('0x1e')],'scheduledat':_0x22b75c[_0xc5a9('0x20')]?_0x22b75c['scheduledat']:moment()[_0xc5a9('0x21')](_0xc5a9('0x23')),'priority':_0x22b75c[_0xc5a9('0x1f')]?_0x22b75c[_0xc5a9('0x1f')]:0x2,'callback':_0x22b75c['callbackUniqueid']?!![]:![],'callbackuniqueid':_0x22b75c['callbackUniqueid']?_0x22b75c['callbackUniqueid']:undefined,'callbackat':_0x22b75c[_0xc5a9('0x22')]?moment()[_0xc5a9('0x21')]('YYYY-MM-DD\x20HH:mm:ss'):undefined,'CampaignId':_0x5ece66['id']})['catch'](_0x16337e());}}}});})[_0xc5a9('0x25')](function(){return _0x39049e[_0xc5a9('0x38')][_0xc5a9('0x30')]({'attributes':['id'],'include':[{'model':_0x39049e[_0xc5a9('0x35')],'as':_0xc5a9('0x3a'),'where':{'id':_0x22b75c[_0xc5a9('0x1e')]}}]})[_0xc5a9('0x25')](function(_0x2eb00f){if(_0x2eb00f){var _0x4a1ea8=[];for(var _0x661a8d=0x0,_0xb954e2;_0x661a8d<_0x2eb00f[_0xc5a9('0x39')];_0x661a8d+=0x1){_0xb954e2=_0x2eb00f[_0x661a8d][_0xc5a9('0x15')]({'plain':!![]});_0x39049e[_0xc5a9('0x36')]['create']({'phone':_0x22b75c[_0xc5a9('0xb')],'ContactId':_0x22b75c['id'],'ListId':_0x22b75c[_0xc5a9('0x1e')],'CampaignId':_0xb954e2['id']})['catch'](function(_0x523451){logger[_0xc5a9('0x2b')](_0xc5a9('0x3b'),_0xc5a9('0x17'),_0x523451['message']);});}}});})[_0xc5a9('0x25')](function(){_0x178710();})[_0xc5a9('0x24')](function(_0x48c4d6){logger[_0xc5a9('0x2b')](_0xc5a9('0x3b'),'afterCreate',_0x48c4d6[_0xc5a9('0x37')]);_0x178710(_0x48c4d6);});}else{_0x178710(new Error('List\x20not\x20found'));}},'afterDestroy':function(_0x24ba34,_0x3d9605,_0x3e7ca8){var _0x1298f6=_0x2740c5[_0xc5a9('0x14')];var _0x16d05d=_0x24ba34[_0xc5a9('0x15')]({'plain':!![]});return _0x1298f6[_0xc5a9('0x1c')][_0xc5a9('0x30')]({'raw':!![],'where':{'ListId':_0x16d05d[_0xc5a9('0x1e')],'ContactId':_0x16d05d['id']}})['then'](function(_0x519e6f){if(!_['isEmpty'](_0x519e6f)){var _0x5bf348=[];for(var _0x1780b9=0x0;_0x1780b9<_0x519e6f[_0xc5a9('0x39')];_0x1780b9+=0x1){var _0x986946=_0x1298f6[_0xc5a9('0x1c')]['destroy']({'where':{'ListId':_0x519e6f[_0x1780b9]['ListId'],'ContactId':_0x519e6f[_0x1780b9][_0xc5a9('0x3c')],'VoiceQueueId':_0x519e6f[_0x1780b9]['VoiceQueueId'],'CampaignId':_0x519e6f[_0x1780b9][_0xc5a9('0x3d')]}});_0x5bf348[_0xc5a9('0x3e')](_0x986946);}return BPromise['all'](_0x5bf348);}})[_0xc5a9('0x25')](function(_0x8072){logger['info'](_0xc5a9('0x3f'),util['inspect'](_0x8072,{'showHidden':![],'depth':null}));_0x3e7ca8();})[_0xc5a9('0x24')](function(_0x5c3b06){logger['error'](_0xc5a9('0x40'),util[_0xc5a9('0x18')](_0x5c3b06,{'showHidden':![],'depth':null}));_0x3e7ca8(_0x5c3b06);});}}});};