20ef791a7274be7e14605f89868d74f87cf84283
[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 _0x92da=['\x22always\x22','\x22onlyIfOpen\x22','toString','cm_hopper_black','cm_contacts.createdAt\x20=\x20?','ListId\x20=\x20?','concat','keys','CompanyId','createdAt',')\x20NOT\x20IN\x20?','deletedAt\x20IS\x20NULL','id\x20IN\x20?','MIN(id)','min_id','group','info','Received\x20SIGINT','message','exit','errors','push','code','sequelize','query','spread','catch','error','main','stringify','start','binding','root','server/files/tmp','.csv','header','writeFileSync','parse','createReadStream','length','rows','hasOwnProperty','data','replace','scheduledat','isValid','scheduledat\x20wrong\x20format\x20(YYYY-MM-DD\x20HH:mm:ss)','isNaN','UserId','includes','agent\x20not\x20exists','YYYY-MM-DD','dateOfBirth\x20wrong\x20format\x20(YYYY-MM-DD)','firstName','\x20not\x20specified','SystemRow','appendFileSync','emit','Abort\x20parser','abort','SystemError','duplicates','cm_contacts_','CREATE\x20TABLE\x20','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','DROP\x20TABLE\x20','voice_queues_has_cm_lists','voice_queues','VoiceQueueId','voice_queues_has_cm_blacklists','campaigns','CampaignId','each','then','finish','affectedRows','contact:import:','unlink','complete','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','map','No\x20agent\x20available','uncaughtException','path','lodash','papaparse','util','squel','../../../mysqldb','../../../config/environment','../../../config/logger','import','redis','defaults','socket.io-emitter','format','YYYY-MM-DD\x20HH:mm:ss','test','select','field','phone','from','join','.id\x20=\x20','\x20=\x20','where','.dialCheckDuplicateType\x20IN\x20(','cm_contacts.phone','cm_contacts.id','cm_contacts.ListId','cm_contacts.createdAt','cm_contacts.updatedAt','cm_contacts.priority','insert','into','fromQuery','ContactId','ListId','updatedAt','priority','recallme','fields','cm_contacts','cm_contacts.ListId\x20=\x20','.CmListId','.CmListId\x20=\x20?','cm_contacts.phone\x20NOT\x20IN\x20(?)'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0x92da,0x166));var _0xa92d=function(_0x40fb28,_0x26ec89){_0x40fb28=_0x40fb28-0x0;var _0x1c0293=_0x92da[_0x40fb28];return _0x1c0293;};'use strict';var fs=require('fs');var path=require(_0xa92d('0x0'));var _=require(_0xa92d('0x1'));var Papa=require(_0xa92d('0x2'));var util=require(_0xa92d('0x3'));var BPromise=require('bluebird');var moment=require('moment');var squel=require(_0xa92d('0x4'));var Redis=require('ioredis');var db=require(_0xa92d('0x5'))['db'];var config=require(_0xa92d('0x6'));var logger=require(_0xa92d('0x7'))(_0xa92d('0x8'));config[_0xa92d('0x9')]=_[_0xa92d('0xa')](config[_0xa92d('0x9')],{'host':'localhost','port':0x18eb});var socket=require(_0xa92d('0xb'))(new Redis(config[_0xa92d('0x9')]));var stats={'finish':![],'errors':[],'rows':0x0,'affectedRows':0x0};var results=[];var stopped=![];var NOW=moment()[_0xa92d('0xc')](_0xa92d('0xd'));function isEmail(_0x5a3b8d){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))*$/[_0xa92d('0xe')](_0x5a3b8d);}function selectNotIn(_0x1bb036,_0x25d143,_0x14f22d,_0x49af1d,_0x392747){return squel[_0xa92d('0xf')]()[_0xa92d('0x10')](_0xa92d('0x11'))[_0xa92d('0x12')](_0x49af1d)[_0xa92d('0x13')](_0x25d143,null,_0x25d143+_0xa92d('0x14')+_0x49af1d+'.'+_0x14f22d)['where'](_0x49af1d+'.'+_0x14f22d+_0xa92d('0x15')+_0x1bb036+'.'+_0x14f22d)[_0xa92d('0x16')](_0x25d143+_0xa92d('0x17')+_0x392747[_0xa92d('0x13')]()+')');}function insertCmHopper(_0x164d17,_0x16a6a5,_0x3ea332,_0x153c08,_0x787b97){var _0x332b79=[_0xa92d('0x18'),'cm_contacts.scheduledat',_0xa92d('0x19'),_0xa92d('0x1a'),_0x16a6a5+'.'+_0x153c08,_0xa92d('0x1b'),_0xa92d('0x1c'),_0xa92d('0x1d'),'cm_contacts.UserId','\x22'+_0x787b97+'\x22'];return squel[_0xa92d('0x1e')]()[_0xa92d('0x1f')]('cm_hopper')[_0xa92d('0x20')]([_0xa92d('0x11'),'scheduledat',_0xa92d('0x21'),_0xa92d('0x22'),_0x153c08,'createdAt',_0xa92d('0x23'),_0xa92d('0x24'),'UserId',_0xa92d('0x25')],squel[_0xa92d('0xf')]()[_0xa92d('0x26')](_0x332b79)['from'](_0x16a6a5)[_0xa92d('0x13')](_0xa92d('0x27'),null,_0xa92d('0x28')+_0x16a6a5+_0xa92d('0x29'))['join'](_0x3ea332,null,_0x3ea332+'.id\x20=\x20'+_0x16a6a5+'.'+_0x153c08)[_0xa92d('0x16')](_0x16a6a5+_0xa92d('0x2a'),_0x164d17)[_0xa92d('0x16')]('cm_contacts.createdAt\x20=\x20?',NOW)[_0xa92d('0x16')](_0xa92d('0x2b'),selectNotIn(_0x16a6a5,_0x3ea332,_0x153c08,'cm_hopper',[_0xa92d('0x2c'),_0xa92d('0x2d')]))[_0xa92d('0x16')](_0xa92d('0x2b'),selectNotIn(_0x16a6a5,_0x3ea332,_0x153c08,'cm_hopper',[_0xa92d('0x2c')])))[_0xa92d('0x2e')]();}function insertCmHopperBlack(_0x2faf65,_0xcd8fb7,_0x584793,_0x5cdb0c){var _0x28d2c2=[_0xa92d('0x18'),_0xa92d('0x19'),_0xa92d('0x1a'),_0xcd8fb7+'.'+_0x5cdb0c,_0xa92d('0x1b'),'cm_contacts.updatedAt'];return squel[_0xa92d('0x1e')]()['into'](_0xa92d('0x2f'))[_0xa92d('0x20')]([_0xa92d('0x11'),_0xa92d('0x21'),_0xa92d('0x22'),_0x5cdb0c,'createdAt','updatedAt'],squel[_0xa92d('0xf')]()['fields'](_0x28d2c2)[_0xa92d('0x12')](_0xcd8fb7)[_0xa92d('0x13')]('cm_contacts',null,_0xa92d('0x28')+_0xcd8fb7+_0xa92d('0x29'))['join'](_0x584793,null,_0x584793+'.id\x20=\x20'+_0xcd8fb7+'.'+_0x5cdb0c)[_0xa92d('0x16')](_0xcd8fb7+_0xa92d('0x2a'),_0x2faf65)[_0xa92d('0x16')](_0xa92d('0x30'),NOW)['where'](_0xa92d('0x2b'),squel[_0xa92d('0xf')]()[_0xa92d('0x10')](_0xa92d('0x11'))[_0xa92d('0x12')]('cm_hopper_black')['where'](_0xa92d('0x31'),_0x2faf65)['where'](_0x5cdb0c+'\x20=\x20?',_0xcd8fb7+'.'+_0x5cdb0c)))[_0xa92d('0x2e')]();}function insertCmContact(_0x2f57d5,_0x2a2ea9,_0x1d12d4,_0x34eae7){var _0xa65de2=_[_0xa92d('0x32')](_[_0xa92d('0x33')](_0x34eae7),[_0xa92d('0x22'),_0xa92d('0x34'),_0xa92d('0x35'),_0xa92d('0x23')]);return squel[_0xa92d('0x1e')]()[_0xa92d('0x1f')]('cm_contacts')[_0xa92d('0x20')](_0xa65de2,squel[_0xa92d('0xf')]()[_0xa92d('0x26')](_0xa65de2)[_0xa92d('0x12')](_0x2a2ea9)[_0xa92d('0x16')]('('+_0x1d12d4['join'](',')+_0xa92d('0x36'),squel['select']()[_0xa92d('0x26')](_0x1d12d4)['from'](_0xa92d('0x27'))[_0xa92d('0x16')](_0xa92d('0x31'),_0x2f57d5)[_0xa92d('0x16')](_0xa92d('0x37')))[_0xa92d('0x16')](_0xa92d('0x38'),squel[_0xa92d('0xf')]()[_0xa92d('0x10')](_0xa92d('0x39'),_0xa92d('0x3a'))[_0xa92d('0x12')](_0x2a2ea9)[_0xa92d('0x3b')](_0x1d12d4[_0xa92d('0x13')](','))))[_0xa92d('0x2e')]();}function handleStop(){logger[_0xa92d('0x3c')](_0xa92d('0x3d'));stopped=!![];}function handleUncaughtException(_0xf76bb8){logger['error'](_0xf76bb8[_0xa92d('0x3e')]);process[_0xa92d('0x3f')](0x1);}function handleError(_0x27f80e,_0x10acda){stats[_0xa92d('0x40')][_0xa92d('0x41')]({'name':_0x10acda[_0xa92d('0x42')],'message':_0x10acda[_0xa92d('0x3e')],'row':_0x27f80e});}function handleQuery(_0x347f9b){logger[_0xa92d('0x3c')](_0x347f9b);return db[_0xa92d('0x43')][_0xa92d('0x44')](_0x347f9b)[_0xa92d('0x45')](function(_0x50f780){results['push'](_0x50f780);})[_0xa92d('0x46')](function(_0x2a7b12){logger[_0xa92d('0x47')](_0x2a7b12[_0xa92d('0x3e')]);});}function main(_0xeda50c,_0x199527,_0xf84548,_0xd056cf){logger[_0xa92d('0x3c')](_0xa92d('0x48'),_0xeda50c,JSON[_0xa92d('0x49')](_0x199527));process['send'](_0xa92d('0x4a'));var _0x1d40f7=_0x199527[_0xa92d('0x4b')];var _0x56964a=_0x199527['socket_timestamp'];var _0x26456d=path[_0xa92d('0x13')](config[_0xa92d('0x4c')],_0xa92d('0x4d'),_0x56964a+_0xa92d('0x4e'));var _0x52c4d7=_[_0xa92d('0x33')](_0x1d40f7)[_0xa92d('0x13')]();logger[_0xa92d('0x3c')](_0xa92d('0x4f'),_0x52c4d7);fs[_0xa92d('0x50')](_0x26456d,_0x52c4d7+'\x0a');Papa[_0xa92d('0x51')](fs[_0xa92d('0x52')](_0xeda50c),{'header':!![],'skipEmptyLines':!![],'step':function(_0x3077c9,_0x552ebb){try{for(var _0x575539=0x0,_0xc9204a=[];_0x575539<_0x3077c9['data'][_0xa92d('0x53')];_0x575539++){stats[_0xa92d('0x54')]+=0x1;if(_0x3077c9[_0xa92d('0x40')][_0x575539]){handleError(_0x3077c9['data'][_0x575539],_0x3077c9[_0xa92d('0x40')][_0x575539]);}else{var _0x354685=[];for(var _0x16999f in _0x1d40f7){if(_0x1d40f7[_0xa92d('0x55')](_0x16999f)){if(_0x3077c9[_0xa92d('0x56')][_0x575539][_0x1d40f7[_0x16999f]]){var _0x3fb4ef=_['trim'](_0x3077c9['data'][_0x575539][_0x1d40f7[_0x16999f]][_0xa92d('0x57')](/"/g,'\x27'));switch(_0x16999f){case _0xa92d('0x58'):var _0x3f52a5=moment(_0x3fb4ef,_0xa92d('0xd'),!![]);if(_0x3f52a5[_0xa92d('0x59')]()){_0xc9204a['push']('\x22'+_0x3fb4ef+'\x22');}else{_0x354685['push'](_0xa92d('0x5a'));}break;case'priority':var _0x5b004c=parseInt(_0x3fb4ef);_0x3fb4ef=_[_0xa92d('0x5b')](_0x5b004c)||_0x5b004c<0x0||_0x5b004c>0x4?_0xd056cf?0x3:0x2:_0x5b004c;_0xc9204a[_0xa92d('0x41')]('\x22'+_0x3fb4ef+'\x22');break;case _0xa92d('0x5c'):var _0x1b84ab=parseInt(_0x3fb4ef);if(_['isNumber'](_0x1b84ab)&&_[_0xa92d('0x5d')](_0xf84548,_0x1b84ab)){_0xc9204a[_0xa92d('0x41')]('\x22'+_0x1b84ab+'\x22');}else{_0x354685[_0xa92d('0x41')](_0xa92d('0x5e'));}break;case'email':if(isEmail(_0x3fb4ef)){_0xc9204a[_0xa92d('0x41')]('\x22'+_0x3fb4ef+'\x22');}else{_0x354685['push']('email\x20wrong\x20format');}break;case'dateOfBirth':var _0x8c6776=moment(_0x3fb4ef,_0xa92d('0x5f'),!![]);if(_0x8c6776[_0xa92d('0x59')]()){_0xc9204a[_0xa92d('0x41')]('\x22'+_0x3fb4ef+'\x22');}else{_0x354685['push'](_0xa92d('0x60'));}break;default:_0xc9204a[_0xa92d('0x41')]('\x22'+_0x3fb4ef+'\x22');}}else{switch(_0x16999f){case _0xa92d('0x61'):case'phone':_0x354685[_0xa92d('0x41')](_0x16999f+_0xa92d('0x62'));break;default:_0xc9204a[_0xa92d('0x41')]('\x22\x22');}}}}if(_0x354685['length']){handleError(_0x3077c9[_0xa92d('0x56')][_0x575539],{'code':_0xa92d('0x63'),'message':_0x354685[_0xa92d('0x13')]()});}else{fs[_0xa92d('0x64')](_0x26456d,_0xc9204a[_0xa92d('0x13')]()+'\x0a');}_0xc9204a=[];}if(!(stats['rows']%0xc8)){socket[_0xa92d('0x65')]('contact:import:'+_0x56964a,stats);stats[_0xa92d('0x40')]=[];}}if(stopped){logger['info'](_0xa92d('0x66'));_0x552ebb[_0xa92d('0x67')]();}}catch(_0x1be9d0){handleError(_0x3077c9[_0xa92d('0x56')][_0x575539],{'code':_0xa92d('0x68'),'message':_0x1be9d0[_0xa92d('0x3e')]});logger[_0xa92d('0x47')]('step',_0x1be9d0['message']);}},'complete':function(){try{var _0xf5a01f=[];var _0x40781f=_0xa92d('0x27');if(_0x199527['duplicates']&&_0x199527[_0xa92d('0x69')]['length']){_0x40781f=_0xa92d('0x6a')+_0x56964a;_0xf5a01f[_0xa92d('0x41')](_0xa92d('0x6b')+_0x40781f+'\x20LIKE\x20cm_contacts;');}var _0xc74242=util[_0xa92d('0xc')](_0xa92d('0x6c'),_0x26456d,_0x40781f,_0x52c4d7,_0x199527[_0xa92d('0x22')],_0x199527['CompanyId']||null,NOW,NOW);if(_['isNil'](_0x1d40f7['scheduledat'])){_0xc74242+=',\x20scheduledAt\x20=\x20NOW()';}_0xf5a01f['push'](_0xc74242);if(_0x199527[_0xa92d('0x69')]&&_0x199527[_0xa92d('0x69')]['length']){_0xf5a01f[_0xa92d('0x41')](insertCmContact(_0x199527[_0xa92d('0x22')],_0x40781f,_0x199527[_0xa92d('0x69')],_0x1d40f7));_0xf5a01f[_0xa92d('0x41')](_0xa92d('0x6d')+_0x40781f+';');}_0xf5a01f['push'](insertCmHopper(_0x199527[_0xa92d('0x22')],_0xa92d('0x6e'),_0xa92d('0x6f'),_0xa92d('0x70'),_0xd056cf));_0xf5a01f[_0xa92d('0x41')](insertCmHopperBlack(_0x199527['ListId'],_0xa92d('0x71'),_0xa92d('0x6f'),_0xa92d('0x70')));_0xf5a01f[_0xa92d('0x41')](insertCmHopper(_0x199527[_0xa92d('0x22')],'campaigns_has_cm_lists',_0xa92d('0x72'),_0xa92d('0x73'),_0xd056cf));_0xf5a01f[_0xa92d('0x41')](insertCmHopperBlack(_0x199527[_0xa92d('0x22')],'campaigns_has_cm_blacklists','campaigns',_0xa92d('0x73')));BPromise[_0xa92d('0x74')](_0xf5a01f,handleQuery)[_0xa92d('0x75')](function(_0x226394){stats[_0xa92d('0x76')]=!![];stats[_0xa92d('0x77')]=_0x199527[_0xa92d('0x69')]&&_0x199527[_0xa92d('0x69')]['length']?results[0x2][_0xa92d('0x77')]:results[0x0][_0xa92d('0x77')];socket[_0xa92d('0x65')](_0xa92d('0x78')+_0x56964a,stats);fs[_0xa92d('0x79')](_0xeda50c);fs[_0xa92d('0x79')](_0x26456d);process[_0xa92d('0x3f')](0x0);})['catch'](function(_0x550b6d){logger['error'](_0x550b6d[_0xa92d('0x3e')]);process[_0xa92d('0x3f')](0x1);});}catch(_0x4470ff){logger[_0xa92d('0x47')](_0xa92d('0x7a'),_0x4470ff[_0xa92d('0x3e')]);process[_0xa92d('0x3f')](0x1);}},'error':function(_0x1bc2c6,_0x432344,_0x860132,_0x5dfc22){throw new Error(_0x5dfc22);}});}function validate(){if(process['argv']&&process[_0xa92d('0x7b')]['length']<0x4){throw new Error(_0xa92d('0x7c'));}var _0x508a7a=path[_0xa92d('0x13')](config[_0xa92d('0x4c')],_0xa92d('0x4d'),process[_0xa92d('0x7b')][0x2]);if(!fs[_0xa92d('0x7d')](_0x508a7a)){throw new Error(_0xa92d('0x7e'));}var _0x2508cf={};try{_0x2508cf=JSON[_0xa92d('0x51')](process['argv'][0x3]);if(!_0x2508cf[_0xa92d('0x4b')]){throw new Error('binding\x20doesn\x27t\x20exists');}if(!_0x2508cf[_0xa92d('0x4b')][_0xa92d('0x11')]){throw new Error(_0xa92d('0x7f'));}if(!_0x2508cf['binding']['firstName']){throw new Error(_0xa92d('0x80'));}var _0x516b29=0x0;if(_0x2508cf[_0xa92d('0x4b')][_0xa92d('0x5c')]){_0x516b29=0x1;}if(!_0x2508cf[_0xa92d('0x22')]){throw new Error(_0xa92d('0x81'));}}catch(_0x59a1a2){throw new Error(_0xa92d('0x82'));}var _0x1d5978=[];try{_0x1d5978=_[_0xa92d('0x83')](JSON['parse'](process[_0xa92d('0x7b')][0x4]),'id');}catch(_0x5149da){logger[_0xa92d('0x3c')](_0xa92d('0x84'));}main(_0x508a7a,_0x2508cf,_0x1d5978,_0x516b29);}validate();process['on']('SIGINT',handleStop);process['on'](_0xa92d('0x85'),handleUncaughtException);