0864848c43be9a3fbb13346554108c169c2388c1
[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 _0x50a5=['dialCheckDuplicateType','CmList','Lists','length','always','onlyIfOpen','BlackLists','cmContact,\x20%s,\x20%s','message','Campaign','findAll','CmHopperBlack','destroy','ContactId','VoiceQueueId','CampaignId','info','[CmContact][afterDestroy][Succesfull]','inspect','[CmContact][afterDestroy][Error]','lodash','util','request-promise','rimraf','../../config/environment','./cmContact.attributes','exports','define','CmContact','cm_contacts','phone','fti_cm_contacts','firstName','mobile','fax','email','FULLTEXT','models','get','error','afterCreate','CmHopper','isNil','cmContact,\x20afterCreate\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20VoiceQueue\x20','priority','scheduledat','format','callbackUniqueid','YYYY-MM-DD\x20HH:mm:ss','catch','findOne','then','CmHopperFinal','cmContact,\x20afterCreate,\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20VoiceQueue\x20','create','ListId','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','VoiceQueue','outbound'];(function(_0x37f35a,_0x2979dd){var _0x1591ea=function(_0x58def8){while(--_0x58def8){_0x37f35a['push'](_0x37f35a['shift']());}};_0x1591ea(++_0x2979dd);}(_0x50a5,0xd1));var _0x550a=function(_0x38ecd6,_0x21834b){_0x38ecd6=_0x38ecd6-0x0;var _0x9a0b15=_0x50a5[_0x38ecd6];return _0x9a0b15;};'use strict';var _=require(_0x550a('0x0'));var util=require(_0x550a('0x1'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x550a('0x2'));var fs=require('fs');var path=require('path');var rimraf=require(_0x550a('0x3'));var config=require(_0x550a('0x4'));var attributes=require(_0x550a('0x5'));module[_0x550a('0x6')]=function(_0x402f66,_0x3b3c29){return _0x402f66[_0x550a('0x7')](_0x550a('0x8'),attributes,{'tableName':_0x550a('0x9'),'paranoid':!![],'indexes':[{'name':_0x550a('0xa'),'fields':[_0x550a('0xa')]},{'name':_0x550a('0xb'),'fields':[_0x550a('0xc'),'lastName',_0x550a('0xa'),_0x550a('0xd'),_0x550a('0xe'),_0x550a('0xf')],'type':_0x550a('0x10')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x2ab760,_0x58689c,_0xa6bce5){var _0x2681be=_0x402f66[_0x550a('0x11')];var _0x16b5ba=_0x2ab760[_0x550a('0x12')]({'plain':!![]});function _0x38b9fe(){return function(_0x1fea00){logger[_0x550a('0x13')]('cmContact',_0x550a('0x14'),util['inspect'](_0x1fea00,{'showHidden':![],'depth':null}));};}var _0x535eab=function(_0x1c602a){return new BPromise(function(_0x1c2e7a,_0x4aee75){_0x2681be[_0x550a('0x15')]['findOne']({'where':{'phone':_0x16b5ba[_0x550a('0xa')],'VoiceQueueId':_0x1c602a['id']}})['then'](function(_0x2a9f66){if(!_[_0x550a('0x16')](_0x2a9f66)){throw new Error(_0x550a('0x17')+_0x16b5ba[_0x550a('0xa')]+_0x550a('0x18')+_0x1c602a['id']);}return _0x2681be[_0x550a('0x15')]['create']({'phone':_0x16b5ba[_0x550a('0xa')],'ContactId':_0x16b5ba['id'],'ListId':_0x16b5ba['ListId'],'priority':_0x16b5ba[_0x550a('0x19')]?_0x16b5ba[_0x550a('0x19')]:0x2,'scheduledat':_0x16b5ba[_0x550a('0x1a')]?_0x16b5ba[_0x550a('0x1a')]:moment()[_0x550a('0x1b')]('YYYY-MM-DD\x20HH:mm:ss'),'callback':_0x16b5ba[_0x550a('0x1c')]?!![]:![],'callbackuniqueid':_0x16b5ba[_0x550a('0x1c')]?_0x16b5ba[_0x550a('0x1c')]:undefined,'callbackat':_0x16b5ba[_0x550a('0x1c')]?moment()[_0x550a('0x1b')](_0x550a('0x1d')):undefined,'VoiceQueueId':_0x1c602a['id']});})[_0x550a('0x1e')](function(_0xb1b040){_0x4aee75(_0xb1b040);});});};var _0x3d1c2d=function(_0x1fcf3b){return new BPromise(function(_0x4c550d,_0x43621f){_0x2681be[_0x550a('0x15')][_0x550a('0x1f')]({'where':{'phone':_0x16b5ba['phone'],'VoiceQueueId':_0x1fcf3b['id']}})[_0x550a('0x20')](function(_0x18aa4b){if(!_['isNil'](_0x18aa4b)){throw new Error(_0x550a('0x17')+_0x16b5ba['phone']+'\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopper\x20VoiceQueue\x20'+_0x1fcf3b['id']);}return _0x2681be[_0x550a('0x21')]['findOne']({'where':{'calleridnum':_0x16b5ba[_0x550a('0xa')],'VoiceQueueId':_0x1fcf3b['id']}});})['then'](function(_0x4893ec){if(!_[_0x550a('0x16')](_0x4893ec)){throw new Error(_0x550a('0x22')+_0x16b5ba[_0x550a('0xa')]+_0x550a('0x23')+_0x1fcf3b['id']);}return _0x2681be[_0x550a('0x15')][_0x550a('0x24')]({'phone':_0x16b5ba[_0x550a('0xa')],'ContactId':_0x16b5ba['id'],'ListId':_0x16b5ba[_0x550a('0x25')],'priority':_0x16b5ba['priority']?_0x16b5ba['priority']:0x2,'scheduledat':_0x16b5ba[_0x550a('0x1a')]?_0x16b5ba[_0x550a('0x1a')]:moment()[_0x550a('0x1b')]('YYYY-MM-DD\x20HH:mm:ss'),'callback':_0x16b5ba[_0x550a('0x1c')]?!![]:![],'callbackuniqueid':_0x16b5ba['callbackUniqueid']?_0x16b5ba[_0x550a('0x1c')]:undefined,'callbackat':_0x16b5ba[_0x550a('0x1c')]?moment()[_0x550a('0x1b')](_0x550a('0x1d')):undefined,'VoiceQueueId':_0x1fcf3b['id']});})[_0x550a('0x1e')](function(_0x34db1d){_0x43621f(_0x34db1d);});});};function _0x25da1e(){return function(_0x12d6b0){logger[_0x550a('0x13')](_0x550a('0x26'),_0x550a('0x14'),util['inspect'](_0x12d6b0,{'showHidden':![],'depth':null}));};}var _0x17ff06=function(_0x2c48bb){return new BPromise(function(_0x5a60f6,_0xef7c77){_0x2681be[_0x550a('0x15')]['findOne']({'where':{'phone':_0x16b5ba[_0x550a('0xa')],'CampaignId':_0x2c48bb['id']}})['then'](function(_0xfbfd4f){if(!_[_0x550a('0x16')](_0xfbfd4f)){throw new Error(_0x550a('0x17')+_0x16b5ba['phone']+_0x550a('0x27')+_0x2c48bb['id']);}return _0x2681be['CmHopper'][_0x550a('0x24')]({'phone':_0x16b5ba[_0x550a('0xa')],'ContactId':_0x16b5ba['id'],'ListId':_0x16b5ba[_0x550a('0x25')],'priority':_0x16b5ba[_0x550a('0x19')]?_0x16b5ba[_0x550a('0x19')]:0x2,'scheduledat':_0x16b5ba[_0x550a('0x1a')]?_0x16b5ba[_0x550a('0x1a')]:moment()[_0x550a('0x1b')](_0x550a('0x1d')),'callback':_0x16b5ba[_0x550a('0x1c')]?!![]:![],'callbackuniqueid':_0x16b5ba[_0x550a('0x1c')]?_0x16b5ba[_0x550a('0x1c')]:undefined,'callbackat':_0x16b5ba[_0x550a('0x1c')]?moment()[_0x550a('0x1b')]('YYYY-MM-DD\x20HH:mm:ss'):undefined,'CampaignId':_0x2c48bb['id']});})[_0x550a('0x1e')](function(_0x57e28c){_0xef7c77(_0x57e28c);});});};var _0x349a9b=function(_0x2b9208){return new BPromise(function(_0x3c26f9,_0x5cd75d){_0x2681be['CmHopper']['findOne']({'where':{'phone':_0x16b5ba[_0x550a('0xa')],'CampaignId':_0x2b9208['id']}})['then'](function(_0x3a07a9){if(!_[_0x550a('0x16')](_0x3a07a9)){throw new Error(_0x550a('0x17')+_0x16b5ba['phone']+_0x550a('0x28')+_0x2b9208['id']);}return _0x2681be[_0x550a('0x21')][_0x550a('0x1f')]({'where':{'calleridnum':_0x16b5ba[_0x550a('0xa')],'CampaignId':_0x2b9208['id']}});})[_0x550a('0x20')](function(_0x43c59d){if(!_[_0x550a('0x16')](_0x43c59d)){throw new Error('cmContact,\x20afterCreate,\x20'+_0x16b5ba[_0x550a('0xa')]+'\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20Campaign\x20'+_0x2b9208['id']);}return _0x2681be['CmHopper'][_0x550a('0x24')]({'phone':_0x16b5ba['phone'],'ContactId':_0x16b5ba['id'],'ListId':_0x16b5ba[_0x550a('0x25')],'priority':_0x16b5ba['priority']?_0x16b5ba['priority']:0x2,'scheduledat':_0x16b5ba[_0x550a('0x1a')]?_0x16b5ba[_0x550a('0x1a')]:moment()[_0x550a('0x1b')](_0x550a('0x1d')),'callback':_0x16b5ba[_0x550a('0x1c')]?!![]:![],'callbackuniqueid':_0x16b5ba[_0x550a('0x1c')]?_0x16b5ba[_0x550a('0x1c')]:undefined,'callbackat':_0x16b5ba[_0x550a('0x1c')]?moment()[_0x550a('0x1b')](_0x550a('0x1d')):undefined,'CampaignId':_0x2b9208['id']});})['catch'](function(_0x4aacb4){_0x5cd75d(_0x4aacb4);});});};if(_0x16b5ba[_0x550a('0x25')]){_0x2681be[_0x550a('0x29')]['findAll']({'where':{'type':_0x550a('0x2a')},'attributes':['id',_0x550a('0x2b')],'include':[{'model':_0x2681be[_0x550a('0x2c')],'as':_0x550a('0x2d'),'where':{'id':_0x16b5ba[_0x550a('0x25')]}}]})[_0x550a('0x20')](function(_0x375489){if(_0x375489){var _0xc48e4e=[];for(var _0x5396b8=0x0,_0x490322;_0x5396b8<_0x375489[_0x550a('0x2e')];_0x5396b8+=0x1){_0x490322=_0x375489[_0x5396b8]['get']({'plain':!![]});switch(_0x490322[_0x550a('0x2b')]){case _0x550a('0x2f'):_0x3d1c2d(_0x490322)['catch'](_0x38b9fe());break;case _0x550a('0x30'):_0x535eab(_0x490322)['catch'](_0x38b9fe());break;default:_0x2681be[_0x550a('0x15')][_0x550a('0x24')]({'phone':_0x16b5ba['phone'],'ContactId':_0x16b5ba['id'],'ListId':_0x16b5ba[_0x550a('0x25')],'scheduledat':_0x16b5ba[_0x550a('0x1a')]?_0x16b5ba[_0x550a('0x1a')]:moment()['format'](_0x550a('0x1d')),'priority':_0x16b5ba[_0x550a('0x19')]?_0x16b5ba[_0x550a('0x19')]:0x2,'callback':_0x16b5ba[_0x550a('0x1c')]?!![]:![],'callbackuniqueid':_0x16b5ba['callbackUniqueid']?_0x16b5ba[_0x550a('0x1c')]:undefined,'callbackat':_0x16b5ba[_0x550a('0x1c')]?moment()[_0x550a('0x1b')]('YYYY-MM-DD\x20HH:mm:ss'):undefined,'VoiceQueueId':_0x490322['id']})[_0x550a('0x1e')](_0x38b9fe());}}}})['then'](function(){return _0x2681be['VoiceQueue']['findAll']({'where':{'type':_0x550a('0x2a')},'attributes':['id'],'include':[{'model':_0x2681be[_0x550a('0x2c')],'as':_0x550a('0x31'),'where':{'id':_0x16b5ba[_0x550a('0x25')]}}]})[_0x550a('0x20')](function(_0x299e36){if(_0x299e36){var _0x53f97f=[];for(var _0x9ebba0=0x0,_0x70a0f2;_0x9ebba0<_0x299e36['length'];_0x9ebba0+=0x1){_0x70a0f2=_0x299e36[_0x9ebba0][_0x550a('0x12')]({'plain':!![]});_0x2681be['CmHopperBlack'][_0x550a('0x24')]({'phone':_0x16b5ba[_0x550a('0xa')],'ContactId':_0x16b5ba['id'],'ListId':_0x16b5ba[_0x550a('0x25')],'VoiceQueueId':_0x70a0f2['id']})[_0x550a('0x1e')](function(_0x15d32c){logger[_0x550a('0x13')](_0x550a('0x32'),'afterCreate',_0x15d32c[_0x550a('0x33')]);});}}});})['then'](function(){return _0x2681be[_0x550a('0x34')]['findAll']({'attributes':['id',_0x550a('0x2b')],'include':[{'model':_0x2681be[_0x550a('0x2c')],'as':_0x550a('0x2d'),'where':{'id':_0x16b5ba[_0x550a('0x25')]}}]})[_0x550a('0x20')](function(_0x5e41a1){if(_0x5e41a1){var _0x22abf6=[];for(var _0x2b4e09=0x0,_0x5bc902;_0x2b4e09<_0x5e41a1['length'];_0x2b4e09+=0x1){_0x5bc902=_0x5e41a1[_0x2b4e09]['get']({'plain':!![]});switch(_0x5bc902[_0x550a('0x2b')]){case _0x550a('0x2f'):_0x349a9b(_0x5bc902)[_0x550a('0x1e')](_0x25da1e());break;case'onlyIfOpen':_0x17ff06(_0x5bc902)[_0x550a('0x1e')](_0x25da1e());break;default:_0x2681be[_0x550a('0x15')][_0x550a('0x24')]({'phone':_0x16b5ba[_0x550a('0xa')],'ContactId':_0x16b5ba['id'],'ListId':_0x16b5ba[_0x550a('0x25')],'scheduledat':_0x16b5ba[_0x550a('0x1a')]?_0x16b5ba[_0x550a('0x1a')]:moment()[_0x550a('0x1b')]('YYYY-MM-DD\x20HH:mm:ss'),'priority':_0x16b5ba[_0x550a('0x19')]?_0x16b5ba[_0x550a('0x19')]:0x2,'callback':_0x16b5ba[_0x550a('0x1c')]?!![]:![],'callbackuniqueid':_0x16b5ba['callbackUniqueid']?_0x16b5ba[_0x550a('0x1c')]:undefined,'callbackat':_0x16b5ba[_0x550a('0x1c')]?moment()[_0x550a('0x1b')](_0x550a('0x1d')):undefined,'CampaignId':_0x5bc902['id']})['catch'](_0x25da1e());}}}});})['then'](function(){return _0x2681be['Campaign'][_0x550a('0x35')]({'attributes':['id'],'include':[{'model':_0x2681be['CmList'],'as':_0x550a('0x31'),'where':{'id':_0x16b5ba['ListId']}}]})[_0x550a('0x20')](function(_0x838a68){if(_0x838a68){var _0x5833d0=[];for(var _0x4797e6=0x0,_0xb651a8;_0x4797e6<_0x838a68['length'];_0x4797e6+=0x1){_0xb651a8=_0x838a68[_0x4797e6][_0x550a('0x12')]({'plain':!![]});_0x2681be[_0x550a('0x36')][_0x550a('0x24')]({'phone':_0x16b5ba[_0x550a('0xa')],'ContactId':_0x16b5ba['id'],'ListId':_0x16b5ba[_0x550a('0x25')],'CampaignId':_0xb651a8['id']})['catch'](function(_0x19f0c3){logger[_0x550a('0x13')](_0x550a('0x32'),_0x550a('0x14'),_0x19f0c3[_0x550a('0x33')]);});}}});})[_0x550a('0x20')](function(){_0xa6bce5();})['catch'](function(_0xf164ca){logger['error']('cmContact,\x20%s,\x20%s',_0x550a('0x14'),_0xf164ca['message']);_0xa6bce5(_0xf164ca);});}else{_0xa6bce5(new Error('List\x20not\x20found'));}},'afterDestroy':function(_0x35ac27,_0x1a5c99,_0x4858d5){var _0x342999=_0x402f66[_0x550a('0x11')];var _0x507a29=_0x35ac27['get']({'plain':!![]});return _0x342999[_0x550a('0x15')]['findAll']({'raw':!![],'where':{'ListId':_0x507a29[_0x550a('0x25')],'ContactId':_0x507a29['id']}})[_0x550a('0x20')](function(_0x514639){if(!_['isEmpty'](_0x514639)){var _0x3f5c91=[];for(var _0x13e45f=0x0;_0x13e45f<_0x514639[_0x550a('0x2e')];_0x13e45f+=0x1){var _0x79a8eb=_0x342999[_0x550a('0x15')][_0x550a('0x37')]({'where':{'ListId':_0x514639[_0x13e45f]['ListId'],'ContactId':_0x514639[_0x13e45f][_0x550a('0x38')],'VoiceQueueId':_0x514639[_0x13e45f][_0x550a('0x39')],'CampaignId':_0x514639[_0x13e45f][_0x550a('0x3a')]}});_0x3f5c91['push'](_0x79a8eb);}return BPromise['all'](_0x3f5c91);}})[_0x550a('0x20')](function(_0x3f29a1){logger[_0x550a('0x3b')](_0x550a('0x3c'),util[_0x550a('0x3d')](_0x3f29a1,{'showHidden':![],'depth':null}));_0x4858d5();})[_0x550a('0x1e')](function(_0x44344e){logger[_0x550a('0x13')](_0x550a('0x3e'),util[_0x550a('0x3d')](_0x44344e,{'showHidden':![],'depth':null}));_0x4858d5(_0x44344e);});}}});};