90383a702a7a51b6d10a6f459706ed153a3a97bd
[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 _0x0e4b=['catch','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopper\x20VoiceQueue\x20','CmHopperFinal','then','cmContact,\x20afterCreate,\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20VoiceQueue\x20','create','ListId','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20Campaign\x20','VoiceQueue','findAll','outbound','dialCheckDuplicateType','CmList','Lists','length','onlyIfOpen','BlackLists','cmContact,\x20%s,\x20%s','message','Campaign','CmHopperBlack','List\x20not\x20found','isEmpty','destroy','VoiceQueueId','CampaignId','push','all','[CmContact][afterDestroy][Succesfull]','[CmContact][afterDestroy][Error]','lodash','util','../../config/logger','moment','../../config/environment','./cmContact.attributes','define','CmContact','cm_contacts','fti_cm_contacts','firstName','lastName','phone','mobile','fax','email','FULLTEXT','models','get','error','afterCreate','inspect','findOne','isNil','cmContact,\x20afterCreate\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20VoiceQueue\x20','CmHopper','priority','scheduledat','format','YYYY-MM-DD\x20HH:mm:ss','callbackUniqueid'];(function(_0x48697e,_0x1af79a){var _0x2094f0=function(_0x42917e){while(--_0x42917e){_0x48697e['push'](_0x48697e['shift']());}};_0x2094f0(++_0x1af79a);}(_0x0e4b,0xdc));var _0xb0e4=function(_0x2e5fd9,_0x382a2a){_0x2e5fd9=_0x2e5fd9-0x0;var _0x1f8117=_0x0e4b[_0x2e5fd9];return _0x1f8117;};'use strict';var _=require(_0xb0e4('0x0'));var util=require(_0xb0e4('0x1'));var logger=require(_0xb0e4('0x2'))('api');var moment=require(_0xb0e4('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xb0e4('0x4'));var attributes=require(_0xb0e4('0x5'));module['exports']=function(_0x45bdf2,_0x3b56c3){return _0x45bdf2[_0xb0e4('0x6')](_0xb0e4('0x7'),attributes,{'tableName':_0xb0e4('0x8'),'paranoid':!![],'indexes':[{'name':'phone','fields':['phone']},{'name':_0xb0e4('0x9'),'fields':[_0xb0e4('0xa'),_0xb0e4('0xb'),_0xb0e4('0xc'),_0xb0e4('0xd'),_0xb0e4('0xe'),_0xb0e4('0xf')],'type':_0xb0e4('0x10')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x38019d,_0x397bf3,_0x598c20){var _0x185153=_0x45bdf2[_0xb0e4('0x11')];var _0x3fdf0f=_0x38019d[_0xb0e4('0x12')]({'plain':!![]});function _0x4c19ee(){return function(_0x190a90){logger[_0xb0e4('0x13')]('cmContact',_0xb0e4('0x14'),util[_0xb0e4('0x15')](_0x190a90,{'showHidden':![],'depth':null}));};}var _0x291e3f=function(_0x460180){return new BPromise(function(_0x1e1ca5,_0x57ba9d){_0x185153['CmHopper'][_0xb0e4('0x16')]({'where':{'phone':_0x3fdf0f[_0xb0e4('0xc')],'VoiceQueueId':_0x460180['id']}})['then'](function(_0x152ceb){if(!_[_0xb0e4('0x17')](_0x152ceb)){throw new Error(_0xb0e4('0x18')+_0x3fdf0f[_0xb0e4('0xc')]+_0xb0e4('0x19')+_0x460180['id']);}return _0x185153[_0xb0e4('0x1a')]['create']({'phone':_0x3fdf0f['phone'],'ContactId':_0x3fdf0f['id'],'ListId':_0x3fdf0f['ListId'],'priority':_0x3fdf0f[_0xb0e4('0x1b')]?_0x3fdf0f[_0xb0e4('0x1b')]:0x2,'scheduledat':_0x3fdf0f[_0xb0e4('0x1c')]?_0x3fdf0f[_0xb0e4('0x1c')]:moment()[_0xb0e4('0x1d')](_0xb0e4('0x1e')),'callback':_0x3fdf0f['callbackUniqueid']?!![]:![],'callbackuniqueid':_0x3fdf0f[_0xb0e4('0x1f')]?_0x3fdf0f[_0xb0e4('0x1f')]:undefined,'callbackat':_0x3fdf0f[_0xb0e4('0x1f')]?moment()[_0xb0e4('0x1d')]('YYYY-MM-DD\x20HH:mm:ss'):undefined,'VoiceQueueId':_0x460180['id']});})[_0xb0e4('0x20')](function(_0x4f2488){_0x57ba9d(_0x4f2488);});});};var _0x52b55e=function(_0x2663f3){return new BPromise(function(_0x2774be,_0xe6a9cf){_0x185153['CmHopper'][_0xb0e4('0x16')]({'where':{'phone':_0x3fdf0f['phone'],'VoiceQueueId':_0x2663f3['id']}})['then'](function(_0x21276c){if(!_[_0xb0e4('0x17')](_0x21276c)){throw new Error(_0xb0e4('0x18')+_0x3fdf0f[_0xb0e4('0xc')]+_0xb0e4('0x21')+_0x2663f3['id']);}return _0x185153[_0xb0e4('0x22')][_0xb0e4('0x16')]({'where':{'calleridnum':_0x3fdf0f['phone'],'VoiceQueueId':_0x2663f3['id']}});})[_0xb0e4('0x23')](function(_0x4821dd){if(!_[_0xb0e4('0x17')](_0x4821dd)){throw new Error(_0xb0e4('0x24')+_0x3fdf0f[_0xb0e4('0xc')]+_0xb0e4('0x25')+_0x2663f3['id']);}return _0x185153['CmHopper'][_0xb0e4('0x26')]({'phone':_0x3fdf0f[_0xb0e4('0xc')],'ContactId':_0x3fdf0f['id'],'ListId':_0x3fdf0f[_0xb0e4('0x27')],'priority':_0x3fdf0f[_0xb0e4('0x1b')]?_0x3fdf0f[_0xb0e4('0x1b')]:0x2,'scheduledat':_0x3fdf0f[_0xb0e4('0x1c')]?_0x3fdf0f[_0xb0e4('0x1c')]:moment()[_0xb0e4('0x1d')]('YYYY-MM-DD\x20HH:mm:ss'),'callback':_0x3fdf0f[_0xb0e4('0x1f')]?!![]:![],'callbackuniqueid':_0x3fdf0f['callbackUniqueid']?_0x3fdf0f[_0xb0e4('0x1f')]:undefined,'callbackat':_0x3fdf0f[_0xb0e4('0x1f')]?moment()['format'](_0xb0e4('0x1e')):undefined,'VoiceQueueId':_0x2663f3['id']});})[_0xb0e4('0x20')](function(_0xbccf4b){_0xe6a9cf(_0xbccf4b);});});};function _0x2694ea(){return function(_0x1190ea){logger[_0xb0e4('0x13')]('cmContact',_0xb0e4('0x14'),util['inspect'](_0x1190ea,{'showHidden':![],'depth':null}));};}var _0x5b3d93=function(_0x311ce3){return new BPromise(function(_0x5f2633,_0xc51bcb){_0x185153['CmHopper'][_0xb0e4('0x16')]({'where':{'phone':_0x3fdf0f['phone'],'CampaignId':_0x311ce3['id']}})[_0xb0e4('0x23')](function(_0x12f6a6){if(!_[_0xb0e4('0x17')](_0x12f6a6)){throw new Error('cmContact,\x20afterCreate\x20'+_0x3fdf0f[_0xb0e4('0xc')]+'\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20Campaign\x20'+_0x311ce3['id']);}return _0x185153[_0xb0e4('0x1a')][_0xb0e4('0x26')]({'phone':_0x3fdf0f[_0xb0e4('0xc')],'ContactId':_0x3fdf0f['id'],'ListId':_0x3fdf0f[_0xb0e4('0x27')],'priority':_0x3fdf0f[_0xb0e4('0x1b')]?_0x3fdf0f['priority']:0x2,'scheduledat':_0x3fdf0f[_0xb0e4('0x1c')]?_0x3fdf0f['scheduledat']:moment()[_0xb0e4('0x1d')](_0xb0e4('0x1e')),'callback':_0x3fdf0f[_0xb0e4('0x1f')]?!![]:![],'callbackuniqueid':_0x3fdf0f['callbackUniqueid']?_0x3fdf0f[_0xb0e4('0x1f')]:undefined,'callbackat':_0x3fdf0f[_0xb0e4('0x1f')]?moment()[_0xb0e4('0x1d')](_0xb0e4('0x1e')):undefined,'CampaignId':_0x311ce3['id']});})['catch'](function(_0x4b6f58){_0xc51bcb(_0x4b6f58);});});};var _0x4af7f6=function(_0x4dffd8){return new BPromise(function(_0x16812e,_0x4b924d){_0x185153[_0xb0e4('0x1a')]['findOne']({'where':{'phone':_0x3fdf0f[_0xb0e4('0xc')],'CampaignId':_0x4dffd8['id']}})['then'](function(_0x5d4af8){if(!_[_0xb0e4('0x17')](_0x5d4af8)){throw new Error(_0xb0e4('0x18')+_0x3fdf0f[_0xb0e4('0xc')]+'\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopper\x20Campaign\x20'+_0x4dffd8['id']);}return _0x185153[_0xb0e4('0x22')][_0xb0e4('0x16')]({'where':{'calleridnum':_0x3fdf0f['phone'],'CampaignId':_0x4dffd8['id']}});})[_0xb0e4('0x23')](function(_0x498f09){if(!_[_0xb0e4('0x17')](_0x498f09)){throw new Error(_0xb0e4('0x24')+_0x3fdf0f['phone']+_0xb0e4('0x28')+_0x4dffd8['id']);}return _0x185153['CmHopper']['create']({'phone':_0x3fdf0f['phone'],'ContactId':_0x3fdf0f['id'],'ListId':_0x3fdf0f[_0xb0e4('0x27')],'priority':_0x3fdf0f[_0xb0e4('0x1b')]?_0x3fdf0f['priority']:0x2,'scheduledat':_0x3fdf0f[_0xb0e4('0x1c')]?_0x3fdf0f['scheduledat']:moment()[_0xb0e4('0x1d')](_0xb0e4('0x1e')),'callback':_0x3fdf0f[_0xb0e4('0x1f')]?!![]:![],'callbackuniqueid':_0x3fdf0f[_0xb0e4('0x1f')]?_0x3fdf0f['callbackUniqueid']:undefined,'callbackat':_0x3fdf0f[_0xb0e4('0x1f')]?moment()[_0xb0e4('0x1d')](_0xb0e4('0x1e')):undefined,'CampaignId':_0x4dffd8['id']});})[_0xb0e4('0x20')](function(_0x387122){_0x4b924d(_0x387122);});});};if(_0x3fdf0f[_0xb0e4('0x27')]){_0x185153[_0xb0e4('0x29')][_0xb0e4('0x2a')]({'where':{'type':_0xb0e4('0x2b')},'attributes':['id',_0xb0e4('0x2c')],'include':[{'model':_0x185153[_0xb0e4('0x2d')],'as':_0xb0e4('0x2e'),'where':{'id':_0x3fdf0f[_0xb0e4('0x27')]}}]})[_0xb0e4('0x23')](function(_0x35275f){if(_0x35275f){var _0x369d64=[];for(var _0x5b7448=0x0,_0x277cdd;_0x5b7448<_0x35275f[_0xb0e4('0x2f')];_0x5b7448+=0x1){_0x277cdd=_0x35275f[_0x5b7448][_0xb0e4('0x12')]({'plain':!![]});switch(_0x277cdd[_0xb0e4('0x2c')]){case'always':_0x52b55e(_0x277cdd)[_0xb0e4('0x20')](_0x4c19ee());break;case _0xb0e4('0x30'):_0x291e3f(_0x277cdd)['catch'](_0x4c19ee());break;default:_0x185153[_0xb0e4('0x1a')][_0xb0e4('0x26')]({'phone':_0x3fdf0f[_0xb0e4('0xc')],'ContactId':_0x3fdf0f['id'],'ListId':_0x3fdf0f[_0xb0e4('0x27')],'scheduledat':_0x3fdf0f['scheduledat']?_0x3fdf0f[_0xb0e4('0x1c')]:moment()[_0xb0e4('0x1d')](_0xb0e4('0x1e')),'priority':_0x3fdf0f[_0xb0e4('0x1b')]?_0x3fdf0f[_0xb0e4('0x1b')]:0x2,'callback':_0x3fdf0f[_0xb0e4('0x1f')]?!![]:![],'callbackuniqueid':_0x3fdf0f[_0xb0e4('0x1f')]?_0x3fdf0f[_0xb0e4('0x1f')]:undefined,'callbackat':_0x3fdf0f[_0xb0e4('0x1f')]?moment()[_0xb0e4('0x1d')](_0xb0e4('0x1e')):undefined,'VoiceQueueId':_0x277cdd['id']})['catch'](_0x4c19ee());}}}})[_0xb0e4('0x23')](function(){return _0x185153[_0xb0e4('0x29')]['findAll']({'where':{'type':'outbound'},'attributes':['id'],'include':[{'model':_0x185153['CmList'],'as':_0xb0e4('0x31'),'where':{'id':_0x3fdf0f[_0xb0e4('0x27')]}}]})['then'](function(_0x484d19){if(_0x484d19){var _0x5e8a9a=[];for(var _0x54963f=0x0,_0x5a391d;_0x54963f<_0x484d19['length'];_0x54963f+=0x1){_0x5a391d=_0x484d19[_0x54963f][_0xb0e4('0x12')]({'plain':!![]});_0x185153['CmHopperBlack'][_0xb0e4('0x26')]({'phone':_0x3fdf0f[_0xb0e4('0xc')],'ContactId':_0x3fdf0f['id'],'ListId':_0x3fdf0f[_0xb0e4('0x27')],'VoiceQueueId':_0x5a391d['id']})[_0xb0e4('0x20')](function(_0x502d5e){logger[_0xb0e4('0x13')](_0xb0e4('0x32'),'afterCreate',_0x502d5e[_0xb0e4('0x33')]);});}}});})['then'](function(){return _0x185153[_0xb0e4('0x34')][_0xb0e4('0x2a')]({'attributes':['id',_0xb0e4('0x2c')],'include':[{'model':_0x185153[_0xb0e4('0x2d')],'as':'Lists','where':{'id':_0x3fdf0f[_0xb0e4('0x27')]}}]})[_0xb0e4('0x23')](function(_0x250025){if(_0x250025){var _0x235b8c=[];for(var _0x49ab86=0x0,_0x476c08;_0x49ab86<_0x250025[_0xb0e4('0x2f')];_0x49ab86+=0x1){_0x476c08=_0x250025[_0x49ab86][_0xb0e4('0x12')]({'plain':!![]});switch(_0x476c08['dialCheckDuplicateType']){case'always':_0x4af7f6(_0x476c08)['catch'](_0x2694ea());break;case'onlyIfOpen':_0x5b3d93(_0x476c08)['catch'](_0x2694ea());break;default:_0x185153[_0xb0e4('0x1a')]['create']({'phone':_0x3fdf0f[_0xb0e4('0xc')],'ContactId':_0x3fdf0f['id'],'ListId':_0x3fdf0f[_0xb0e4('0x27')],'scheduledat':_0x3fdf0f[_0xb0e4('0x1c')]?_0x3fdf0f[_0xb0e4('0x1c')]:moment()['format'](_0xb0e4('0x1e')),'priority':_0x3fdf0f[_0xb0e4('0x1b')]?_0x3fdf0f['priority']:0x2,'callback':_0x3fdf0f[_0xb0e4('0x1f')]?!![]:![],'callbackuniqueid':_0x3fdf0f['callbackUniqueid']?_0x3fdf0f[_0xb0e4('0x1f')]:undefined,'callbackat':_0x3fdf0f[_0xb0e4('0x1f')]?moment()[_0xb0e4('0x1d')]('YYYY-MM-DD\x20HH:mm:ss'):undefined,'CampaignId':_0x476c08['id']})[_0xb0e4('0x20')](_0x2694ea());}}}});})[_0xb0e4('0x23')](function(){return _0x185153['Campaign'][_0xb0e4('0x2a')]({'attributes':['id'],'include':[{'model':_0x185153[_0xb0e4('0x2d')],'as':'BlackLists','where':{'id':_0x3fdf0f['ListId']}}]})[_0xb0e4('0x23')](function(_0xa4c0b0){if(_0xa4c0b0){var _0x2aefeb=[];for(var _0x5a6b6e=0x0,_0xf91cd1;_0x5a6b6e<_0xa4c0b0[_0xb0e4('0x2f')];_0x5a6b6e+=0x1){_0xf91cd1=_0xa4c0b0[_0x5a6b6e]['get']({'plain':!![]});_0x185153[_0xb0e4('0x35')][_0xb0e4('0x26')]({'phone':_0x3fdf0f['phone'],'ContactId':_0x3fdf0f['id'],'ListId':_0x3fdf0f[_0xb0e4('0x27')],'CampaignId':_0xf91cd1['id']})[_0xb0e4('0x20')](function(_0x2b2767){logger['error'](_0xb0e4('0x32'),_0xb0e4('0x14'),_0x2b2767[_0xb0e4('0x33')]);});}}});})[_0xb0e4('0x23')](function(){_0x598c20();})['catch'](function(_0x2995e7){logger[_0xb0e4('0x13')](_0xb0e4('0x32'),_0xb0e4('0x14'),_0x2995e7[_0xb0e4('0x33')]);_0x598c20(_0x2995e7);});}else{_0x598c20(new Error(_0xb0e4('0x36')));}},'afterDestroy':function(_0x30150c,_0x5473d7,_0x58cae0){var _0x46d2f1=_0x45bdf2[_0xb0e4('0x11')];var _0x2b8e35=_0x30150c[_0xb0e4('0x12')]({'plain':!![]});return _0x46d2f1[_0xb0e4('0x1a')][_0xb0e4('0x2a')]({'raw':!![],'where':{'ListId':_0x2b8e35[_0xb0e4('0x27')],'ContactId':_0x2b8e35['id']}})[_0xb0e4('0x23')](function(_0xf035a2){if(!_[_0xb0e4('0x37')](_0xf035a2)){var _0x115dc7=[];for(var _0x42f451=0x0;_0x42f451<_0xf035a2[_0xb0e4('0x2f')];_0x42f451+=0x1){var _0x1fd1cc=_0x46d2f1[_0xb0e4('0x1a')][_0xb0e4('0x38')]({'where':{'ListId':_0xf035a2[_0x42f451]['ListId'],'ContactId':_0xf035a2[_0x42f451]['ContactId'],'VoiceQueueId':_0xf035a2[_0x42f451][_0xb0e4('0x39')],'CampaignId':_0xf035a2[_0x42f451][_0xb0e4('0x3a')]}});_0x115dc7[_0xb0e4('0x3b')](_0x1fd1cc);}return BPromise[_0xb0e4('0x3c')](_0x115dc7);}})[_0xb0e4('0x23')](function(_0x5c3d56){logger['info'](_0xb0e4('0x3d'),util[_0xb0e4('0x15')](_0x5c3d56,{'showHidden':![],'depth':null}));_0x58cae0();})[_0xb0e4('0x20')](function(_0x54f614){logger[_0xb0e4('0x13')](_0xb0e4('0x3e'),util['inspect'](_0x54f614,{'showHidden':![],'depth':null}));_0x58cae0(_0x54f614);});}}});};