426d94def7d00f249e0c40939dc99cbb763bdeb3
[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 _0x1a44=['api','moment','bluebird','request-promise','path','rimraf','./cmContact.attributes','exports','cm_contacts','phone','fti_cm_contacts','firstName','mobile','fax','email','FULLTEXT','models','get','error','afterCreate','inspect','CmHopper','findOne','cmContact,\x20afterCreate\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20VoiceQueue\x20','create','ListId','priority','scheduledat','YYYY-MM-DD\x20HH:mm:ss','callbackUniqueid','format','catch','then','isNil','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopper\x20VoiceQueue\x20','CmHopperFinal','cmContact,\x20afterCreate,\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','Lists','length','dialCheckDuplicateType','outbound','CmList','BlackLists','CmHopperBlack','always','onlyIfOpen','Campaign','message','cmContact,\x20%s,\x20%s','isEmpty','destroy','ContactId','CampaignId','all','info','[CmContact][afterDestroy][Succesfull]','[CmContact][afterDestroy][Error]','lodash','../../config/logger'];(function(_0x58b30c,_0x233cf7){var _0x3ffa93=function(_0x143c3d){while(--_0x143c3d){_0x58b30c['push'](_0x58b30c['shift']());}};_0x3ffa93(++_0x233cf7);}(_0x1a44,0xc4));var _0x41a4=function(_0x56a003,_0x3dd2d7){_0x56a003=_0x56a003-0x0;var _0x4877c7=_0x1a44[_0x56a003];return _0x4877c7;};'use strict';var _=require(_0x41a4('0x0'));var util=require('util');var logger=require(_0x41a4('0x1'))(_0x41a4('0x2'));var moment=require(_0x41a4('0x3'));var BPromise=require(_0x41a4('0x4'));var rp=require(_0x41a4('0x5'));var fs=require('fs');var path=require(_0x41a4('0x6'));var rimraf=require(_0x41a4('0x7'));var config=require('../../config/environment');var attributes=require(_0x41a4('0x8'));module[_0x41a4('0x9')]=function(_0xb62f3c,_0x412bd8){return _0xb62f3c['define']('CmContact',attributes,{'tableName':_0x41a4('0xa'),'paranoid':!![],'indexes':[{'name':_0x41a4('0xb'),'fields':[_0x41a4('0xb')]},{'name':_0x41a4('0xc'),'fields':[_0x41a4('0xd'),'lastName','phone',_0x41a4('0xe'),_0x41a4('0xf'),_0x41a4('0x10')],'type':_0x41a4('0x11')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x469c81,_0x3e5320,_0x4fb927){var _0x433efe=_0xb62f3c[_0x41a4('0x12')];var _0x2e2e16=_0x469c81[_0x41a4('0x13')]({'plain':!![]});function _0x523552(){return function(_0x3c07a4){logger[_0x41a4('0x14')]('cmContact',_0x41a4('0x15'),util[_0x41a4('0x16')](_0x3c07a4,{'showHidden':![],'depth':null}));};}var _0x4d8a26=function(_0x59a178){return new BPromise(function(_0xb4c27e,_0x25acc1){_0x433efe[_0x41a4('0x17')][_0x41a4('0x18')]({'where':{'phone':_0x2e2e16[_0x41a4('0xb')],'VoiceQueueId':_0x59a178['id']}})['then'](function(_0x4f7967){if(!_['isNil'](_0x4f7967)){throw new Error(_0x41a4('0x19')+_0x2e2e16[_0x41a4('0xb')]+_0x41a4('0x1a')+_0x59a178['id']);}return _0x433efe[_0x41a4('0x17')][_0x41a4('0x1b')]({'phone':_0x2e2e16[_0x41a4('0xb')],'ContactId':_0x2e2e16['id'],'ListId':_0x2e2e16[_0x41a4('0x1c')],'priority':_0x2e2e16[_0x41a4('0x1d')]?_0x2e2e16[_0x41a4('0x1d')]:0x2,'scheduledat':_0x2e2e16[_0x41a4('0x1e')]?_0x2e2e16[_0x41a4('0x1e')]:moment()['format'](_0x41a4('0x1f')),'callback':_0x2e2e16[_0x41a4('0x20')]?!![]:![],'callbackuniqueid':_0x2e2e16[_0x41a4('0x20')]?_0x2e2e16['callbackUniqueid']:undefined,'callbackat':_0x2e2e16[_0x41a4('0x20')]?moment()[_0x41a4('0x21')](_0x41a4('0x1f')):undefined,'VoiceQueueId':_0x59a178['id']});})[_0x41a4('0x22')](function(_0x5c1e37){_0x25acc1(_0x5c1e37);});});};var _0x12d552=function(_0x8c1da5){return new BPromise(function(_0x4b86be,_0x110a18){_0x433efe['CmHopper'][_0x41a4('0x18')]({'where':{'phone':_0x2e2e16[_0x41a4('0xb')],'VoiceQueueId':_0x8c1da5['id']}})[_0x41a4('0x23')](function(_0x18e3dd){if(!_[_0x41a4('0x24')](_0x18e3dd)){throw new Error(_0x41a4('0x19')+_0x2e2e16[_0x41a4('0xb')]+_0x41a4('0x25')+_0x8c1da5['id']);}return _0x433efe[_0x41a4('0x26')][_0x41a4('0x18')]({'where':{'calleridnum':_0x2e2e16[_0x41a4('0xb')],'VoiceQueueId':_0x8c1da5['id']}});})[_0x41a4('0x23')](function(_0x4b4c22){if(!_[_0x41a4('0x24')](_0x4b4c22)){throw new Error(_0x41a4('0x27')+_0x2e2e16[_0x41a4('0xb')]+'\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20VoiceQueue\x20'+_0x8c1da5['id']);}return _0x433efe[_0x41a4('0x17')][_0x41a4('0x1b')]({'phone':_0x2e2e16[_0x41a4('0xb')],'ContactId':_0x2e2e16['id'],'ListId':_0x2e2e16[_0x41a4('0x1c')],'priority':_0x2e2e16['priority']?_0x2e2e16[_0x41a4('0x1d')]:0x2,'scheduledat':_0x2e2e16['scheduledat']?_0x2e2e16[_0x41a4('0x1e')]:moment()[_0x41a4('0x21')](_0x41a4('0x1f')),'callback':_0x2e2e16['callbackUniqueid']?!![]:![],'callbackuniqueid':_0x2e2e16[_0x41a4('0x20')]?_0x2e2e16[_0x41a4('0x20')]:undefined,'callbackat':_0x2e2e16[_0x41a4('0x20')]?moment()[_0x41a4('0x21')](_0x41a4('0x1f')):undefined,'VoiceQueueId':_0x8c1da5['id']});})[_0x41a4('0x22')](function(_0x1d21d6){_0x110a18(_0x1d21d6);});});};function _0x2b9f5b(){return function(_0x288a63){logger['error'](_0x41a4('0x28'),_0x41a4('0x15'),util['inspect'](_0x288a63,{'showHidden':![],'depth':null}));};}var _0x5c092c=function(_0x105b1){return new BPromise(function(_0x959f80,_0x5efed5){_0x433efe[_0x41a4('0x17')][_0x41a4('0x18')]({'where':{'phone':_0x2e2e16[_0x41a4('0xb')],'CampaignId':_0x105b1['id']}})[_0x41a4('0x23')](function(_0x3afe71){if(!_[_0x41a4('0x24')](_0x3afe71)){throw new Error(_0x41a4('0x19')+_0x2e2e16[_0x41a4('0xb')]+_0x41a4('0x29')+_0x105b1['id']);}return _0x433efe[_0x41a4('0x17')]['create']({'phone':_0x2e2e16[_0x41a4('0xb')],'ContactId':_0x2e2e16['id'],'ListId':_0x2e2e16[_0x41a4('0x1c')],'priority':_0x2e2e16[_0x41a4('0x1d')]?_0x2e2e16[_0x41a4('0x1d')]:0x2,'scheduledat':_0x2e2e16[_0x41a4('0x1e')]?_0x2e2e16[_0x41a4('0x1e')]:moment()[_0x41a4('0x21')](_0x41a4('0x1f')),'callback':_0x2e2e16[_0x41a4('0x20')]?!![]:![],'callbackuniqueid':_0x2e2e16['callbackUniqueid']?_0x2e2e16[_0x41a4('0x20')]:undefined,'callbackat':_0x2e2e16['callbackUniqueid']?moment()[_0x41a4('0x21')](_0x41a4('0x1f')):undefined,'CampaignId':_0x105b1['id']});})[_0x41a4('0x22')](function(_0x19f4e8){_0x5efed5(_0x19f4e8);});});};var _0x390899=function(_0xead523){return new BPromise(function(_0x226b07,_0x5edb88){_0x433efe['CmHopper']['findOne']({'where':{'phone':_0x2e2e16['phone'],'CampaignId':_0xead523['id']}})[_0x41a4('0x23')](function(_0x1d3ef0){if(!_[_0x41a4('0x24')](_0x1d3ef0)){throw new Error(_0x41a4('0x19')+_0x2e2e16['phone']+_0x41a4('0x2a')+_0xead523['id']);}return _0x433efe[_0x41a4('0x26')][_0x41a4('0x18')]({'where':{'calleridnum':_0x2e2e16[_0x41a4('0xb')],'CampaignId':_0xead523['id']}});})[_0x41a4('0x23')](function(_0x35f679){if(!_[_0x41a4('0x24')](_0x35f679)){throw new Error('cmContact,\x20afterCreate,\x20'+_0x2e2e16[_0x41a4('0xb')]+_0x41a4('0x2b')+_0xead523['id']);}return _0x433efe[_0x41a4('0x17')][_0x41a4('0x1b')]({'phone':_0x2e2e16['phone'],'ContactId':_0x2e2e16['id'],'ListId':_0x2e2e16['ListId'],'priority':_0x2e2e16['priority']?_0x2e2e16[_0x41a4('0x1d')]:0x2,'scheduledat':_0x2e2e16[_0x41a4('0x1e')]?_0x2e2e16[_0x41a4('0x1e')]:moment()[_0x41a4('0x21')](_0x41a4('0x1f')),'callback':_0x2e2e16['callbackUniqueid']?!![]:![],'callbackuniqueid':_0x2e2e16[_0x41a4('0x20')]?_0x2e2e16[_0x41a4('0x20')]:undefined,'callbackat':_0x2e2e16['callbackUniqueid']?moment()[_0x41a4('0x21')](_0x41a4('0x1f')):undefined,'CampaignId':_0xead523['id']});})[_0x41a4('0x22')](function(_0x183c6c){_0x5edb88(_0x183c6c);});});};if(_0x2e2e16[_0x41a4('0x1c')]){_0x433efe[_0x41a4('0x2c')][_0x41a4('0x2d')]({'where':{'type':'outbound'},'attributes':['id','dialCheckDuplicateType'],'include':[{'model':_0x433efe['CmList'],'as':_0x41a4('0x2e'),'where':{'id':_0x2e2e16[_0x41a4('0x1c')]}}]})[_0x41a4('0x23')](function(_0x1f47ff){if(_0x1f47ff){var _0x860c3=[];for(var _0x53972d=0x0,_0x417059;_0x53972d<_0x1f47ff[_0x41a4('0x2f')];_0x53972d+=0x1){_0x417059=_0x1f47ff[_0x53972d]['get']({'plain':!![]});switch(_0x417059[_0x41a4('0x30')]){case'always':_0x12d552(_0x417059)[_0x41a4('0x22')](_0x523552());break;case'onlyIfOpen':_0x4d8a26(_0x417059)[_0x41a4('0x22')](_0x523552());break;default:_0x433efe[_0x41a4('0x17')][_0x41a4('0x1b')]({'phone':_0x2e2e16[_0x41a4('0xb')],'ContactId':_0x2e2e16['id'],'ListId':_0x2e2e16['ListId'],'scheduledat':_0x2e2e16[_0x41a4('0x1e')]?_0x2e2e16[_0x41a4('0x1e')]:moment()[_0x41a4('0x21')](_0x41a4('0x1f')),'priority':_0x2e2e16[_0x41a4('0x1d')]?_0x2e2e16['priority']:0x2,'callback':_0x2e2e16[_0x41a4('0x20')]?!![]:![],'callbackuniqueid':_0x2e2e16[_0x41a4('0x20')]?_0x2e2e16[_0x41a4('0x20')]:undefined,'callbackat':_0x2e2e16[_0x41a4('0x20')]?moment()[_0x41a4('0x21')](_0x41a4('0x1f')):undefined,'VoiceQueueId':_0x417059['id']})['catch'](_0x523552());}}}})[_0x41a4('0x23')](function(){return _0x433efe[_0x41a4('0x2c')][_0x41a4('0x2d')]({'where':{'type':_0x41a4('0x31')},'attributes':['id'],'include':[{'model':_0x433efe[_0x41a4('0x32')],'as':_0x41a4('0x33'),'where':{'id':_0x2e2e16[_0x41a4('0x1c')]}}]})[_0x41a4('0x23')](function(_0x4752eb){if(_0x4752eb){var _0x5598bc=[];for(var _0x242dcc=0x0,_0x31e585;_0x242dcc<_0x4752eb['length'];_0x242dcc+=0x1){_0x31e585=_0x4752eb[_0x242dcc]['get']({'plain':!![]});_0x433efe[_0x41a4('0x34')][_0x41a4('0x1b')]({'phone':_0x2e2e16['phone'],'ContactId':_0x2e2e16['id'],'ListId':_0x2e2e16['ListId'],'VoiceQueueId':_0x31e585['id']})[_0x41a4('0x22')](function(_0x5ab9a6){logger[_0x41a4('0x14')]('cmContact,\x20%s,\x20%s',_0x41a4('0x15'),_0x5ab9a6['message']);});}}});})[_0x41a4('0x23')](function(){return _0x433efe['Campaign'][_0x41a4('0x2d')]({'attributes':['id','dialCheckDuplicateType'],'include':[{'model':_0x433efe[_0x41a4('0x32')],'as':_0x41a4('0x2e'),'where':{'id':_0x2e2e16[_0x41a4('0x1c')]}}]})['then'](function(_0xc3a52e){if(_0xc3a52e){var _0x57b943=[];for(var _0x5b909e=0x0,_0x53908a;_0x5b909e<_0xc3a52e[_0x41a4('0x2f')];_0x5b909e+=0x1){_0x53908a=_0xc3a52e[_0x5b909e][_0x41a4('0x13')]({'plain':!![]});switch(_0x53908a[_0x41a4('0x30')]){case _0x41a4('0x35'):_0x390899(_0x53908a)[_0x41a4('0x22')](_0x2b9f5b());break;case _0x41a4('0x36'):_0x5c092c(_0x53908a)[_0x41a4('0x22')](_0x2b9f5b());break;default:_0x433efe[_0x41a4('0x17')]['create']({'phone':_0x2e2e16[_0x41a4('0xb')],'ContactId':_0x2e2e16['id'],'ListId':_0x2e2e16['ListId'],'scheduledat':_0x2e2e16[_0x41a4('0x1e')]?_0x2e2e16[_0x41a4('0x1e')]:moment()[_0x41a4('0x21')](_0x41a4('0x1f')),'priority':_0x2e2e16[_0x41a4('0x1d')]?_0x2e2e16[_0x41a4('0x1d')]:0x2,'callback':_0x2e2e16[_0x41a4('0x20')]?!![]:![],'callbackuniqueid':_0x2e2e16['callbackUniqueid']?_0x2e2e16[_0x41a4('0x20')]:undefined,'callbackat':_0x2e2e16['callbackUniqueid']?moment()[_0x41a4('0x21')]('YYYY-MM-DD\x20HH:mm:ss'):undefined,'CampaignId':_0x53908a['id']})[_0x41a4('0x22')](_0x2b9f5b());}}}});})[_0x41a4('0x23')](function(){return _0x433efe[_0x41a4('0x37')][_0x41a4('0x2d')]({'attributes':['id'],'include':[{'model':_0x433efe['CmList'],'as':'BlackLists','where':{'id':_0x2e2e16['ListId']}}]})[_0x41a4('0x23')](function(_0x584f7c){if(_0x584f7c){var _0x3f4fbe=[];for(var _0x34d65f=0x0,_0x18fa1e;_0x34d65f<_0x584f7c[_0x41a4('0x2f')];_0x34d65f+=0x1){_0x18fa1e=_0x584f7c[_0x34d65f][_0x41a4('0x13')]({'plain':!![]});_0x433efe['CmHopperBlack']['create']({'phone':_0x2e2e16[_0x41a4('0xb')],'ContactId':_0x2e2e16['id'],'ListId':_0x2e2e16['ListId'],'CampaignId':_0x18fa1e['id']})['catch'](function(_0x3641bf){logger[_0x41a4('0x14')]('cmContact,\x20%s,\x20%s','afterCreate',_0x3641bf[_0x41a4('0x38')]);});}}});})['then'](function(){_0x4fb927();})[_0x41a4('0x22')](function(_0x2957a5){logger[_0x41a4('0x14')](_0x41a4('0x39'),_0x41a4('0x15'),_0x2957a5[_0x41a4('0x38')]);_0x4fb927(_0x2957a5);});}else{_0x4fb927(new Error('List\x20not\x20found'));}},'afterDestroy':function(_0x40e667,_0x52a3e5,_0x4f7032){var _0x7ae50f=_0xb62f3c[_0x41a4('0x12')];var _0x1821d3=_0x40e667[_0x41a4('0x13')]({'plain':!![]});return _0x7ae50f[_0x41a4('0x17')]['findAll']({'raw':!![],'where':{'ListId':_0x1821d3[_0x41a4('0x1c')],'ContactId':_0x1821d3['id']}})[_0x41a4('0x23')](function(_0x40c8be){if(!_[_0x41a4('0x3a')](_0x40c8be)){var _0x5aa927=[];for(var _0x28c5f2=0x0;_0x28c5f2<_0x40c8be[_0x41a4('0x2f')];_0x28c5f2+=0x1){var _0x3db95d=_0x7ae50f[_0x41a4('0x17')][_0x41a4('0x3b')]({'where':{'ListId':_0x40c8be[_0x28c5f2][_0x41a4('0x1c')],'ContactId':_0x40c8be[_0x28c5f2][_0x41a4('0x3c')],'VoiceQueueId':_0x40c8be[_0x28c5f2]['VoiceQueueId'],'CampaignId':_0x40c8be[_0x28c5f2][_0x41a4('0x3d')]}});_0x5aa927['push'](_0x3db95d);}return BPromise[_0x41a4('0x3e')](_0x5aa927);}})['then'](function(_0x215293){logger[_0x41a4('0x3f')](_0x41a4('0x40'),util[_0x41a4('0x16')](_0x215293,{'showHidden':![],'depth':null}));_0x4f7032();})[_0x41a4('0x22')](function(_0x2d8c0c){logger[_0x41a4('0x14')](_0x41a4('0x41'),util[_0x41a4('0x16')](_0x2d8c0c,{'showHidden':![],'depth':null}));_0x4f7032(_0x2d8c0c);});}}});};