6ff4424a2743a98c7457513441cc9e4ee8c8acd8
[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 _0x7efc=['socket.io-emitter','format','YYYY-MM-DD\x20HH:mm:ss','test','field','from','\x20=\x20','where','.dialCheckDuplicateType\x20IN\x20(','join','cm_contacts.phone','cm_contacts.scheduledat','cm_contacts.id','cm_contacts.ListId','cm_contacts.createdAt','cm_contacts.updatedAt','cm_contacts.UserId','insert','into','fromQuery','ContactId','ListId','createdAt','updatedAt','UserId','recallme','select','fields','cm_contacts','cm_contacts.ListId\x20=\x20','.CmListId','.id\x20=\x20','cm_contacts.phone\x20NOT\x20IN\x20(?)','cm_hopper','\x22always\x22','\x22onlyIfOpen\x22','toString','phone','cm_contacts.createdAt\x20=\x20?','cm_hopper_black','ListId\x20=\x20?','concat','keys','deletedAt\x20IS\x20NULL','min_id','Received\x20SIGINT','error','message','errors','push','code','info','sequelize','catch','main','stringify','send','start','binding','socket_timestamp','server/files/tmp','header','writeFileSync','createReadStream','length','rows','hasOwnProperty','data','trim','replace','scheduledat','isValid','scheduledat\x20wrong\x20format\x20(YYYY-MM-DD\x20HH:mm:ss)','priority','isNumber','includes','agent\x20not\x20exists','dateOfBirth','YYYY-MM-DD','dateOfBirth\x20wrong\x20format\x20(YYYY-MM-DD)','firstName','\x20not\x20specified','SystemRow','appendFileSync','contact:import:','Abort\x20parser','abort','SystemError','step','duplicates','cm_contacts_','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','isNil',',\x20scheduledAt\x20=\x20NOW()','DROP\x20TABLE\x20','voice_queues_has_cm_lists','voice_queues','voice_queues_has_cm_blacklists','VoiceQueueId','campaigns_has_cm_lists','campaigns','CampaignId','each','then','finish','affectedRows','emit','unlink','exit','complete','argv','arguments\x20<filename>\x20<parameters>\x20<agents>','existsSync','file\x20doesn\x27t\x20exists','binding\x20doesn\x27t\x20exists','phone\x20is\x20mandatory','firstName\x20is\x20mandatory','ListId\x20is\x20mandatory','body\x20id\x20mandatory','map','No\x20agent\x20available','SIGINT','uncaughtException','path','papaparse','util','bluebird','moment','ioredis','../../../config/environment','redis','defaults'];(function(_0x256022,_0x24f7d7){var _0x1f6466=function(_0x485043){while(--_0x485043){_0x256022['push'](_0x256022['shift']());}};_0x1f6466(++_0x24f7d7);}(_0x7efc,0x183));var _0xc7ef=function(_0x595bd1,_0xb1e7a){_0x595bd1=_0x595bd1-0x0;var _0xd0344f=_0x7efc[_0x595bd1];return _0xd0344f;};'use strict';var fs=require('fs');var path=require(_0xc7ef('0x0'));var _=require('lodash');var Papa=require(_0xc7ef('0x1'));var util=require(_0xc7ef('0x2'));var BPromise=require(_0xc7ef('0x3'));var moment=require(_0xc7ef('0x4'));var squel=require('squel');var Redis=require(_0xc7ef('0x5'));var db=require('../../../mysqldb')['db'];var config=require(_0xc7ef('0x6'));var logger=require('../../../config/logger')('import');config[_0xc7ef('0x7')]=_[_0xc7ef('0x8')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0xc7ef('0x9'))(new Redis(config[_0xc7ef('0x7')]));var stats={'finish':![],'errors':[],'rows':0x0,'affectedRows':0x0};var results=[];var stopped=![];var NOW=moment()[_0xc7ef('0xa')](_0xc7ef('0xb'));function isEmail(_0x152e77){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))*$/[_0xc7ef('0xc')](_0x152e77);}function selectNotIn(_0x3f6ae2,_0x15223a,_0x304941,_0x5d5523,_0x25f151){return squel['select']()[_0xc7ef('0xd')]('phone')[_0xc7ef('0xe')](_0x5d5523)['join'](_0x15223a,null,_0x15223a+'.id\x20=\x20'+_0x5d5523+'.'+_0x304941)['where'](_0x5d5523+'.'+_0x304941+_0xc7ef('0xf')+_0x3f6ae2+'.'+_0x304941)[_0xc7ef('0x10')](_0x15223a+_0xc7ef('0x11')+_0x25f151[_0xc7ef('0x12')]()+')');}function insertCmHopper(_0x5175a0,_0x25a7df,_0x4a327e,_0x37217c,_0x1e1a53){var _0x2b04ae=[_0xc7ef('0x13'),_0xc7ef('0x14'),_0xc7ef('0x15'),_0xc7ef('0x16'),_0x25a7df+'.'+_0x37217c,_0xc7ef('0x17'),_0xc7ef('0x18'),'cm_contacts.priority',_0xc7ef('0x19'),'\x22'+_0x1e1a53+'\x22'];return squel[_0xc7ef('0x1a')]()[_0xc7ef('0x1b')]('cm_hopper')[_0xc7ef('0x1c')](['phone','scheduledat',_0xc7ef('0x1d'),_0xc7ef('0x1e'),_0x37217c,_0xc7ef('0x1f'),_0xc7ef('0x20'),'priority',_0xc7ef('0x21'),_0xc7ef('0x22')],squel[_0xc7ef('0x23')]()[_0xc7ef('0x24')](_0x2b04ae)[_0xc7ef('0xe')](_0x25a7df)['join'](_0xc7ef('0x25'),null,_0xc7ef('0x26')+_0x25a7df+_0xc7ef('0x27'))[_0xc7ef('0x12')](_0x4a327e,null,_0x4a327e+_0xc7ef('0x28')+_0x25a7df+'.'+_0x37217c)['where'](_0x25a7df+'.CmListId\x20=\x20?',_0x5175a0)['where']('cm_contacts.createdAt\x20=\x20?',NOW)['where'](_0xc7ef('0x29'),selectNotIn(_0x25a7df,_0x4a327e,_0x37217c,_0xc7ef('0x2a'),[_0xc7ef('0x2b'),_0xc7ef('0x2c')]))[_0xc7ef('0x10')](_0xc7ef('0x29'),selectNotIn(_0x25a7df,_0x4a327e,_0x37217c,_0xc7ef('0x2a'),[_0xc7ef('0x2b')])))[_0xc7ef('0x2d')]();}function insertCmHopperBlack(_0x4f23af,_0x4273b6,_0x1ba148,_0x189533){var _0x41d10b=['cm_contacts.phone',_0xc7ef('0x15'),'cm_contacts.ListId',_0x4273b6+'.'+_0x189533,_0xc7ef('0x17'),_0xc7ef('0x18')];return squel[_0xc7ef('0x1a')]()[_0xc7ef('0x1b')]('cm_hopper_black')[_0xc7ef('0x1c')]([_0xc7ef('0x2e'),'ContactId',_0xc7ef('0x1e'),_0x189533,_0xc7ef('0x1f'),_0xc7ef('0x20')],squel[_0xc7ef('0x23')]()[_0xc7ef('0x24')](_0x41d10b)[_0xc7ef('0xe')](_0x4273b6)[_0xc7ef('0x12')]('cm_contacts',null,'cm_contacts.ListId\x20=\x20'+_0x4273b6+_0xc7ef('0x27'))[_0xc7ef('0x12')](_0x1ba148,null,_0x1ba148+_0xc7ef('0x28')+_0x4273b6+'.'+_0x189533)[_0xc7ef('0x10')](_0x4273b6+'.CmListId\x20=\x20?',_0x4f23af)['where'](_0xc7ef('0x2f'),NOW)[_0xc7ef('0x10')](_0xc7ef('0x29'),squel[_0xc7ef('0x23')]()[_0xc7ef('0xd')](_0xc7ef('0x2e'))[_0xc7ef('0xe')](_0xc7ef('0x30'))[_0xc7ef('0x10')](_0xc7ef('0x31'),_0x4f23af)['where'](_0x189533+'\x20=\x20?',_0x4273b6+'.'+_0x189533)))['toString']();}function insertCmContact(_0x20b01b,_0xa46ca5,_0x38436d,_0xc12d35){var _0x35d01d=_[_0xc7ef('0x32')](_[_0xc7ef('0x33')](_0xc12d35),[_0xc7ef('0x1e'),'CompanyId','createdAt',_0xc7ef('0x20')]);return squel['insert']()[_0xc7ef('0x1b')](_0xc7ef('0x25'))[_0xc7ef('0x1c')](_0x35d01d,squel['select']()['fields'](_0x35d01d)[_0xc7ef('0xe')](_0xa46ca5)[_0xc7ef('0x10')]('('+_0x38436d[_0xc7ef('0x12')](',')+')\x20NOT\x20IN\x20?',squel[_0xc7ef('0x23')]()['fields'](_0x38436d)[_0xc7ef('0xe')]('cm_contacts')[_0xc7ef('0x10')](_0xc7ef('0x31'),_0x20b01b)['where'](_0xc7ef('0x34')))[_0xc7ef('0x10')]('id\x20IN\x20?',squel[_0xc7ef('0x23')]()[_0xc7ef('0xd')]('MIN(id)',_0xc7ef('0x35'))[_0xc7ef('0xe')](_0xa46ca5)['group'](_0x38436d[_0xc7ef('0x12')](','))))[_0xc7ef('0x2d')]();}function handleStop(){logger['info'](_0xc7ef('0x36'));stopped=!![];}function handleUncaughtException(_0x21efc1){logger[_0xc7ef('0x37')](_0x21efc1[_0xc7ef('0x38')]);process['exit'](0x1);}function handleError(_0x47d071,_0x1666d6){stats[_0xc7ef('0x39')][_0xc7ef('0x3a')]({'name':_0x1666d6[_0xc7ef('0x3b')],'message':_0x1666d6[_0xc7ef('0x38')],'row':_0x47d071});}function handleQuery(_0x284e58){logger[_0xc7ef('0x3c')](_0x284e58);return db[_0xc7ef('0x3d')]['query'](_0x284e58)['spread'](function(_0xb03e48){results['push'](_0xb03e48);})[_0xc7ef('0x3e')](function(_0x62f262){logger[_0xc7ef('0x37')](_0x62f262['message']);});}function main(_0x114d88,_0x26cac6,_0xf6a17e,_0x13ec91){logger['info'](_0xc7ef('0x3f'),_0x114d88,JSON[_0xc7ef('0x40')](_0x26cac6));process[_0xc7ef('0x41')](_0xc7ef('0x42'));var _0x3eb758=_0x26cac6[_0xc7ef('0x43')];var _0x3bd583=_0x26cac6[_0xc7ef('0x44')];var _0x5e0e1c=path[_0xc7ef('0x12')](config['root'],_0xc7ef('0x45'),_0x3bd583+'.csv');var _0x2313bf=_[_0xc7ef('0x33')](_0x3eb758)[_0xc7ef('0x12')]();logger[_0xc7ef('0x3c')](_0xc7ef('0x46'),_0x2313bf);fs[_0xc7ef('0x47')](_0x5e0e1c,_0x2313bf+'\x0a');Papa['parse'](fs[_0xc7ef('0x48')](_0x114d88),{'header':!![],'skipEmptyLines':!![],'step':function(_0x3a1c5c,_0x15e67c){try{for(var _0x402413=0x0,_0x21a795=[];_0x402413<_0x3a1c5c['data'][_0xc7ef('0x49')];_0x402413++){stats[_0xc7ef('0x4a')]+=0x1;if(_0x3a1c5c[_0xc7ef('0x39')][_0x402413]){handleError(_0x3a1c5c['data'][_0x402413],_0x3a1c5c[_0xc7ef('0x39')][_0x402413]);}else{var _0x10b0b7=[];for(var _0x556f0b in _0x3eb758){if(_0x3eb758[_0xc7ef('0x4b')](_0x556f0b)){if(_0x3a1c5c[_0xc7ef('0x4c')][_0x402413][_0x3eb758[_0x556f0b]]){var _0x3271dd=_[_0xc7ef('0x4d')](_0x3a1c5c[_0xc7ef('0x4c')][_0x402413][_0x3eb758[_0x556f0b]][_0xc7ef('0x4e')](/"/g,'\x27'));switch(_0x556f0b){case _0xc7ef('0x4f'):var _0x1ece92=moment(_0x3271dd,_0xc7ef('0xb'),!![]);if(_0x1ece92[_0xc7ef('0x50')]()){_0x21a795['push']('\x22'+_0x3271dd+'\x22');}else{_0x10b0b7[_0xc7ef('0x3a')](_0xc7ef('0x51'));}break;case _0xc7ef('0x52'):var _0xbb2108=parseInt(_0x3271dd);_0x3271dd=_['isNaN'](_0xbb2108)||_0xbb2108<0x0||_0xbb2108>0x4?_0x13ec91?0x3:0x2:_0xbb2108;_0x21a795['push']('\x22'+_0x3271dd+'\x22');break;case'UserId':var _0xc4fb9a=parseInt(_0x3271dd);if(_[_0xc7ef('0x53')](_0xc4fb9a)&&_[_0xc7ef('0x54')](_0xf6a17e,_0xc4fb9a)){_0x21a795[_0xc7ef('0x3a')]('\x22'+_0xc4fb9a+'\x22');}else{_0x10b0b7[_0xc7ef('0x3a')](_0xc7ef('0x55'));}break;case'email':if(isEmail(_0x3271dd)){_0x21a795[_0xc7ef('0x3a')]('\x22'+_0x3271dd+'\x22');}else{_0x10b0b7[_0xc7ef('0x3a')]('email\x20wrong\x20format');}break;case _0xc7ef('0x56'):var _0x486180=moment(_0x3271dd,_0xc7ef('0x57'),!![]);if(_0x486180[_0xc7ef('0x50')]()){_0x21a795[_0xc7ef('0x3a')]('\x22'+_0x3271dd+'\x22');}else{_0x10b0b7['push'](_0xc7ef('0x58'));}break;default:_0x21a795[_0xc7ef('0x3a')]('\x22'+_0x3271dd+'\x22');}}else{switch(_0x556f0b){case _0xc7ef('0x59'):case _0xc7ef('0x2e'):_0x10b0b7[_0xc7ef('0x3a')](_0x556f0b+_0xc7ef('0x5a'));break;default:_0x21a795[_0xc7ef('0x3a')]('\x22\x22');}}}}if(_0x10b0b7[_0xc7ef('0x49')]){handleError(_0x3a1c5c[_0xc7ef('0x4c')][_0x402413],{'code':_0xc7ef('0x5b'),'message':_0x10b0b7[_0xc7ef('0x12')]()});}else{fs[_0xc7ef('0x5c')](_0x5e0e1c,_0x21a795[_0xc7ef('0x12')]()+'\x0a');}_0x21a795=[];}if(!(stats[_0xc7ef('0x4a')]%0xc8)){socket['emit'](_0xc7ef('0x5d')+_0x3bd583,stats);stats[_0xc7ef('0x39')]=[];}}if(stopped){logger[_0xc7ef('0x3c')](_0xc7ef('0x5e'));_0x15e67c[_0xc7ef('0x5f')]();}}catch(_0x12157d){handleError(_0x3a1c5c[_0xc7ef('0x4c')][_0x402413],{'code':_0xc7ef('0x60'),'message':_0x12157d[_0xc7ef('0x38')]});logger[_0xc7ef('0x37')](_0xc7ef('0x61'),_0x12157d[_0xc7ef('0x38')]);}},'complete':function(){try{var _0x25f771=[];var _0x42d16b='cm_contacts';if(_0x26cac6['duplicates']&&_0x26cac6[_0xc7ef('0x62')][_0xc7ef('0x49')]){_0x42d16b=_0xc7ef('0x63')+_0x3bd583;_0x25f771[_0xc7ef('0x3a')]('CREATE\x20TABLE\x20'+_0x42d16b+'\x20LIKE\x20cm_contacts;');}var _0x234059=util[_0xc7ef('0xa')](_0xc7ef('0x64'),_0x5e0e1c,_0x42d16b,_0x2313bf,_0x26cac6[_0xc7ef('0x1e')],_0x26cac6['CompanyId']||null,NOW,NOW);if(_[_0xc7ef('0x65')](_0x3eb758['scheduledat'])){_0x234059+=_0xc7ef('0x66');}_0x25f771[_0xc7ef('0x3a')](_0x234059);if(_0x26cac6[_0xc7ef('0x62')]&&_0x26cac6[_0xc7ef('0x62')][_0xc7ef('0x49')]){_0x25f771['push'](insertCmContact(_0x26cac6[_0xc7ef('0x1e')],_0x42d16b,_0x26cac6[_0xc7ef('0x62')],_0x3eb758));_0x25f771[_0xc7ef('0x3a')](_0xc7ef('0x67')+_0x42d16b+';');}_0x25f771[_0xc7ef('0x3a')](insertCmHopper(_0x26cac6[_0xc7ef('0x1e')],_0xc7ef('0x68'),_0xc7ef('0x69'),'VoiceQueueId',_0x13ec91));_0x25f771[_0xc7ef('0x3a')](insertCmHopperBlack(_0x26cac6[_0xc7ef('0x1e')],_0xc7ef('0x6a'),_0xc7ef('0x69'),_0xc7ef('0x6b')));_0x25f771[_0xc7ef('0x3a')](insertCmHopper(_0x26cac6[_0xc7ef('0x1e')],_0xc7ef('0x6c'),_0xc7ef('0x6d'),_0xc7ef('0x6e'),_0x13ec91));_0x25f771[_0xc7ef('0x3a')](insertCmHopperBlack(_0x26cac6[_0xc7ef('0x1e')],'campaigns_has_cm_blacklists','campaigns','CampaignId'));BPromise[_0xc7ef('0x6f')](_0x25f771,handleQuery)[_0xc7ef('0x70')](function(_0x2f50f4){stats[_0xc7ef('0x71')]=!![];stats[_0xc7ef('0x72')]=_0x26cac6[_0xc7ef('0x62')]&&_0x26cac6[_0xc7ef('0x62')][_0xc7ef('0x49')]?results[0x2][_0xc7ef('0x72')]:results[0x0]['affectedRows'];socket[_0xc7ef('0x73')](_0xc7ef('0x5d')+_0x3bd583,stats);fs['unlink'](_0x114d88);fs[_0xc7ef('0x74')](_0x5e0e1c);process[_0xc7ef('0x75')](0x0);})[_0xc7ef('0x3e')](function(_0xf1714b){logger[_0xc7ef('0x37')](_0xf1714b[_0xc7ef('0x38')]);process[_0xc7ef('0x75')](0x1);});}catch(_0x447938){logger[_0xc7ef('0x37')](_0xc7ef('0x76'),_0x447938['message']);process[_0xc7ef('0x75')](0x1);}},'error':function(_0x435229,_0x1e1afb,_0x17aa9e,_0x561ed1){throw new Error(_0x561ed1);}});}function validate(){if(process[_0xc7ef('0x77')]&&process[_0xc7ef('0x77')][_0xc7ef('0x49')]<0x4){throw new Error(_0xc7ef('0x78'));}var _0x1b5b30=path['join'](config['root'],_0xc7ef('0x45'),process[_0xc7ef('0x77')][0x2]);if(!fs[_0xc7ef('0x79')](_0x1b5b30)){throw new Error(_0xc7ef('0x7a'));}var _0x1dc1c4={};try{_0x1dc1c4=JSON['parse'](process[_0xc7ef('0x77')][0x3]);if(!_0x1dc1c4['binding']){throw new Error(_0xc7ef('0x7b'));}if(!_0x1dc1c4[_0xc7ef('0x43')]['phone']){throw new Error(_0xc7ef('0x7c'));}if(!_0x1dc1c4[_0xc7ef('0x43')][_0xc7ef('0x59')]){throw new Error(_0xc7ef('0x7d'));}var _0x1a4888=0x0;if(_0x1dc1c4['binding'][_0xc7ef('0x21')]){_0x1a4888=0x1;}if(!_0x1dc1c4[_0xc7ef('0x1e')]){throw new Error(_0xc7ef('0x7e'));}}catch(_0x991b3e){throw new Error(_0xc7ef('0x7f'));}var _0x5a4e02=[];try{_0x5a4e02=_[_0xc7ef('0x80')](JSON['parse'](process['argv'][0x4]),'id');}catch(_0x51ebe6){logger['info'](_0xc7ef('0x81'));}main(_0x1b5b30,_0x1dc1c4,_0x5a4e02,_0x1a4888);}validate();process['on'](_0xc7ef('0x82'),handleStop);process['on'](_0xc7ef('0x83'),handleUncaughtException);