e35d8661f2359e5d96d8743f5d4e22ff56ef7a41
[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 _0x31cc=['path','exports','define','CmContact','cm_contacts','phone','fti_cm_contacts','firstName','lastName','mobile','fax','email','utf8mb4_unicode_ci','models','get','afterCreate','inspect','CmHopper','findOne','then','isNil','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20VoiceQueue\x20','create','ListId','priority','scheduledat','format','YYYY-MM-DD\x20HH:mm:ss','callbackUniqueid','catch','cmContact,\x20afterCreate\x20','\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','cmContact','\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','outbound','CmList','Lists','length','dialCheckDuplicateType','always','onlyIfOpen','BlackLists','CmHopperBlack','error','cmContact,\x20%s,\x20%s','message','Campaign','List\x20not\x20found','isEmpty','destroy','VoiceQueueId','CampaignId','push','info','[CmContact][afterDestroy][Succesfull]','[CmContact][afterDestroy][Error]','lodash','util','../../config/logger','api','request-promise'];(function(_0x198391,_0xa5fc10){var _0xcb3c41=function(_0x2158a7){while(--_0x2158a7){_0x198391['push'](_0x198391['shift']());}};_0xcb3c41(++_0xa5fc10);}(_0x31cc,0x10b));var _0xc31c=function(_0x1c8c28,_0x3ee093){_0x1c8c28=_0x1c8c28-0x0;var _0x1f59b4=_0x31cc[_0x1c8c28];return _0x1f59b4;};'use strict';var _=require(_0xc31c('0x0'));var util=require(_0xc31c('0x1'));var logger=require(_0xc31c('0x2'))(_0xc31c('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xc31c('0x4'));var fs=require('fs');var path=require(_0xc31c('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./cmContact.attributes');module[_0xc31c('0x6')]=function(_0x35687b,_0x490e69){return _0x35687b[_0xc31c('0x7')](_0xc31c('0x8'),attributes,{'tableName':_0xc31c('0x9'),'paranoid':!![],'indexes':[{'name':_0xc31c('0xa'),'fields':[_0xc31c('0xa')]},{'name':_0xc31c('0xb'),'fields':[_0xc31c('0xc'),_0xc31c('0xd'),_0xc31c('0xa'),_0xc31c('0xe'),_0xc31c('0xf'),_0xc31c('0x10')],'type':'FULLTEXT'}],'timestamps':!![],'charset':'utf8mb4','collate':_0xc31c('0x11'),'hooks':{'afterCreate':function(_0x5e5e04,_0x1e0584,_0x4ad81b){var _0x8cffb2=_0x35687b[_0xc31c('0x12')];var _0x20a7ac=_0x5e5e04[_0xc31c('0x13')]({'plain':!![]});function _0x6130af(){return function(_0x210698){logger['error']('cmContact',_0xc31c('0x14'),util[_0xc31c('0x15')](_0x210698,{'showHidden':![],'depth':null}));};}var _0x3029c2=function(_0x11a465){return new BPromise(function(_0x18b92d,_0x4f1b5d){_0x8cffb2[_0xc31c('0x16')][_0xc31c('0x17')]({'where':{'phone':_0x20a7ac[_0xc31c('0xa')],'VoiceQueueId':_0x11a465['id']}})[_0xc31c('0x18')](function(_0x208fa6){if(!_[_0xc31c('0x19')](_0x208fa6)){throw new Error('cmContact,\x20afterCreate\x20'+_0x20a7ac[_0xc31c('0xa')]+_0xc31c('0x1a')+_0x11a465['id']);}return _0x8cffb2[_0xc31c('0x16')][_0xc31c('0x1b')]({'phone':_0x20a7ac['phone'],'ContactId':_0x20a7ac['id'],'ListId':_0x20a7ac[_0xc31c('0x1c')],'priority':_0x20a7ac['priority']?_0x20a7ac[_0xc31c('0x1d')]:0x2,'scheduledat':_0x20a7ac[_0xc31c('0x1e')]?_0x20a7ac['scheduledat']:moment()[_0xc31c('0x1f')](_0xc31c('0x20')),'callback':_0x20a7ac[_0xc31c('0x21')]?!![]:![],'callbackuniqueid':_0x20a7ac[_0xc31c('0x21')]?_0x20a7ac[_0xc31c('0x21')]:undefined,'callbackat':_0x20a7ac['callbackUniqueid']?moment()[_0xc31c('0x1f')](_0xc31c('0x20')):undefined,'VoiceQueueId':_0x11a465['id']});})[_0xc31c('0x22')](function(_0x57e1a3){_0x4f1b5d(_0x57e1a3);});});};var _0x56d84d=function(_0x1933e9){return new BPromise(function(_0x18a095,_0x9ef5ab){_0x8cffb2[_0xc31c('0x16')][_0xc31c('0x17')]({'where':{'phone':_0x20a7ac[_0xc31c('0xa')],'VoiceQueueId':_0x1933e9['id']}})['then'](function(_0x3a49b2){if(!_[_0xc31c('0x19')](_0x3a49b2)){throw new Error(_0xc31c('0x23')+_0x20a7ac[_0xc31c('0xa')]+_0xc31c('0x24')+_0x1933e9['id']);}return _0x8cffb2[_0xc31c('0x25')][_0xc31c('0x17')]({'where':{'calleridnum':_0x20a7ac[_0xc31c('0xa')],'VoiceQueueId':_0x1933e9['id']}});})[_0xc31c('0x18')](function(_0xc118fa){if(!_[_0xc31c('0x19')](_0xc118fa)){throw new Error(_0xc31c('0x26')+_0x20a7ac[_0xc31c('0xa')]+_0xc31c('0x27')+_0x1933e9['id']);}return _0x8cffb2[_0xc31c('0x16')][_0xc31c('0x1b')]({'phone':_0x20a7ac[_0xc31c('0xa')],'ContactId':_0x20a7ac['id'],'ListId':_0x20a7ac[_0xc31c('0x1c')],'priority':_0x20a7ac[_0xc31c('0x1d')]?_0x20a7ac[_0xc31c('0x1d')]:0x2,'scheduledat':_0x20a7ac[_0xc31c('0x1e')]?_0x20a7ac[_0xc31c('0x1e')]:moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'callback':_0x20a7ac[_0xc31c('0x21')]?!![]:![],'callbackuniqueid':_0x20a7ac['callbackUniqueid']?_0x20a7ac[_0xc31c('0x21')]:undefined,'callbackat':_0x20a7ac[_0xc31c('0x21')]?moment()[_0xc31c('0x1f')]('YYYY-MM-DD\x20HH:mm:ss'):undefined,'VoiceQueueId':_0x1933e9['id']});})[_0xc31c('0x22')](function(_0x51ac5e){_0x9ef5ab(_0x51ac5e);});});};function _0x4c570f(){return function(_0x10ec04){logger['error'](_0xc31c('0x28'),_0xc31c('0x14'),util[_0xc31c('0x15')](_0x10ec04,{'showHidden':![],'depth':null}));};}var _0x46b715=function(_0x10f379){return new BPromise(function(_0x30a28b,_0x5bad60){_0x8cffb2[_0xc31c('0x16')][_0xc31c('0x17')]({'where':{'phone':_0x20a7ac['phone'],'CampaignId':_0x10f379['id']}})['then'](function(_0xb11317){if(!_['isNil'](_0xb11317)){throw new Error('cmContact,\x20afterCreate\x20'+_0x20a7ac[_0xc31c('0xa')]+_0xc31c('0x29')+_0x10f379['id']);}return _0x8cffb2[_0xc31c('0x16')][_0xc31c('0x1b')]({'phone':_0x20a7ac[_0xc31c('0xa')],'ContactId':_0x20a7ac['id'],'ListId':_0x20a7ac[_0xc31c('0x1c')],'priority':_0x20a7ac[_0xc31c('0x1d')]?_0x20a7ac[_0xc31c('0x1d')]:0x2,'scheduledat':_0x20a7ac[_0xc31c('0x1e')]?_0x20a7ac[_0xc31c('0x1e')]:moment()[_0xc31c('0x1f')](_0xc31c('0x20')),'callback':_0x20a7ac['callbackUniqueid']?!![]:![],'callbackuniqueid':_0x20a7ac['callbackUniqueid']?_0x20a7ac[_0xc31c('0x21')]:undefined,'callbackat':_0x20a7ac[_0xc31c('0x21')]?moment()[_0xc31c('0x1f')](_0xc31c('0x20')):undefined,'CampaignId':_0x10f379['id']});})[_0xc31c('0x22')](function(_0x5e429b){_0x5bad60(_0x5e429b);});});};var _0x4e7e80=function(_0x55beac){return new BPromise(function(_0x2bb098,_0x23291a){_0x8cffb2['CmHopper'][_0xc31c('0x17')]({'where':{'phone':_0x20a7ac['phone'],'CampaignId':_0x55beac['id']}})[_0xc31c('0x18')](function(_0xb03dbd){if(!_[_0xc31c('0x19')](_0xb03dbd)){throw new Error(_0xc31c('0x23')+_0x20a7ac[_0xc31c('0xa')]+_0xc31c('0x2a')+_0x55beac['id']);}return _0x8cffb2[_0xc31c('0x25')][_0xc31c('0x17')]({'where':{'calleridnum':_0x20a7ac['phone'],'CampaignId':_0x55beac['id']}});})[_0xc31c('0x18')](function(_0x5b88b0){if(!_['isNil'](_0x5b88b0)){throw new Error(_0xc31c('0x26')+_0x20a7ac[_0xc31c('0xa')]+_0xc31c('0x2b')+_0x55beac['id']);}return _0x8cffb2['CmHopper']['create']({'phone':_0x20a7ac[_0xc31c('0xa')],'ContactId':_0x20a7ac['id'],'ListId':_0x20a7ac[_0xc31c('0x1c')],'priority':_0x20a7ac[_0xc31c('0x1d')]?_0x20a7ac[_0xc31c('0x1d')]:0x2,'scheduledat':_0x20a7ac[_0xc31c('0x1e')]?_0x20a7ac[_0xc31c('0x1e')]:moment()[_0xc31c('0x1f')]('YYYY-MM-DD\x20HH:mm:ss'),'callback':_0x20a7ac[_0xc31c('0x21')]?!![]:![],'callbackuniqueid':_0x20a7ac[_0xc31c('0x21')]?_0x20a7ac[_0xc31c('0x21')]:undefined,'callbackat':_0x20a7ac[_0xc31c('0x21')]?moment()[_0xc31c('0x1f')](_0xc31c('0x20')):undefined,'CampaignId':_0x55beac['id']});})[_0xc31c('0x22')](function(_0xc41bde){_0x23291a(_0xc41bde);});});};if(_0x20a7ac['ListId']){_0x8cffb2[_0xc31c('0x2c')][_0xc31c('0x2d')]({'where':{'type':_0xc31c('0x2e')},'attributes':['id','dialCheckDuplicateType'],'include':[{'model':_0x8cffb2[_0xc31c('0x2f')],'as':_0xc31c('0x30'),'where':{'id':_0x20a7ac[_0xc31c('0x1c')]}}]})[_0xc31c('0x18')](function(_0x32f07e){if(_0x32f07e){var _0x2754c4=[];for(var _0x477f2a=0x0,_0x4ff53d;_0x477f2a<_0x32f07e[_0xc31c('0x31')];_0x477f2a+=0x1){_0x4ff53d=_0x32f07e[_0x477f2a][_0xc31c('0x13')]({'plain':!![]});switch(_0x4ff53d[_0xc31c('0x32')]){case _0xc31c('0x33'):_0x56d84d(_0x4ff53d)[_0xc31c('0x22')](_0x6130af());break;case _0xc31c('0x34'):_0x3029c2(_0x4ff53d)[_0xc31c('0x22')](_0x6130af());break;default:_0x8cffb2[_0xc31c('0x16')][_0xc31c('0x1b')]({'phone':_0x20a7ac[_0xc31c('0xa')],'ContactId':_0x20a7ac['id'],'ListId':_0x20a7ac[_0xc31c('0x1c')],'scheduledat':_0x20a7ac[_0xc31c('0x1e')]?_0x20a7ac[_0xc31c('0x1e')]:moment()[_0xc31c('0x1f')](_0xc31c('0x20')),'priority':_0x20a7ac[_0xc31c('0x1d')]?_0x20a7ac[_0xc31c('0x1d')]:0x2,'callback':_0x20a7ac[_0xc31c('0x21')]?!![]:![],'callbackuniqueid':_0x20a7ac[_0xc31c('0x21')]?_0x20a7ac['callbackUniqueid']:undefined,'callbackat':_0x20a7ac[_0xc31c('0x21')]?moment()['format'](_0xc31c('0x20')):undefined,'VoiceQueueId':_0x4ff53d['id']})[_0xc31c('0x22')](_0x6130af());}}}})[_0xc31c('0x18')](function(){return _0x8cffb2[_0xc31c('0x2c')]['findAll']({'where':{'type':_0xc31c('0x2e')},'attributes':['id'],'include':[{'model':_0x8cffb2[_0xc31c('0x2f')],'as':_0xc31c('0x35'),'where':{'id':_0x20a7ac['ListId']}}]})[_0xc31c('0x18')](function(_0x59a4ba){if(_0x59a4ba){var _0xbbcba7=[];for(var _0x156bf1=0x0,_0x214eb3;_0x156bf1<_0x59a4ba[_0xc31c('0x31')];_0x156bf1+=0x1){_0x214eb3=_0x59a4ba[_0x156bf1][_0xc31c('0x13')]({'plain':!![]});_0x8cffb2[_0xc31c('0x36')][_0xc31c('0x1b')]({'phone':_0x20a7ac['phone'],'ContactId':_0x20a7ac['id'],'ListId':_0x20a7ac['ListId'],'VoiceQueueId':_0x214eb3['id']})[_0xc31c('0x22')](function(_0x19d7ce){logger[_0xc31c('0x37')](_0xc31c('0x38'),'afterCreate',_0x19d7ce[_0xc31c('0x39')]);});}}});})[_0xc31c('0x18')](function(){return _0x8cffb2[_0xc31c('0x3a')][_0xc31c('0x2d')]({'attributes':['id',_0xc31c('0x32')],'include':[{'model':_0x8cffb2['CmList'],'as':_0xc31c('0x30'),'where':{'id':_0x20a7ac[_0xc31c('0x1c')]}}]})['then'](function(_0x1863f9){if(_0x1863f9){var _0x3694a7=[];for(var _0x345920=0x0,_0x4a0367;_0x345920<_0x1863f9[_0xc31c('0x31')];_0x345920+=0x1){_0x4a0367=_0x1863f9[_0x345920]['get']({'plain':!![]});switch(_0x4a0367[_0xc31c('0x32')]){case'always':_0x4e7e80(_0x4a0367)[_0xc31c('0x22')](_0x4c570f());break;case'onlyIfOpen':_0x46b715(_0x4a0367)[_0xc31c('0x22')](_0x4c570f());break;default:_0x8cffb2['CmHopper']['create']({'phone':_0x20a7ac[_0xc31c('0xa')],'ContactId':_0x20a7ac['id'],'ListId':_0x20a7ac[_0xc31c('0x1c')],'scheduledat':_0x20a7ac[_0xc31c('0x1e')]?_0x20a7ac[_0xc31c('0x1e')]:moment()[_0xc31c('0x1f')](_0xc31c('0x20')),'priority':_0x20a7ac['priority']?_0x20a7ac['priority']:0x2,'callback':_0x20a7ac[_0xc31c('0x21')]?!![]:![],'callbackuniqueid':_0x20a7ac[_0xc31c('0x21')]?_0x20a7ac[_0xc31c('0x21')]:undefined,'callbackat':_0x20a7ac[_0xc31c('0x21')]?moment()[_0xc31c('0x1f')](_0xc31c('0x20')):undefined,'CampaignId':_0x4a0367['id']})[_0xc31c('0x22')](_0x4c570f());}}}});})[_0xc31c('0x18')](function(){return _0x8cffb2['Campaign'][_0xc31c('0x2d')]({'attributes':['id'],'include':[{'model':_0x8cffb2[_0xc31c('0x2f')],'as':'BlackLists','where':{'id':_0x20a7ac['ListId']}}]})['then'](function(_0x28c642){if(_0x28c642){var _0x52e1cf=[];for(var _0x1be689=0x0,_0x5684f0;_0x1be689<_0x28c642['length'];_0x1be689+=0x1){_0x5684f0=_0x28c642[_0x1be689][_0xc31c('0x13')]({'plain':!![]});_0x8cffb2[_0xc31c('0x36')][_0xc31c('0x1b')]({'phone':_0x20a7ac[_0xc31c('0xa')],'ContactId':_0x20a7ac['id'],'ListId':_0x20a7ac[_0xc31c('0x1c')],'CampaignId':_0x5684f0['id']})[_0xc31c('0x22')](function(_0x3f7e3a){logger['error'](_0xc31c('0x38'),_0xc31c('0x14'),_0x3f7e3a['message']);});}}});})[_0xc31c('0x18')](function(){_0x4ad81b();})[_0xc31c('0x22')](function(_0x2b93a5){logger[_0xc31c('0x37')](_0xc31c('0x38'),'afterCreate',_0x2b93a5[_0xc31c('0x39')]);_0x4ad81b(_0x2b93a5);});}else{_0x4ad81b(new Error(_0xc31c('0x3b')));}},'afterDestroy':function(_0x43f479,_0xdbd053,_0x403458){var _0xeee1be=_0x35687b['models'];var _0x492368=_0x43f479['get']({'plain':!![]});return _0xeee1be[_0xc31c('0x16')]['findAll']({'raw':!![],'where':{'ListId':_0x492368[_0xc31c('0x1c')],'ContactId':_0x492368['id']}})[_0xc31c('0x18')](function(_0x4c15cf){if(!_[_0xc31c('0x3c')](_0x4c15cf)){var _0x236a62=[];for(var _0x2b9629=0x0;_0x2b9629<_0x4c15cf[_0xc31c('0x31')];_0x2b9629+=0x1){var _0x512725=_0xeee1be[_0xc31c('0x16')][_0xc31c('0x3d')]({'where':{'ListId':_0x4c15cf[_0x2b9629][_0xc31c('0x1c')],'ContactId':_0x4c15cf[_0x2b9629]['ContactId'],'VoiceQueueId':_0x4c15cf[_0x2b9629][_0xc31c('0x3e')],'CampaignId':_0x4c15cf[_0x2b9629][_0xc31c('0x3f')]}});_0x236a62[_0xc31c('0x40')](_0x512725);}return BPromise['all'](_0x236a62);}})[_0xc31c('0x18')](function(_0x564066){logger[_0xc31c('0x41')](_0xc31c('0x42'),util[_0xc31c('0x15')](_0x564066,{'showHidden':![],'depth':null}));_0x403458();})['catch'](function(_0x3a2dff){logger[_0xc31c('0x37')](_0xc31c('0x43'),util[_0xc31c('0x15')](_0x3a2dff,{'showHidden':![],'depth':null}));_0x403458(_0x3a2dff);});}}});};