2e5c0f7062e8f48aecc09e425c70df00dfc17218
[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 _0x8325=['inspect','CmHopper','then','cmContact,\x20afterCreate\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20VoiceQueue\x20','create','ListId','priority','scheduledat','format','callbackUniqueid','isNil','findOne','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20VoiceQueue\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20Campaign\x20','YYYY-MM-DD\x20HH:mm:ss','catch','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopper\x20Campaign\x20','cmContact,\x20afterCreate,\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20Campaign\x20','VoiceQueue','findAll','outbound','CmList','Lists','length','dialCheckDuplicateType','always','CmHopperBlack','cmContact,\x20%s,\x20%s','onlyIfOpen','Campaign','BlackLists','message','List\x20not\x20found','destroy','ContactId','VoiceQueueId','push','all','[CmContact][afterDestroy][Succesfull]','[CmContact][afterDestroy][Error]','lodash','../../config/logger','moment','request-promise','path','rimraf','../../config/environment','define','CmContact','cm_contacts','phone','fti_cm_contacts','firstName','lastName','mobile','fax','email','FULLTEXT','models','get','error','cmContact','afterCreate'];(function(_0x209d2a,_0x59a302){var _0x2d2a4a=function(_0x4d5084){while(--_0x4d5084){_0x209d2a['push'](_0x209d2a['shift']());}};_0x2d2a4a(++_0x59a302);}(_0x8325,0x1f1));var _0x5832=function(_0x8ad41c,_0x28d6b){_0x8ad41c=_0x8ad41c-0x0;var _0x3ca8cd=_0x8325[_0x8ad41c];return _0x3ca8cd;};'use strict';var _=require(_0x5832('0x0'));var util=require('util');var logger=require(_0x5832('0x1'))('api');var moment=require(_0x5832('0x2'));var BPromise=require('bluebird');var rp=require(_0x5832('0x3'));var fs=require('fs');var path=require(_0x5832('0x4'));var rimraf=require(_0x5832('0x5'));var config=require(_0x5832('0x6'));var attributes=require('./cmContact.attributes');module['exports']=function(_0x1c40ca,_0x2c7977){return _0x1c40ca[_0x5832('0x7')](_0x5832('0x8'),attributes,{'tableName':_0x5832('0x9'),'paranoid':!![],'indexes':[{'name':_0x5832('0xa'),'fields':['phone']},{'name':_0x5832('0xb'),'fields':[_0x5832('0xc'),_0x5832('0xd'),_0x5832('0xa'),_0x5832('0xe'),_0x5832('0xf'),_0x5832('0x10')],'type':_0x5832('0x11')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x3a851d,_0x515dc9,_0x5b8ed3){var _0x232487=_0x1c40ca[_0x5832('0x12')];var _0x177978=_0x3a851d[_0x5832('0x13')]({'plain':!![]});function _0x56448f(){return function(_0x52aeb3){logger[_0x5832('0x14')](_0x5832('0x15'),_0x5832('0x16'),util[_0x5832('0x17')](_0x52aeb3,{'showHidden':![],'depth':null}));};}var _0x5a2001=function(_0x2a3937){return new BPromise(function(_0x5da119,_0x2afa3a){_0x232487[_0x5832('0x18')]['findOne']({'where':{'phone':_0x177978[_0x5832('0xa')],'VoiceQueueId':_0x2a3937['id']}})[_0x5832('0x19')](function(_0x34cb4e){if(!_['isNil'](_0x34cb4e)){throw new Error(_0x5832('0x1a')+_0x177978[_0x5832('0xa')]+_0x5832('0x1b')+_0x2a3937['id']);}return _0x232487[_0x5832('0x18')][_0x5832('0x1c')]({'phone':_0x177978[_0x5832('0xa')],'ContactId':_0x177978['id'],'ListId':_0x177978[_0x5832('0x1d')],'priority':_0x177978[_0x5832('0x1e')]?_0x177978[_0x5832('0x1e')]:0x2,'scheduledat':_0x177978[_0x5832('0x1f')]?_0x177978['scheduledat']:moment()[_0x5832('0x20')]('YYYY-MM-DD\x20HH:mm:ss'),'callback':_0x177978['callbackUniqueid']?!![]:![],'callbackuniqueid':_0x177978['callbackUniqueid']?_0x177978[_0x5832('0x21')]:undefined,'callbackat':_0x177978['callbackUniqueid']?moment()['format']('YYYY-MM-DD\x20HH:mm:ss'):undefined,'VoiceQueueId':_0x2a3937['id']});})['catch'](function(_0x31ee04){_0x2afa3a(_0x31ee04);});});};var _0x5b9f75=function(_0x54b0ff){return new BPromise(function(_0xccc33,_0x50e7a4){_0x232487[_0x5832('0x18')]['findOne']({'where':{'phone':_0x177978['phone'],'VoiceQueueId':_0x54b0ff['id']}})['then'](function(_0x388816){if(!_[_0x5832('0x22')](_0x388816)){throw new Error(_0x5832('0x1a')+_0x177978[_0x5832('0xa')]+'\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopper\x20VoiceQueue\x20'+_0x54b0ff['id']);}return _0x232487['CmHopperFinal'][_0x5832('0x23')]({'where':{'calleridnum':_0x177978[_0x5832('0xa')],'VoiceQueueId':_0x54b0ff['id']}});})['then'](function(_0x15aa40){if(!_[_0x5832('0x22')](_0x15aa40)){throw new Error('cmContact,\x20afterCreate,\x20'+_0x177978[_0x5832('0xa')]+_0x5832('0x24')+_0x54b0ff['id']);}return _0x232487[_0x5832('0x18')][_0x5832('0x1c')]({'phone':_0x177978[_0x5832('0xa')],'ContactId':_0x177978['id'],'ListId':_0x177978[_0x5832('0x1d')],'priority':_0x177978[_0x5832('0x1e')]?_0x177978[_0x5832('0x1e')]:0x2,'scheduledat':_0x177978[_0x5832('0x1f')]?_0x177978[_0x5832('0x1f')]:moment()[_0x5832('0x20')]('YYYY-MM-DD\x20HH:mm:ss'),'callback':_0x177978[_0x5832('0x21')]?!![]:![],'callbackuniqueid':_0x177978[_0x5832('0x21')]?_0x177978[_0x5832('0x21')]:undefined,'callbackat':_0x177978['callbackUniqueid']?moment()[_0x5832('0x20')]('YYYY-MM-DD\x20HH:mm:ss'):undefined,'VoiceQueueId':_0x54b0ff['id']});})['catch'](function(_0x227873){_0x50e7a4(_0x227873);});});};function _0x4603d5(){return function(_0x315348){logger[_0x5832('0x14')]('cmContact',_0x5832('0x16'),util['inspect'](_0x315348,{'showHidden':![],'depth':null}));};}var _0x69f14d=function(_0x12c4e1){return new BPromise(function(_0x238bb7,_0x2637cf){_0x232487[_0x5832('0x18')][_0x5832('0x23')]({'where':{'phone':_0x177978['phone'],'CampaignId':_0x12c4e1['id']}})[_0x5832('0x19')](function(_0x5d0cb0){if(!_['isNil'](_0x5d0cb0)){throw new Error(_0x5832('0x1a')+_0x177978[_0x5832('0xa')]+_0x5832('0x25')+_0x12c4e1['id']);}return _0x232487[_0x5832('0x18')][_0x5832('0x1c')]({'phone':_0x177978[_0x5832('0xa')],'ContactId':_0x177978['id'],'ListId':_0x177978[_0x5832('0x1d')],'priority':_0x177978[_0x5832('0x1e')]?_0x177978['priority']:0x2,'scheduledat':_0x177978[_0x5832('0x1f')]?_0x177978['scheduledat']:moment()[_0x5832('0x20')](_0x5832('0x26')),'callback':_0x177978[_0x5832('0x21')]?!![]:![],'callbackuniqueid':_0x177978[_0x5832('0x21')]?_0x177978['callbackUniqueid']:undefined,'callbackat':_0x177978[_0x5832('0x21')]?moment()[_0x5832('0x20')](_0x5832('0x26')):undefined,'CampaignId':_0x12c4e1['id']});})[_0x5832('0x27')](function(_0x3d4718){_0x2637cf(_0x3d4718);});});};var _0x4197c0=function(_0x6261e8){return new BPromise(function(_0x113b1e,_0x567338){_0x232487['CmHopper'][_0x5832('0x23')]({'where':{'phone':_0x177978['phone'],'CampaignId':_0x6261e8['id']}})[_0x5832('0x19')](function(_0x3f47a8){if(!_[_0x5832('0x22')](_0x3f47a8)){throw new Error(_0x5832('0x1a')+_0x177978[_0x5832('0xa')]+_0x5832('0x28')+_0x6261e8['id']);}return _0x232487['CmHopperFinal'][_0x5832('0x23')]({'where':{'calleridnum':_0x177978['phone'],'CampaignId':_0x6261e8['id']}});})['then'](function(_0x48f63c){if(!_[_0x5832('0x22')](_0x48f63c)){throw new Error(_0x5832('0x29')+_0x177978['phone']+_0x5832('0x2a')+_0x6261e8['id']);}return _0x232487[_0x5832('0x18')][_0x5832('0x1c')]({'phone':_0x177978['phone'],'ContactId':_0x177978['id'],'ListId':_0x177978[_0x5832('0x1d')],'priority':_0x177978['priority']?_0x177978[_0x5832('0x1e')]:0x2,'scheduledat':_0x177978[_0x5832('0x1f')]?_0x177978[_0x5832('0x1f')]:moment()[_0x5832('0x20')]('YYYY-MM-DD\x20HH:mm:ss'),'callback':_0x177978[_0x5832('0x21')]?!![]:![],'callbackuniqueid':_0x177978['callbackUniqueid']?_0x177978[_0x5832('0x21')]:undefined,'callbackat':_0x177978[_0x5832('0x21')]?moment()['format'](_0x5832('0x26')):undefined,'CampaignId':_0x6261e8['id']});})['catch'](function(_0x32bc3c){_0x567338(_0x32bc3c);});});};if(_0x177978['ListId']){_0x232487[_0x5832('0x2b')][_0x5832('0x2c')]({'where':{'type':_0x5832('0x2d')},'attributes':['id','dialCheckDuplicateType'],'include':[{'model':_0x232487[_0x5832('0x2e')],'as':_0x5832('0x2f'),'where':{'id':_0x177978[_0x5832('0x1d')]}}]})[_0x5832('0x19')](function(_0x34cd71){if(_0x34cd71){var _0x498f6f=[];for(var _0x1867ac=0x0,_0x1e5900;_0x1867ac<_0x34cd71[_0x5832('0x30')];_0x1867ac+=0x1){_0x1e5900=_0x34cd71[_0x1867ac]['get']({'plain':!![]});switch(_0x1e5900[_0x5832('0x31')]){case _0x5832('0x32'):_0x5b9f75(_0x1e5900)[_0x5832('0x27')](_0x56448f());break;case'onlyIfOpen':_0x5a2001(_0x1e5900)['catch'](_0x56448f());break;default:_0x232487[_0x5832('0x18')][_0x5832('0x1c')]({'phone':_0x177978[_0x5832('0xa')],'ContactId':_0x177978['id'],'ListId':_0x177978[_0x5832('0x1d')],'scheduledat':_0x177978[_0x5832('0x1f')]?_0x177978['scheduledat']:moment()['format'](_0x5832('0x26')),'priority':_0x177978['priority']?_0x177978['priority']:0x2,'callback':_0x177978[_0x5832('0x21')]?!![]:![],'callbackuniqueid':_0x177978['callbackUniqueid']?_0x177978['callbackUniqueid']:undefined,'callbackat':_0x177978[_0x5832('0x21')]?moment()['format'](_0x5832('0x26')):undefined,'VoiceQueueId':_0x1e5900['id']})[_0x5832('0x27')](_0x56448f());}}}})[_0x5832('0x19')](function(){return _0x232487[_0x5832('0x2b')][_0x5832('0x2c')]({'where':{'type':'outbound'},'attributes':['id'],'include':[{'model':_0x232487[_0x5832('0x2e')],'as':'BlackLists','where':{'id':_0x177978[_0x5832('0x1d')]}}]})[_0x5832('0x19')](function(_0x4d3e1f){if(_0x4d3e1f){var _0x28b461=[];for(var _0x26b212=0x0,_0x20a599;_0x26b212<_0x4d3e1f[_0x5832('0x30')];_0x26b212+=0x1){_0x20a599=_0x4d3e1f[_0x26b212][_0x5832('0x13')]({'plain':!![]});_0x232487[_0x5832('0x33')]['create']({'phone':_0x177978['phone'],'ContactId':_0x177978['id'],'ListId':_0x177978[_0x5832('0x1d')],'VoiceQueueId':_0x20a599['id']})[_0x5832('0x27')](function(_0x112764){logger[_0x5832('0x14')](_0x5832('0x34'),_0x5832('0x16'),_0x112764['message']);});}}});})['then'](function(){return _0x232487['Campaign']['findAll']({'attributes':['id',_0x5832('0x31')],'include':[{'model':_0x232487[_0x5832('0x2e')],'as':_0x5832('0x2f'),'where':{'id':_0x177978[_0x5832('0x1d')]}}]})[_0x5832('0x19')](function(_0x538d64){if(_0x538d64){var _0x48d36c=[];for(var _0x1fb5fa=0x0,_0x42c3c5;_0x1fb5fa<_0x538d64['length'];_0x1fb5fa+=0x1){_0x42c3c5=_0x538d64[_0x1fb5fa][_0x5832('0x13')]({'plain':!![]});switch(_0x42c3c5[_0x5832('0x31')]){case _0x5832('0x32'):_0x4197c0(_0x42c3c5)[_0x5832('0x27')](_0x4603d5());break;case _0x5832('0x35'):_0x69f14d(_0x42c3c5)[_0x5832('0x27')](_0x4603d5());break;default:_0x232487[_0x5832('0x18')][_0x5832('0x1c')]({'phone':_0x177978[_0x5832('0xa')],'ContactId':_0x177978['id'],'ListId':_0x177978[_0x5832('0x1d')],'scheduledat':_0x177978[_0x5832('0x1f')]?_0x177978[_0x5832('0x1f')]:moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'priority':_0x177978[_0x5832('0x1e')]?_0x177978[_0x5832('0x1e')]:0x2,'callback':_0x177978[_0x5832('0x21')]?!![]:![],'callbackuniqueid':_0x177978[_0x5832('0x21')]?_0x177978['callbackUniqueid']:undefined,'callbackat':_0x177978[_0x5832('0x21')]?moment()[_0x5832('0x20')](_0x5832('0x26')):undefined,'CampaignId':_0x42c3c5['id']})[_0x5832('0x27')](_0x4603d5());}}}});})[_0x5832('0x19')](function(){return _0x232487[_0x5832('0x36')]['findAll']({'attributes':['id'],'include':[{'model':_0x232487[_0x5832('0x2e')],'as':_0x5832('0x37'),'where':{'id':_0x177978['ListId']}}]})[_0x5832('0x19')](function(_0x3a1d49){if(_0x3a1d49){var _0x4a00e0=[];for(var _0x220c5c=0x0,_0x38dac9;_0x220c5c<_0x3a1d49[_0x5832('0x30')];_0x220c5c+=0x1){_0x38dac9=_0x3a1d49[_0x220c5c][_0x5832('0x13')]({'plain':!![]});_0x232487[_0x5832('0x33')][_0x5832('0x1c')]({'phone':_0x177978[_0x5832('0xa')],'ContactId':_0x177978['id'],'ListId':_0x177978[_0x5832('0x1d')],'CampaignId':_0x38dac9['id']})[_0x5832('0x27')](function(_0x177794){logger[_0x5832('0x14')]('cmContact,\x20%s,\x20%s',_0x5832('0x16'),_0x177794[_0x5832('0x38')]);});}}});})[_0x5832('0x19')](function(){_0x5b8ed3();})[_0x5832('0x27')](function(_0x28cd12){logger[_0x5832('0x14')](_0x5832('0x34'),_0x5832('0x16'),_0x28cd12['message']);_0x5b8ed3(_0x28cd12);});}else{_0x5b8ed3(new Error(_0x5832('0x39')));}},'afterDestroy':function(_0x56fa1d,_0x1a04e2,_0x4ed9f7){var _0x59e76b=_0x1c40ca['models'];var _0x8b2c6c=_0x56fa1d[_0x5832('0x13')]({'plain':!![]});return _0x59e76b[_0x5832('0x18')][_0x5832('0x2c')]({'raw':!![],'where':{'ListId':_0x8b2c6c[_0x5832('0x1d')],'ContactId':_0x8b2c6c['id']}})['then'](function(_0xc9c5ef){if(!_['isEmpty'](_0xc9c5ef)){var _0x5078d5=[];for(var _0x5dd839=0x0;_0x5dd839<_0xc9c5ef[_0x5832('0x30')];_0x5dd839+=0x1){var _0x7edaeb=_0x59e76b[_0x5832('0x18')][_0x5832('0x3a')]({'where':{'ListId':_0xc9c5ef[_0x5dd839][_0x5832('0x1d')],'ContactId':_0xc9c5ef[_0x5dd839][_0x5832('0x3b')],'VoiceQueueId':_0xc9c5ef[_0x5dd839][_0x5832('0x3c')],'CampaignId':_0xc9c5ef[_0x5dd839]['CampaignId']}});_0x5078d5[_0x5832('0x3d')](_0x7edaeb);}return BPromise[_0x5832('0x3e')](_0x5078d5);}})[_0x5832('0x19')](function(_0x3c070c){logger['info'](_0x5832('0x3f'),util[_0x5832('0x17')](_0x3c070c,{'showHidden':![],'depth':null}));_0x4ed9f7();})[_0x5832('0x27')](function(_0x14d21c){logger[_0x5832('0x14')](_0x5832('0x40'),util[_0x5832('0x17')](_0x14d21c,{'showHidden':![],'depth':null}));_0x4ed9f7(_0x14d21c);});}}});};