Built motion from commit (unavailable).|2.3.4
[motion2.git] / server / components / import / cm / csv2.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 _0xe155=['then','affectedRows','contact:import:','unlink','argv','arguments\x20<filename>\x20<parameters>\x20<agents>','existsSync','file\x20doesn\x27t\x20exists','phone\x20is\x20mandatory','firstName\x20is\x20mandatory','ListId\x20is\x20mandatory','body\x20id\x20mandatory','No\x20agent\x20available','SIGINT','uncaughtException','path','papaparse','util','bluebird','moment','ioredis','../../../mysqldb','../../../config/environment','import','redis','defaults','localhost','socket.io-emitter','YYYY-MM-DD\x20HH:mm:ss','field','from','join','where','.dialCheckDuplicateType\x20IN\x20(','cm_contacts.phone','cm_contacts.scheduledat','cm_contacts.ListId','cm_contacts.createdAt','cm_contacts.updatedAt','cm_contacts.priority','cm_contacts.UserId','insert','fromQuery','phone','scheduledat','ContactId','ListId','createdAt','updatedAt','priority','UserId','recallme','select','fields','cm_contacts','cm_contacts.ListId\x20=\x20','.id\x20=\x20','.CmListId\x20=\x20?','cm_contacts.phone\x20NOT\x20IN\x20(?)','cm_hopper','\x22always\x22','toString','into','cm_hopper_black','cm_contacts.createdAt\x20=\x20?','ListId\x20=\x20?','concat','keys','CompanyId',')\x20NOT\x20IN\x20?','id\x20IN\x20?','MIN(id)','min_id','info','Received\x20SIGINT','error','message','exit','errors','push','code','sequelize','query','spread','catch','stringify','start','binding','socket_timestamp','root','server/files/tmp','.csv','header','writeFileSync','parse','createReadStream','data','length','rows','hasOwnProperty','replace','isValid','scheduledat\x20wrong\x20format\x20(YYYY-MM-DD\x20HH:mm:ss)','includes','agent\x20not\x20exists','email\x20wrong\x20format','dateOfBirth','YYYY-MM-DD','firstName','SystemRow','appendFileSync','emit','Abort\x20parser','abort','step','duplicates','CREATE\x20TABLE\x20','\x20LIKE\x20cm_contacts;','format','isNil',',\x20scheduledAt\x20=\x20NOW()','DROP\x20TABLE\x20','voice_queues','VoiceQueueId','campaigns','CampaignId','each'];(function(_0x1de7f8,_0x14250a){var _0x5cce8e=function(_0x3292eb){while(--_0x3292eb){_0x1de7f8['push'](_0x1de7f8['shift']());}};_0x5cce8e(++_0x14250a);}(_0xe155,0x8e));var _0x5e15=function(_0x558fea,_0x5f4475){_0x558fea=_0x558fea-0x0;var _0x126648=_0xe155[_0x558fea];return _0x126648;};'use strict';var fs=require('fs');var path=require(_0x5e15('0x0'));var _=require('lodash');var Papa=require(_0x5e15('0x1'));var util=require(_0x5e15('0x2'));var BPromise=require(_0x5e15('0x3'));var moment=require(_0x5e15('0x4'));var squel=require('squel');var Redis=require(_0x5e15('0x5'));var db=require(_0x5e15('0x6'))['db'];var config=require(_0x5e15('0x7'));var logger=require('../../../config/logger')(_0x5e15('0x8'));config[_0x5e15('0x9')]=_[_0x5e15('0xa')](config[_0x5e15('0x9')],{'host':_0x5e15('0xb'),'port':0x18eb});var socket=require(_0x5e15('0xc'))(new Redis(config['redis']));var stats={'finish':![],'errors':[],'rows':0x0,'affectedRows':0x0};var results=[];var stopped=![];var NOW=moment()['format'](_0x5e15('0xd'));function isEmail(_0x44212c){return/^([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x22([^\x0d\x22\x5c\x80-\xff]|\x5c[\x00-\x7f])*\x22)(\x2e([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x22([^\x0d\x22\x5c\x80-\xff]|\x5c[\x00-\x7f])*\x22))*\x40([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x5b([^\x0d\x5b-\x5d\x80-\xff]|\x5c[\x00-\x7f])*\x5d)(\x2e([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x5b([^\x0d\x5b-\x5d\x80-\xff]|\x5c[\x00-\x7f])*\x5d))*$/['test'](_0x44212c);}function selectNotIn(_0x5047c1,_0xfc0a07,_0x345242,_0x355567,_0x60d60e){return squel['select']()[_0x5e15('0xe')]('phone')[_0x5e15('0xf')](_0x355567)[_0x5e15('0x10')](_0xfc0a07,null,_0xfc0a07+'.id\x20=\x20'+_0x355567+'.'+_0x345242)['where'](_0x355567+'.'+_0x345242+'\x20=\x20'+_0x5047c1+'.'+_0x345242)[_0x5e15('0x11')](_0xfc0a07+_0x5e15('0x12')+_0x60d60e[_0x5e15('0x10')]()+')');}function insertCmHopper(_0x5306a9,_0x1c9850,_0x4c24d5,_0x3f6179,_0x5819a8){var _0x59c6b3=[_0x5e15('0x13'),_0x5e15('0x14'),'cm_contacts.id',_0x5e15('0x15'),_0x1c9850+'.'+_0x3f6179,_0x5e15('0x16'),_0x5e15('0x17'),_0x5e15('0x18'),_0x5e15('0x19'),'\x22'+_0x5819a8+'\x22'];return squel[_0x5e15('0x1a')]()['into']('cm_hopper')[_0x5e15('0x1b')]([_0x5e15('0x1c'),_0x5e15('0x1d'),_0x5e15('0x1e'),_0x5e15('0x1f'),_0x3f6179,_0x5e15('0x20'),_0x5e15('0x21'),_0x5e15('0x22'),_0x5e15('0x23'),_0x5e15('0x24')],squel[_0x5e15('0x25')]()[_0x5e15('0x26')](_0x59c6b3)[_0x5e15('0xf')](_0x1c9850)[_0x5e15('0x10')](_0x5e15('0x27'),null,_0x5e15('0x28')+_0x1c9850+'.CmListId')['join'](_0x4c24d5,null,_0x4c24d5+_0x5e15('0x29')+_0x1c9850+'.'+_0x3f6179)[_0x5e15('0x11')](_0x1c9850+_0x5e15('0x2a'),_0x5306a9)[_0x5e15('0x11')]('cm_contacts.createdAt\x20=\x20?',NOW)[_0x5e15('0x11')](_0x5e15('0x2b'),selectNotIn(_0x1c9850,_0x4c24d5,_0x3f6179,_0x5e15('0x2c'),[_0x5e15('0x2d'),'\x22onlyIfOpen\x22']))[_0x5e15('0x11')]('cm_contacts.phone\x20NOT\x20IN\x20(?)',selectNotIn(_0x1c9850,_0x4c24d5,_0x3f6179,_0x5e15('0x2c'),[_0x5e15('0x2d')])))[_0x5e15('0x2e')]();}function insertCmHopperBlack(_0x1ad4e9,_0x1c11b8,_0x2cb21f,_0x52ce56){var _0x45c008=['cm_contacts.phone','cm_contacts.id',_0x5e15('0x15'),_0x1c11b8+'.'+_0x52ce56,_0x5e15('0x16'),_0x5e15('0x17')];return squel[_0x5e15('0x1a')]()[_0x5e15('0x2f')](_0x5e15('0x30'))[_0x5e15('0x1b')](['phone',_0x5e15('0x1e'),_0x5e15('0x1f'),_0x52ce56,_0x5e15('0x20'),_0x5e15('0x21')],squel[_0x5e15('0x25')]()[_0x5e15('0x26')](_0x45c008)[_0x5e15('0xf')](_0x1c11b8)['join'](_0x5e15('0x27'),null,'cm_contacts.ListId\x20=\x20'+_0x1c11b8+'.CmListId')['join'](_0x2cb21f,null,_0x2cb21f+_0x5e15('0x29')+_0x1c11b8+'.'+_0x52ce56)['where'](_0x1c11b8+_0x5e15('0x2a'),_0x1ad4e9)['where'](_0x5e15('0x31'),NOW)['where'](_0x5e15('0x2b'),squel[_0x5e15('0x25')]()[_0x5e15('0xe')]('phone')[_0x5e15('0xf')](_0x5e15('0x30'))['where'](_0x5e15('0x32'),_0x1ad4e9)[_0x5e15('0x11')](_0x52ce56+'\x20=\x20?',_0x1c11b8+'.'+_0x52ce56)))[_0x5e15('0x2e')]();}function insertCmContact(_0x3cb026,_0x320cca,_0x46c131,_0x40e755){var _0x12b2a5=_[_0x5e15('0x33')](_[_0x5e15('0x34')](_0x40e755),[_0x5e15('0x1f'),_0x5e15('0x35'),_0x5e15('0x20'),_0x5e15('0x21')]);return squel[_0x5e15('0x1a')]()[_0x5e15('0x2f')]('cm_contacts')[_0x5e15('0x1b')](_0x12b2a5,squel['select']()[_0x5e15('0x26')](_0x12b2a5)[_0x5e15('0xf')](_0x320cca)[_0x5e15('0x11')]('('+_0x46c131[_0x5e15('0x10')](',')+_0x5e15('0x36'),squel[_0x5e15('0x25')]()[_0x5e15('0x26')](_0x46c131)[_0x5e15('0xf')](_0x5e15('0x27'))[_0x5e15('0x11')](_0x5e15('0x32'),_0x3cb026))['where'](_0x5e15('0x37'),squel[_0x5e15('0x25')]()[_0x5e15('0xe')](_0x5e15('0x38'),_0x5e15('0x39'))[_0x5e15('0xf')](_0x320cca)['group'](_0x46c131[_0x5e15('0x10')](','))))[_0x5e15('0x2e')]();}function handleStop(){logger[_0x5e15('0x3a')](_0x5e15('0x3b'));stopped=!![];}function handleUncaughtException(_0x48fee0){logger[_0x5e15('0x3c')](_0x48fee0[_0x5e15('0x3d')]);process[_0x5e15('0x3e')](0x1);}function handleError(_0x1dabb6,_0x315e73){stats[_0x5e15('0x3f')][_0x5e15('0x40')]({'name':_0x315e73[_0x5e15('0x41')],'message':_0x315e73[_0x5e15('0x3d')],'row':_0x1dabb6});}function handleQuery(_0xe6a0a8){logger['info'](_0xe6a0a8);return db[_0x5e15('0x42')][_0x5e15('0x43')](_0xe6a0a8)[_0x5e15('0x44')](function(_0x34e796){results[_0x5e15('0x40')](_0x34e796);})[_0x5e15('0x45')](function(_0x46d5a0){logger[_0x5e15('0x3c')](_0x46d5a0['message']);});}function main(_0x7d8f4b,_0x217a28,_0x598e6b,_0x59f453){logger[_0x5e15('0x3a')]('main',_0x7d8f4b,JSON[_0x5e15('0x46')](_0x217a28));process['send'](_0x5e15('0x47'));var _0x4f94c6=_0x217a28[_0x5e15('0x48')];var _0x3fbdf1=_0x217a28[_0x5e15('0x49')];var _0x511e6a=path['join'](config[_0x5e15('0x4a')],_0x5e15('0x4b'),_0x3fbdf1+_0x5e15('0x4c'));var _0x1b9a7f=_[_0x5e15('0x34')](_0x4f94c6)['join']();logger[_0x5e15('0x3a')](_0x5e15('0x4d'),_0x1b9a7f);fs[_0x5e15('0x4e')](_0x511e6a,_0x1b9a7f+'\x0a');Papa[_0x5e15('0x4f')](fs[_0x5e15('0x50')](_0x7d8f4b),{'header':!![],'skipEmptyLines':!![],'step':function(_0x190298,_0xea1b0d){try{for(var _0x1fd332=0x0,_0x29c9fb=[];_0x1fd332<_0x190298[_0x5e15('0x51')][_0x5e15('0x52')];_0x1fd332++){stats[_0x5e15('0x53')]+=0x1;if(_0x190298[_0x5e15('0x3f')][_0x1fd332]){handleError(_0x190298[_0x5e15('0x51')][_0x1fd332],_0x190298['errors'][_0x1fd332]);}else{var _0x41b8eb=[];for(var _0x5f15c5 in _0x4f94c6){if(_0x4f94c6[_0x5e15('0x54')](_0x5f15c5)){if(_0x190298[_0x5e15('0x51')][_0x1fd332][_0x4f94c6[_0x5f15c5]]){var _0xaa15c1=_['trim'](_0x190298['data'][_0x1fd332][_0x4f94c6[_0x5f15c5]][_0x5e15('0x55')](/"/g,'\x27'));switch(_0x5f15c5){case _0x5e15('0x1d'):var _0xb1b55c=moment(_0xaa15c1,_0x5e15('0xd'),!![]);if(_0xb1b55c[_0x5e15('0x56')]()){_0x29c9fb[_0x5e15('0x40')]('\x22'+_0xaa15c1+'\x22');}else{_0x41b8eb[_0x5e15('0x40')](_0x5e15('0x57'));}break;case _0x5e15('0x22'):var _0x3ce88f=parseInt(_0xaa15c1);_0xaa15c1=_['isNaN'](_0x3ce88f)||_0x3ce88f<0x0||_0x3ce88f>0x4?_0x59f453?0x3:0x2:_0x3ce88f;_0x29c9fb['push']('\x22'+_0xaa15c1+'\x22');break;case _0x5e15('0x23'):var _0x4264a0=parseInt(_0xaa15c1);if(_['isNumber'](_0x4264a0)&&_[_0x5e15('0x58')](_0x598e6b,_0x4264a0)){_0x29c9fb[_0x5e15('0x40')]('\x22'+_0x4264a0+'\x22');}else{_0x41b8eb[_0x5e15('0x40')](_0x5e15('0x59'));}break;case'email':if(isEmail(_0xaa15c1)){_0x29c9fb['push']('\x22'+_0xaa15c1+'\x22');}else{_0x41b8eb[_0x5e15('0x40')](_0x5e15('0x5a'));}break;case _0x5e15('0x5b'):var _0x5a67ce=moment(_0xaa15c1,_0x5e15('0x5c'),!![]);if(_0x5a67ce[_0x5e15('0x56')]()){_0x29c9fb[_0x5e15('0x40')]('\x22'+_0xaa15c1+'\x22');}else{_0x41b8eb[_0x5e15('0x40')]('dateOfBirth\x20wrong\x20format\x20(YYYY-MM-DD)');}break;default:_0x29c9fb[_0x5e15('0x40')]('\x22'+_0xaa15c1+'\x22');}}else{switch(_0x5f15c5){case _0x5e15('0x5d'):case _0x5e15('0x1c'):_0x41b8eb[_0x5e15('0x40')](_0x5f15c5+'\x20not\x20specified');break;default:_0x29c9fb[_0x5e15('0x40')]('\x22\x22');}}}}if(_0x41b8eb[_0x5e15('0x52')]){handleError(_0x190298[_0x5e15('0x51')][_0x1fd332],{'code':_0x5e15('0x5e'),'message':_0x41b8eb[_0x5e15('0x10')]()});}else{fs[_0x5e15('0x5f')](_0x511e6a,_0x29c9fb[_0x5e15('0x10')]()+'\x0a');}_0x29c9fb=[];}if(!(stats[_0x5e15('0x53')]%0xc8)){socket[_0x5e15('0x60')]('contact:import:'+_0x3fbdf1,stats);stats[_0x5e15('0x3f')]=[];}}if(stopped){logger['info'](_0x5e15('0x61'));_0xea1b0d[_0x5e15('0x62')]();}}catch(_0x5e2140){handleError(_0x190298['data'][_0x1fd332],{'code':'SystemError','message':_0x5e2140[_0x5e15('0x3d')]});logger[_0x5e15('0x3c')](_0x5e15('0x63'),_0x5e2140[_0x5e15('0x3d')]);}},'complete':function(){try{var _0x40d5ca=[];var _0x38d6e8=_0x5e15('0x27');if(_0x217a28[_0x5e15('0x64')]&&_0x217a28['duplicates'][_0x5e15('0x52')]){_0x38d6e8='cm_contacts_'+_0x3fbdf1;_0x40d5ca['push'](_0x5e15('0x65')+_0x38d6e8+_0x5e15('0x66'));}var _0x59fa00=util[_0x5e15('0x67')]('LOAD\x20DATA\x20LOCAL\x20INFILE\x20\x27%s\x27\x20INTO\x20TABLE\x20%s\x20CHARACTER\x20SET\x20UTF8\x20FIELDS\x20TERMINATED\x20BY\x20\x27,\x27\x20ENCLOSED\x20BY\x20\x27\x22\x27\x20LINES\x20TERMINATED\x20BY\x20\x27\x0a\x27\x20IGNORE\x201\x20ROWS\x20(%s)\x20SET\x20id\x20=\x20NULL,\x20ListId\x20=\x20%s,\x20CompanyId\x20=\x20%s,\x20createdAt\x20=\x20\x27%s\x27,\x20updatedAt\x20=\x20\x27%s\x27',_0x511e6a,_0x38d6e8,_0x1b9a7f,_0x217a28[_0x5e15('0x1f')],_0x217a28[_0x5e15('0x35')]||null,NOW,NOW);if(_[_0x5e15('0x68')](_0x4f94c6[_0x5e15('0x1d')])){_0x59fa00+=_0x5e15('0x69');}_0x40d5ca[_0x5e15('0x40')](_0x59fa00);if(_0x217a28[_0x5e15('0x64')]&&_0x217a28[_0x5e15('0x64')][_0x5e15('0x52')]){_0x40d5ca[_0x5e15('0x40')](insertCmContact(_0x217a28['ListId'],_0x38d6e8,_0x217a28['duplicates'],_0x4f94c6));_0x40d5ca['push'](_0x5e15('0x6a')+_0x38d6e8+';');}_0x40d5ca[_0x5e15('0x40')](insertCmHopper(_0x217a28[_0x5e15('0x1f')],'voice_queues_has_cm_lists',_0x5e15('0x6b'),_0x5e15('0x6c'),_0x59f453));_0x40d5ca[_0x5e15('0x40')](insertCmHopperBlack(_0x217a28[_0x5e15('0x1f')],'voice_queues_has_cm_blacklists','voice_queues','VoiceQueueId'));_0x40d5ca[_0x5e15('0x40')](insertCmHopper(_0x217a28[_0x5e15('0x1f')],'campaigns_has_cm_lists',_0x5e15('0x6d'),_0x5e15('0x6e'),_0x59f453));_0x40d5ca[_0x5e15('0x40')](insertCmHopperBlack(_0x217a28[_0x5e15('0x1f')],'campaigns_has_cm_blacklists',_0x5e15('0x6d'),'CampaignId'));BPromise[_0x5e15('0x6f')](_0x40d5ca,handleQuery)[_0x5e15('0x70')](function(_0x460ffe){stats['finish']=!![];stats[_0x5e15('0x71')]=_0x217a28[_0x5e15('0x64')]&&_0x217a28[_0x5e15('0x64')][_0x5e15('0x52')]?results[0x2][_0x5e15('0x71')]:results[0x0][_0x5e15('0x71')];socket[_0x5e15('0x60')](_0x5e15('0x72')+_0x3fbdf1,stats);fs[_0x5e15('0x73')](_0x7d8f4b);fs['unlink'](_0x511e6a);process[_0x5e15('0x3e')](0x0);})[_0x5e15('0x45')](function(_0x3a7d43){logger[_0x5e15('0x3c')](_0x3a7d43[_0x5e15('0x3d')]);process[_0x5e15('0x3e')](0x1);});}catch(_0x28e841){logger['error']('complete',_0x28e841[_0x5e15('0x3d')]);process[_0x5e15('0x3e')](0x1);}},'error':function(_0x43a34a,_0x368ea0,_0x4b57b4,_0x15241f){throw new Error(_0x15241f);}});}function validate(){if(process[_0x5e15('0x74')]&&process[_0x5e15('0x74')]['length']<0x4){throw new Error(_0x5e15('0x75'));}var _0x4b0a21=path[_0x5e15('0x10')](config[_0x5e15('0x4a')],_0x5e15('0x4b'),process[_0x5e15('0x74')][0x2]);if(!fs[_0x5e15('0x76')](_0x4b0a21)){throw new Error(_0x5e15('0x77'));}var _0x3898cb={};try{_0x3898cb=JSON[_0x5e15('0x4f')](process[_0x5e15('0x74')][0x3]);if(!_0x3898cb[_0x5e15('0x48')]){throw new Error('binding\x20doesn\x27t\x20exists');}if(!_0x3898cb['binding'][_0x5e15('0x1c')]){throw new Error(_0x5e15('0x78'));}if(!_0x3898cb[_0x5e15('0x48')]['firstName']){throw new Error(_0x5e15('0x79'));}var _0x5653c6=0x0;if(_0x3898cb[_0x5e15('0x48')][_0x5e15('0x23')]){_0x5653c6=0x1;}if(!_0x3898cb[_0x5e15('0x1f')]){throw new Error(_0x5e15('0x7a'));}}catch(_0x1c59da){throw new Error(_0x5e15('0x7b'));}var _0x54d6e6=[];try{_0x54d6e6=_['map'](JSON[_0x5e15('0x4f')](process[_0x5e15('0x74')][0x4]),'id');}catch(_0x1e368f){logger['info'](_0x5e15('0x7c'));}main(_0x4b0a21,_0x3898cb,_0x54d6e6,_0x5653c6);}validate();process['on'](_0x5e15('0x7d'),handleStop);process['on'](_0x5e15('0x7e'),handleUncaughtException);