Built motion from commit 5ba5b610.|2.5.33
[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 _0xe60c=['from','where','join','cm_contacts.phone','cm_contacts.scheduledat','cm_contacts.ListId','cm_contacts.createdAt','cm_contacts.updatedAt','cm_contacts.priority','insert','into','cm_hopper','fromQuery','ListId','createdAt','updatedAt','UserId','recallme','select','fields','cm_contacts','.CmListId','.id\x20=\x20','.CmListId\x20=\x20?','cm_contacts.createdAt\x20=\x20?','cm_contacts.phone\x20NOT\x20IN\x20(?)','\x22always\x22','\x22onlyIfOpen\x22','toString','cm_contacts.id','cm_hopper_black','ContactId','cm_contacts.ListId\x20=\x20','ListId\x20=\x20?','\x20=\x20?','keys','CompanyId',')\x20NOT\x20IN\x20?','deletedAt\x20IS\x20NULL','id\x20IN\x20?','MIN(id)','min_id','group','Received\x20SIGINT','message','exit','errors','code','sequelize','query','push','catch','info','main','stringify','send','start','binding','server/files/tmp','header','parse','createReadStream','data','length','hasOwnProperty','trim','replace','scheduledat','isValid','scheduledat\x20wrong\x20format\x20(YYYY-MM-DD\x20HH:mm:ss)','isNaN','isNumber','includes','email','email\x20wrong\x20format','dateOfBirth','dateOfBirth\x20wrong\x20format\x20(YYYY-MM-DD)','firstName','\x20not\x20specified','SystemRow','rows','emit','contact:import:','Abort\x20parser','abort','SystemError','error','duplicates','cm_contacts_','CREATE\x20TABLE\x20','\x20LIKE\x20cm_contacts;','isNil',',\x20scheduledAt\x20=\x20NOW()','DROP\x20TABLE\x20','voice_queues_has_cm_lists','VoiceQueueId','voice_queues','campaigns_has_cm_lists','CampaignId','campaigns_has_cm_blacklists','campaigns','each','then','finish','affectedRows','unlink','complete','argv','arguments\x20<filename>\x20<parameters>\x20<agents>','root','existsSync','binding\x20doesn\x27t\x20exists','firstName\x20is\x20mandatory','ListId\x20is\x20mandatory','map','uncaughtException','path','lodash','papaparse','moment','squel','ioredis','../../../mysqldb','../../../config/environment','../../../config/logger','import','redis','format','YYYY-MM-DD\x20HH:mm:ss','test','field','phone'];(function(_0x32b542,_0x4512fa){var _0x554d54=function(_0x35cdfc){while(--_0x35cdfc){_0x32b542['push'](_0x32b542['shift']());}};_0x554d54(++_0x4512fa);}(_0xe60c,0x17c));var _0xce60=function(_0x3f3f06,_0x581e5b){_0x3f3f06=_0x3f3f06-0x0;var _0x140feb=_0xe60c[_0x3f3f06];return _0x140feb;};'use strict';var fs=require('fs');var path=require(_0xce60('0x0'));var _=require(_0xce60('0x1'));var Papa=require(_0xce60('0x2'));var util=require('util');var BPromise=require('bluebird');var moment=require(_0xce60('0x3'));var squel=require(_0xce60('0x4'));var Redis=require(_0xce60('0x5'));var db=require(_0xce60('0x6'))['db'];var config=require(_0xce60('0x7'));var logger=require(_0xce60('0x8'))(_0xce60('0x9'));config[_0xce60('0xa')]=_['defaults'](config[_0xce60('0xa')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xce60('0xa')]));var stats={'finish':![],'errors':[],'rows':0x0,'affectedRows':0x0};var results=[];var stopped=![];var NOW=moment()[_0xce60('0xb')](_0xce60('0xc'));function isEmail(_0x36fbd6){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))*$/[_0xce60('0xd')](_0x36fbd6);}function selectNotIn(_0x2ae919,_0xcabe1b,_0x12fdd2,_0x23782e,_0x216ab1){return squel['select']()[_0xce60('0xe')](_0xce60('0xf'))[_0xce60('0x10')](_0x23782e)['join'](_0xcabe1b,null,_0xcabe1b+'.id\x20=\x20'+_0x23782e+'.'+_0x12fdd2)[_0xce60('0x11')](_0x23782e+'.'+_0x12fdd2+'\x20=\x20'+_0x2ae919+'.'+_0x12fdd2)[_0xce60('0x11')](_0xcabe1b+'.dialCheckDuplicateType\x20IN\x20('+_0x216ab1[_0xce60('0x12')]()+')');}function insertCmHopper(_0x5c0bd9,_0x120d2b,_0x4d3a4c,_0x16dbe8,_0x2729fe){var _0x592609=[_0xce60('0x13'),_0xce60('0x14'),'cm_contacts.id',_0xce60('0x15'),_0x120d2b+'.'+_0x16dbe8,_0xce60('0x16'),_0xce60('0x17'),_0xce60('0x18'),'cm_contacts.UserId','\x22'+_0x2729fe+'\x22'];return squel[_0xce60('0x19')]()[_0xce60('0x1a')](_0xce60('0x1b'))[_0xce60('0x1c')]([_0xce60('0xf'),'scheduledat','ContactId',_0xce60('0x1d'),_0x16dbe8,_0xce60('0x1e'),_0xce60('0x1f'),'priority',_0xce60('0x20'),_0xce60('0x21')],squel[_0xce60('0x22')]()[_0xce60('0x23')](_0x592609)['from'](_0x120d2b)[_0xce60('0x12')](_0xce60('0x24'),null,'cm_contacts.ListId\x20=\x20'+_0x120d2b+_0xce60('0x25'))['join'](_0x4d3a4c,null,_0x4d3a4c+_0xce60('0x26')+_0x120d2b+'.'+_0x16dbe8)[_0xce60('0x11')](_0x120d2b+_0xce60('0x27'),_0x5c0bd9)[_0xce60('0x11')](_0xce60('0x28'),NOW)[_0xce60('0x11')](_0xce60('0x29'),selectNotIn(_0x120d2b,_0x4d3a4c,_0x16dbe8,_0xce60('0x1b'),[_0xce60('0x2a'),_0xce60('0x2b')]))[_0xce60('0x11')]('cm_contacts.phone\x20NOT\x20IN\x20(?)',selectNotIn(_0x120d2b,_0x4d3a4c,_0x16dbe8,_0xce60('0x1b'),[_0xce60('0x2a')])))[_0xce60('0x2c')]();}function insertCmHopperBlack(_0x136531,_0x1fe8c1,_0x20b4dd,_0x11f818){var _0x2f272e=['cm_contacts.phone',_0xce60('0x2d'),'cm_contacts.ListId',_0x1fe8c1+'.'+_0x11f818,_0xce60('0x16'),'cm_contacts.updatedAt'];return squel[_0xce60('0x19')]()['into'](_0xce60('0x2e'))['fromQuery'](['phone',_0xce60('0x2f'),_0xce60('0x1d'),_0x11f818,_0xce60('0x1e'),_0xce60('0x1f')],squel['select']()[_0xce60('0x23')](_0x2f272e)['from'](_0x1fe8c1)[_0xce60('0x12')](_0xce60('0x24'),null,_0xce60('0x30')+_0x1fe8c1+_0xce60('0x25'))['join'](_0x20b4dd,null,_0x20b4dd+_0xce60('0x26')+_0x1fe8c1+'.'+_0x11f818)[_0xce60('0x11')](_0x1fe8c1+_0xce60('0x27'),_0x136531)['where'](_0xce60('0x28'),NOW)[_0xce60('0x11')](_0xce60('0x29'),squel[_0xce60('0x22')]()[_0xce60('0xe')]('phone')[_0xce60('0x10')](_0xce60('0x2e'))['where'](_0xce60('0x31'),_0x136531)[_0xce60('0x11')](_0x11f818+_0xce60('0x32'),_0x1fe8c1+'.'+_0x11f818)))[_0xce60('0x2c')]();}function insertCmContact(_0x400dec,_0x58ad17,_0x4a73fa,_0x5ec6ce){var _0x133ae9=_['concat'](_[_0xce60('0x33')](_0x5ec6ce),[_0xce60('0x1d'),_0xce60('0x34'),'createdAt',_0xce60('0x1f')]);return squel[_0xce60('0x19')]()['into'](_0xce60('0x24'))[_0xce60('0x1c')](_0x133ae9,squel[_0xce60('0x22')]()[_0xce60('0x23')](_0x133ae9)[_0xce60('0x10')](_0x58ad17)[_0xce60('0x11')]('('+_0x4a73fa['join'](',')+_0xce60('0x35'),squel[_0xce60('0x22')]()[_0xce60('0x23')](_0x4a73fa)['from'](_0xce60('0x24'))[_0xce60('0x11')](_0xce60('0x31'),_0x400dec)[_0xce60('0x11')](_0xce60('0x36')))[_0xce60('0x11')](_0xce60('0x37'),squel[_0xce60('0x22')]()[_0xce60('0xe')](_0xce60('0x38'),_0xce60('0x39'))[_0xce60('0x10')](_0x58ad17)[_0xce60('0x3a')](_0x4a73fa[_0xce60('0x12')](','))))[_0xce60('0x2c')]();}function handleStop(){logger['info'](_0xce60('0x3b'));stopped=!![];}function handleUncaughtException(_0x3407db){logger['error'](_0x3407db[_0xce60('0x3c')]);process[_0xce60('0x3d')](0x1);}function handleError(_0x44a3eb,_0x58a1f9){stats[_0xce60('0x3e')]['push']({'name':_0x58a1f9[_0xce60('0x3f')],'message':_0x58a1f9[_0xce60('0x3c')],'row':_0x44a3eb});}function handleQuery(_0x10ffd8){logger['info'](_0x10ffd8);return db[_0xce60('0x40')][_0xce60('0x41')](_0x10ffd8)['spread'](function(_0x37da97){results[_0xce60('0x42')](_0x37da97);})[_0xce60('0x43')](function(_0x5d4d6f){logger['error'](_0x5d4d6f[_0xce60('0x3c')]);});}function main(_0x139bf2,_0x1b3706,_0xf1b780,_0x147a2e){logger[_0xce60('0x44')](_0xce60('0x45'),_0x139bf2,JSON[_0xce60('0x46')](_0x1b3706));process[_0xce60('0x47')](_0xce60('0x48'));var _0x1b9b59=_0x1b3706[_0xce60('0x49')];var _0x19138f=_0x1b3706['socket_timestamp'];var _0x2473d0=path[_0xce60('0x12')](config['root'],_0xce60('0x4a'),_0x19138f+'.csv');var _0x1b844b=_[_0xce60('0x33')](_0x1b9b59)[_0xce60('0x12')]();logger[_0xce60('0x44')](_0xce60('0x4b'),_0x1b844b);fs['writeFileSync'](_0x2473d0,_0x1b844b+'\x0a');Papa[_0xce60('0x4c')](fs[_0xce60('0x4d')](_0x139bf2),{'header':!![],'skipEmptyLines':!![],'step':function(_0x4862ec,_0x216d67){try{for(var _0x1845fc=0x0,_0xd78a01=[];_0x1845fc<_0x4862ec[_0xce60('0x4e')][_0xce60('0x4f')];_0x1845fc++){stats['rows']+=0x1;if(_0x4862ec['errors'][_0x1845fc]){handleError(_0x4862ec[_0xce60('0x4e')][_0x1845fc],_0x4862ec['errors'][_0x1845fc]);}else{var _0x10e82f=[];for(var _0x338045 in _0x1b9b59){if(_0x1b9b59[_0xce60('0x50')](_0x338045)){if(_0x4862ec[_0xce60('0x4e')][_0x1845fc][_0x1b9b59[_0x338045]]){var _0x2f62ef=_[_0xce60('0x51')](_0x4862ec[_0xce60('0x4e')][_0x1845fc][_0x1b9b59[_0x338045]][_0xce60('0x52')](/"/g,'\x27'));switch(_0x338045){case _0xce60('0x53'):var _0x18b939=moment(_0x2f62ef,_0xce60('0xc'),!![]);if(_0x18b939[_0xce60('0x54')]()){_0xd78a01[_0xce60('0x42')]('\x22'+_0x2f62ef+'\x22');}else{_0x10e82f['push'](_0xce60('0x55'));}break;case'priority':var _0x4a208a=parseInt(_0x2f62ef);_0x2f62ef=_[_0xce60('0x56')](_0x4a208a)||_0x4a208a<0x0||_0x4a208a>0x4?_0x147a2e?0x3:0x2:_0x4a208a;_0xd78a01['push']('\x22'+_0x2f62ef+'\x22');break;case _0xce60('0x20'):var _0x3bd0ab=parseInt(_0x2f62ef);if(_[_0xce60('0x57')](_0x3bd0ab)&&_[_0xce60('0x58')](_0xf1b780,_0x3bd0ab)){_0xd78a01['push']('\x22'+_0x3bd0ab+'\x22');}else{_0x10e82f[_0xce60('0x42')]('agent\x20not\x20exists');}break;case _0xce60('0x59'):if(isEmail(_0x2f62ef)){_0xd78a01[_0xce60('0x42')]('\x22'+_0x2f62ef+'\x22');}else{_0x10e82f[_0xce60('0x42')](_0xce60('0x5a'));}break;case _0xce60('0x5b'):var _0x19100b=moment(_0x2f62ef,'YYYY-MM-DD',!![]);if(_0x19100b[_0xce60('0x54')]()){_0xd78a01['push']('\x22'+_0x2f62ef+'\x22');}else{_0x10e82f[_0xce60('0x42')](_0xce60('0x5c'));}break;default:_0xd78a01['push']('\x22'+_0x2f62ef+'\x22');}}else{switch(_0x338045){case _0xce60('0x5d'):case _0xce60('0xf'):_0x10e82f[_0xce60('0x42')](_0x338045+_0xce60('0x5e'));break;default:_0xd78a01[_0xce60('0x42')]('\x22\x22');}}}}if(_0x10e82f[_0xce60('0x4f')]){handleError(_0x4862ec[_0xce60('0x4e')][_0x1845fc],{'code':_0xce60('0x5f'),'message':_0x10e82f['join']()});}else{fs['appendFileSync'](_0x2473d0,_0xd78a01[_0xce60('0x12')]()+'\x0a');}_0xd78a01=[];}if(!(stats[_0xce60('0x60')]%0xc8)){socket[_0xce60('0x61')](_0xce60('0x62')+_0x19138f,stats);stats[_0xce60('0x3e')]=[];}}if(stopped){logger['info'](_0xce60('0x63'));_0x216d67[_0xce60('0x64')]();}}catch(_0x150848){handleError(_0x4862ec[_0xce60('0x4e')][_0x1845fc],{'code':_0xce60('0x65'),'message':_0x150848[_0xce60('0x3c')]});logger[_0xce60('0x66')]('step',_0x150848[_0xce60('0x3c')]);}},'complete':function(){try{var _0x43d0d6=[];var _0x460a5d=_0xce60('0x24');if(_0x1b3706[_0xce60('0x67')]&&_0x1b3706[_0xce60('0x67')]['length']){_0x460a5d=_0xce60('0x68')+_0x19138f;_0x43d0d6[_0xce60('0x42')](_0xce60('0x69')+_0x460a5d+_0xce60('0x6a'));}var _0xfab23e=util[_0xce60('0xb')]('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',_0x2473d0,_0x460a5d,_0x1b844b,_0x1b3706[_0xce60('0x1d')],_0x1b3706[_0xce60('0x34')]||null,NOW,NOW);if(_[_0xce60('0x6b')](_0x1b9b59[_0xce60('0x53')])){_0xfab23e+=_0xce60('0x6c');}_0x43d0d6[_0xce60('0x42')](_0xfab23e);if(_0x1b3706[_0xce60('0x67')]&&_0x1b3706['duplicates'][_0xce60('0x4f')]){_0x43d0d6[_0xce60('0x42')](insertCmContact(_0x1b3706[_0xce60('0x1d')],_0x460a5d,_0x1b3706[_0xce60('0x67')],_0x1b9b59));_0x43d0d6[_0xce60('0x42')](_0xce60('0x6d')+_0x460a5d+';');}_0x43d0d6[_0xce60('0x42')](insertCmHopper(_0x1b3706[_0xce60('0x1d')],_0xce60('0x6e'),'voice_queues',_0xce60('0x6f'),_0x147a2e));_0x43d0d6[_0xce60('0x42')](insertCmHopperBlack(_0x1b3706[_0xce60('0x1d')],'voice_queues_has_cm_blacklists',_0xce60('0x70'),_0xce60('0x6f')));_0x43d0d6[_0xce60('0x42')](insertCmHopper(_0x1b3706['ListId'],_0xce60('0x71'),'campaigns',_0xce60('0x72'),_0x147a2e));_0x43d0d6['push'](insertCmHopperBlack(_0x1b3706['ListId'],_0xce60('0x73'),_0xce60('0x74'),_0xce60('0x72')));BPromise[_0xce60('0x75')](_0x43d0d6,handleQuery)[_0xce60('0x76')](function(_0x55f7e4){stats[_0xce60('0x77')]=!![];stats[_0xce60('0x78')]=_0x1b3706[_0xce60('0x67')]&&_0x1b3706[_0xce60('0x67')][_0xce60('0x4f')]?results[0x2]['affectedRows']:results[0x0][_0xce60('0x78')];socket[_0xce60('0x61')](_0xce60('0x62')+_0x19138f,stats);fs[_0xce60('0x79')](_0x139bf2);fs[_0xce60('0x79')](_0x2473d0);process[_0xce60('0x3d')](0x0);})['catch'](function(_0x4c6785){logger[_0xce60('0x66')](_0x4c6785['message']);process[_0xce60('0x3d')](0x1);});}catch(_0x480ba7){logger[_0xce60('0x66')](_0xce60('0x7a'),_0x480ba7[_0xce60('0x3c')]);process['exit'](0x1);}},'error':function(_0x4d450c,_0xc01c5f,_0xeaf272,_0x625370){throw new Error(_0x625370);}});}function validate(){if(process[_0xce60('0x7b')]&&process[_0xce60('0x7b')][_0xce60('0x4f')]<0x4){throw new Error(_0xce60('0x7c'));}var _0x1349bd=path[_0xce60('0x12')](config[_0xce60('0x7d')],_0xce60('0x4a'),process[_0xce60('0x7b')][0x2]);if(!fs[_0xce60('0x7e')](_0x1349bd)){throw new Error('file\x20doesn\x27t\x20exists');}var _0x47769a={};try{_0x47769a=JSON['parse'](process[_0xce60('0x7b')][0x3]);if(!_0x47769a[_0xce60('0x49')]){throw new Error(_0xce60('0x7f'));}if(!_0x47769a[_0xce60('0x49')][_0xce60('0xf')]){throw new Error('phone\x20is\x20mandatory');}if(!_0x47769a[_0xce60('0x49')][_0xce60('0x5d')]){throw new Error(_0xce60('0x80'));}var _0x92d974=0x0;if(_0x47769a['binding'][_0xce60('0x20')]){_0x92d974=0x1;}if(!_0x47769a[_0xce60('0x1d')]){throw new Error(_0xce60('0x81'));}}catch(_0x300b52){throw new Error('body\x20id\x20mandatory');}var _0x115db8=[];try{_0x115db8=_[_0xce60('0x82')](JSON['parse'](process[_0xce60('0x7b')][0x4]),'id');}catch(_0x304af5){logger[_0xce60('0x44')]('No\x20agent\x20available');}main(_0x1349bd,_0x47769a,_0x115db8,_0x92d974);}validate();process['on']('SIGINT',handleStop);process['on'](_0xce60('0x83'),handleUncaughtException);