Built motion from commit 43538d75.|2.5.35
[motion2.git] / server / components / import / cm / csv.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 _0xd6f4=['CompanyId','find','duplicate','Duplicate\x20Contact','CmContact','create','then','pick','catch','Error\x20while\x20creating\x20contact:\x20','cmContact','checkHopper','inspect','insert','into','cm_hopper','fromQuery','ContactId','createdAt','updatedAt','field','NOW()','toString','from','cm_contacts','where','deletedAt\x20IS\x20NULL','ListId\x20=\x20?','phone\x20IS\x20NOT\x20NULL','phone\x20NOT\x20IN\x20(?)','\x20=\x20?','select','scheduledAt','id\x20IN\x20?','str','cm_hopper_final','cm_hopper_black','VoiceQueue','findAll','outbound','CmList','Lists','dialCheckDuplicateType','sequelize','VoiceQueueId','push','query','all','BlackLists','Campaign','get','always','CampaignId','onlyIfOpen','generalCheckHopper','Error\x20processing\x20rows\x20block:','stringify','finally','emit','contact:csv_','resolve','unlinkSync','Unable\x20to\x20delete\x20temp\x20file:','exit','info','CSV\x20import\x20process\x20stopped!','createReadStream','parse','CSV\x20parsed\x20correctly!','CSV\x20parse\x20error','Error\x20executing\x20contact\x20csv\x20import:','bluebird','lodash','papaparse','../../../mysqldb','../../../config/environment','../../../config/logger','api','redis','defaults','localhost','../../../api/cmContact/cmContact.socket','register','argv','undefined','Missing\x20filepath\x20parameter!','null','Missing\x20binding\x20parameters!','zipObject','split','Missing\x20ListId\x20parameter!','error','contact','index','The\x20row\x20is\x20empty\x20or\x20the\x20number\x20of\x20parameters\x20does\x20not\x20match\x20the\x20columns!','errors','length','map','message','hasOwnProperty','data','firstName\x20not\x20specified!','phone','phone\x20not\x20specified!','birthDate','YYYY-MM-DD','isValid','email\x20format\x20is\x20not\x20valid!','ListId'];(function(_0x2b0188,_0x2e6f26){var _0x30489c=function(_0x18c912){while(--_0x18c912){_0x2b0188['push'](_0x2b0188['shift']());}};_0x30489c(++_0x2e6f26);}(_0xd6f4,0x121));var _0x4d6f=function(_0x44f2dd,_0x349975){_0x44f2dd=_0x44f2dd-0x0;var _0x4f9ee0=_0xd6f4[_0x44f2dd];return _0x4f9ee0;};'use strict';var BPromise=require(_0x4d6f('0x0'));var util=require('util');var _=require(_0x4d6f('0x1'));var fs=require('fs');var squel=require('squel');var Papa=require(_0x4d6f('0x2'));var Redis=require('ioredis');var db=require(_0x4d6f('0x3'))['db'];var config=require(_0x4d6f('0x4'));var logger=require(_0x4d6f('0x5'))(_0x4d6f('0x6'));config[_0x4d6f('0x7')]=_[_0x4d6f('0x8')](config['redis'],{'host':_0x4d6f('0x9'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x4d6f('0x7')]));require(_0x4d6f('0xa'))[_0x4d6f('0xb')](socket);try{if(!process['argv'][0x2]||process[_0x4d6f('0xc')][0x2]===_0x4d6f('0xd')||process[_0x4d6f('0xc')][0x2]==='null'){throw new Error(_0x4d6f('0xe'));}var FILEPATH=process[_0x4d6f('0xc')][0x2];if(!process[_0x4d6f('0xc')][0x3]||process['argv'][0x3]===_0x4d6f('0xd')||process[_0x4d6f('0xc')][0x3]===_0x4d6f('0xf')||!process['argv'][0x4]||process['argv'][0x4]===_0x4d6f('0xd')||process[_0x4d6f('0xc')][0x4]===_0x4d6f('0xf')){throw new Error(_0x4d6f('0x10'));}var FIELDS=_[_0x4d6f('0x11')](process[_0x4d6f('0xc')][0x3][_0x4d6f('0x12')](','),process[_0x4d6f('0xc')][0x4][_0x4d6f('0x12')](','));if(!process['argv'][0x5]||process[_0x4d6f('0xc')][0x5]===_0x4d6f('0xd')||process[_0x4d6f('0xc')][0x5]==='null'){throw new Error(_0x4d6f('0x13'));}var LISTID=process[_0x4d6f('0xc')][0x5];var COMPANYID=process[_0x4d6f('0xc')][0x6]&&process[_0x4d6f('0xc')][0x6]!==_0x4d6f('0xd')&&process['argv'][0x6]!==_0x4d6f('0xf')?process[_0x4d6f('0xc')][0x6]:null;var DUPLICATES=process[_0x4d6f('0xc')][0x7]&&process['argv'][0x7]!==_0x4d6f('0xd')&&process[_0x4d6f('0xc')][0x7]!==_0x4d6f('0xf')?process[_0x4d6f('0xc')][0x7]:null;if(!process['argv'][0x8]||process['argv'][0x8]==='undefined'||process[_0x4d6f('0xc')][0x8]===_0x4d6f('0xf')){throw new Error('Missing\x20socket_timestamp\x20parameter!');}var SOCKET_TIMESTAMP=process[_0x4d6f('0xc')][0x8];}catch(_0x358a90){logger[_0x4d6f('0x14')](_0x358a90);endCsv();}var total=0x0;var pTotal=0x0;var success=0x0;var errors=0x0;var duplicates=0x0;var rows=[];var hopperContacts='';var promises=[];var index=0x0;var alreadyInvalid=![];function handleCheckRowError(_0x387c7c,_0x4a1b52,_0x24da58,_0xa61c4f){var _0x413cfd={'message':_0x4a1b52};_0x413cfd[_0x387c7c]=!![];if(_0x24da58){_0x413cfd[_0x4d6f('0x15')]=_0x24da58;}if(_0xa61c4f){_0x413cfd[_0x4d6f('0x16')]=_0xa61c4f;}return _0x413cfd;}function isEmail(_0x4da1dd){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'](_0x4da1dd);}function checkRow(_0x4f318a,_0x514a4f,_0x4adcbc){return new BPromise(function(_0x2222f1,_0x488980){if(_['isNil'](_0x4f318a)){return _0x488980(handleCheckRowError('error',_0x4d6f('0x17'),null,_0x4adcbc));}if(_0x4f318a['errors']&&_0x4f318a[_0x4d6f('0x18')][_0x4d6f('0x19')]){var _0x405c88=_[_0x4d6f('0x1a')](_0x4f318a[_0x4d6f('0x18')],_0x4d6f('0x1b'))['join'](';');return _0x488980(handleCheckRowError(_0x4d6f('0x14'),_0x405c88,null,_0x4adcbc));}var _0x2822ac={};for(var _0x15cf9b in FIELDS){if(FIELDS[_0x4d6f('0x1c')](_0x15cf9b)&&FIELDS[_0x15cf9b]){_0x2822ac[_0x15cf9b]=_0x4f318a['data'][0x0][FIELDS[_0x15cf9b]]||_0x4f318a[_0x4d6f('0x1d')][0x0]['\ufeff'+FIELDS[_0x15cf9b]];}}if(!_0x2822ac['firstName']){return _0x488980(handleCheckRowError(_0x4d6f('0x14'),_0x4d6f('0x1e'),null,_0x4adcbc));}if(!_0x2822ac[_0x4d6f('0x1f')]){return _0x488980(handleCheckRowError(_0x4d6f('0x14'),_0x4d6f('0x20'),null,_0x4adcbc));}if(_0x2822ac[_0x4d6f('0x21')]){var _0x1ba382=moment(_0x2822ac['birthDate'],_0x4d6f('0x22'));if(!_0x1ba382[_0x4d6f('0x23')]()){return _0x488980(handleCheckRowError('error','birthDate\x20format\x20is\x20invalid,\x20YYYY-MM-DD\x20format\x20is\x20supported!',null,_0x4adcbc));}}if(_0x2822ac['email']){if(!isEmail(_0x2822ac['email'])){return _0x488980(handleCheckRowError(_0x4d6f('0x14'),_0x4d6f('0x24'),null,_0x4adcbc));}}_0x2822ac[_0x4d6f('0x25')]=LISTID;_0x2822ac[_0x4d6f('0x26')]=COMPANYID||undefined;if(DUPLICATES&&DUPLICATES[_0x4d6f('0x19')]&&_0x514a4f){var _0xf235ba={};for(var _0x58419c=0x0,_0x16272a=DUPLICATES['length'];_0x58419c<_0x16272a;_0x58419c+=0x1){_0xf235ba[DUPLICATES[_0x58419c]]=_0x2822ac[DUPLICATES[_0x58419c]];}var _0x31ccba=_[_0x4d6f('0x27')](_0x514a4f,_0xf235ba);if(_0x31ccba){return _0x488980(handleCheckRowError(_0x4d6f('0x28'),_0x4d6f('0x29'),_0x31ccba,_0x4adcbc));}}return db[_0x4d6f('0x2a')][_0x4d6f('0x2b')](_0x2822ac,{'raw':!![],'hooks':![],'fields':_['keys'](_0x2822ac)})[_0x4d6f('0x2c')](function(_0x431499){if(DUPLICATES&&DUPLICATES[_0x4d6f('0x19')]&&_0x514a4f){_0x514a4f['push'](_[_0x4d6f('0x2d')](_0x2822ac,DUPLICATES));}hopperContacts+=(hopperContacts?',':'')+_0x431499['id'];return _0x2222f1();})[_0x4d6f('0x2e')](function(_0xeccbd6){return _0x488980(handleCheckRowError(_0x4d6f('0x14'),_0x4d6f('0x2f')+(_0xeccbd6['message']||JSON['stringify'](_0xeccbd6)),null,_0x4adcbc));});});}function checkHopper(){function _0x3d3fdf(){return function(_0xb5ada2){logger[_0x4d6f('0x14')](_0x4d6f('0x30'),_0x4d6f('0x31'),util[_0x4d6f('0x32')](_0xb5ada2,{'showHidden':![],'depth':null}));};}var _0x253b5f=function(_0xe6e001,_0x45dba2){var _0x5a9811=squel[_0x4d6f('0x33')]()[_0x4d6f('0x34')](_0x4d6f('0x35'))[_0x4d6f('0x36')]([_0x4d6f('0x1f'),'scheduledAt',_0x4d6f('0x37'),_0x4d6f('0x25'),_0x45dba2,_0x4d6f('0x38'),_0x4d6f('0x39')],squel['select']()[_0x4d6f('0x3a')](_0x4d6f('0x1f'),_0x4d6f('0x1f'))[_0x4d6f('0x3a')](_0x4d6f('0x3b'),'scheduledAt')[_0x4d6f('0x3a')]('id','ContactId')['field'](LISTID[_0x4d6f('0x3c')](),_0x4d6f('0x25'))[_0x4d6f('0x3a')](_0xe6e001['id'][_0x4d6f('0x3c')](),_0x45dba2)['field'](_0x4d6f('0x3b'),_0x4d6f('0x38'))[_0x4d6f('0x3a')](_0x4d6f('0x3b'),'updatedAt')[_0x4d6f('0x3d')](_0x4d6f('0x3e'))[_0x4d6f('0x3f')](_0x4d6f('0x40'))[_0x4d6f('0x3f')](_0x4d6f('0x41'),LISTID[_0x4d6f('0x3c')]())[_0x4d6f('0x3f')](_0x4d6f('0x42'))[_0x4d6f('0x3f')](_0x4d6f('0x43'),squel['select']()[_0x4d6f('0x3a')](_0x4d6f('0x1f'))[_0x4d6f('0x3d')](_0x4d6f('0x35'))[_0x4d6f('0x3f')](_0x45dba2+_0x4d6f('0x44'),_0xe6e001['id']['toString']())))[_0x4d6f('0x3c')]();return _0x5a9811;};var _0x253488=function(_0x73d635,_0x2fed89){var _0x224afb=squel[_0x4d6f('0x33')]()[_0x4d6f('0x34')]('cm_hopper')['fromQuery']([_0x4d6f('0x1f'),'scheduledAt','ContactId',_0x4d6f('0x25'),_0x2fed89,_0x4d6f('0x38'),'updatedAt'],squel[_0x4d6f('0x45')]()['field'](_0x4d6f('0x1f'),_0x4d6f('0x1f'))['field']('NOW()',_0x4d6f('0x46'))[_0x4d6f('0x3a')]('id',_0x4d6f('0x37'))[_0x4d6f('0x3a')](LISTID[_0x4d6f('0x3c')](),_0x4d6f('0x25'))['field'](_0x73d635['id'][_0x4d6f('0x3c')](),_0x2fed89)[_0x4d6f('0x3a')](_0x4d6f('0x3b'),_0x4d6f('0x38'))[_0x4d6f('0x3a')](_0x4d6f('0x3b'),'updatedAt')['from'](_0x4d6f('0x3e'))[_0x4d6f('0x3f')](_0x4d6f('0x40'))[_0x4d6f('0x3f')]('ListId\x20=\x20?',LISTID[_0x4d6f('0x3c')]())[_0x4d6f('0x3f')](_0x4d6f('0x47'),squel[_0x4d6f('0x48')](hopperContacts))[_0x4d6f('0x3f')](_0x4d6f('0x42'))['where'](_0x4d6f('0x43'),squel[_0x4d6f('0x45')]()[_0x4d6f('0x3a')]('calleridnum')[_0x4d6f('0x3d')](_0x4d6f('0x49'))[_0x4d6f('0x3f')](_0x2fed89+'\x20=\x20?',_0x73d635['id'][_0x4d6f('0x3c')]()))['where'](_0x4d6f('0x43'),squel[_0x4d6f('0x45')]()[_0x4d6f('0x3a')]('phone')['from']('cm_hopper')[_0x4d6f('0x3f')](_0x2fed89+'\x20=\x20?',_0x73d635['id'][_0x4d6f('0x3c')]())))[_0x4d6f('0x3c')]();return _0x224afb;};function _0x5d99ea(_0x3fcf8e,_0x4d0511){var _0x1fc440=squel['insert']()['into'](_0x4d6f('0x35'))[_0x4d6f('0x36')](['phone','scheduledAt','ContactId',_0x4d6f('0x25'),_0x4d0511,_0x4d6f('0x38'),'updatedAt'],squel[_0x4d6f('0x45')]()[_0x4d6f('0x3a')](_0x4d6f('0x1f'),_0x4d6f('0x1f'))['field']('NOW()','scheduledAt')[_0x4d6f('0x3a')]('id',_0x4d6f('0x37'))[_0x4d6f('0x3a')](LISTID[_0x4d6f('0x3c')](),_0x4d6f('0x25'))[_0x4d6f('0x3a')](_0x3fcf8e['id'][_0x4d6f('0x3c')](),_0x4d0511)[_0x4d6f('0x3a')](_0x4d6f('0x3b'),_0x4d6f('0x38'))[_0x4d6f('0x3a')](_0x4d6f('0x3b'),_0x4d6f('0x39'))[_0x4d6f('0x3d')](_0x4d6f('0x3e'))['where'](_0x4d6f('0x40'))[_0x4d6f('0x3f')]('ListId\x20=\x20?',LISTID['toString']())['where'](_0x4d6f('0x47'),squel['str'](hopperContacts))[_0x4d6f('0x3f')]('phone\x20IS\x20NOT\x20NULL'))[_0x4d6f('0x3c')]();return _0x1fc440;}function _0x2ed23f(_0x30bdc4,_0x4a4a61){var _0x1e9e69=squel[_0x4d6f('0x33')]()['into'](_0x4d6f('0x4a'))['fromQuery']([_0x4d6f('0x1f'),_0x4d6f('0x37'),_0x4d6f('0x25'),_0x4a4a61,_0x4d6f('0x38'),'updatedAt'],squel[_0x4d6f('0x45')]()[_0x4d6f('0x3a')](_0x4d6f('0x1f'),_0x4d6f('0x1f'))['field']('id','ContactId')[_0x4d6f('0x3a')](LISTID[_0x4d6f('0x3c')](),_0x4d6f('0x25'))['field'](_0x30bdc4['id']['toString'](),_0x4a4a61)['field']('NOW()',_0x4d6f('0x38'))['field'](_0x4d6f('0x3b'),_0x4d6f('0x39'))[_0x4d6f('0x3d')]('cm_contacts')[_0x4d6f('0x3f')](_0x4d6f('0x40'))[_0x4d6f('0x3f')]('ListId\x20=\x20?',LISTID[_0x4d6f('0x3c')]())['where'](_0x4d6f('0x47'),squel[_0x4d6f('0x48')](hopperContacts))[_0x4d6f('0x3f')](_0x4d6f('0x42')))['toString']();return _0x1e9e69;}return db[_0x4d6f('0x4b')][_0x4d6f('0x4c')]({'where':{'type':_0x4d6f('0x4d')},'attributes':['id','dialCheckDuplicateType'],'include':[{'model':db[_0x4d6f('0x4e')],'as':_0x4d6f('0x4f'),'where':{'id':LISTID}}]})[_0x4d6f('0x2c')](function(_0x2e94ce){var _0x5197a1=[];if(_0x2e94ce){var _0x4cbeae;for(var _0x3854b2=0x0,_0x4e84fd;_0x3854b2<_0x2e94ce[_0x4d6f('0x19')];_0x3854b2+=0x1){_0x4e84fd=_0x2e94ce[_0x3854b2]['get']({'plain':!![]});switch(_0x4e84fd[_0x4d6f('0x50')]){case'always':_0x5197a1['push'](db[_0x4d6f('0x51')]['query'](_0x253488(_0x4e84fd,_0x4d6f('0x52')))['then'](function(){})[_0x4d6f('0x2e')](_0x3d3fdf()));break;case'onlyIfOpen':_0x5197a1[_0x4d6f('0x53')](db['sequelize'][_0x4d6f('0x54')](_0x253b5f(_0x4e84fd,'VoiceQueueId'))[_0x4d6f('0x2c')](function(){})[_0x4d6f('0x2e')](_0x3d3fdf()));break;default:_0x5197a1[_0x4d6f('0x53')](db[_0x4d6f('0x51')][_0x4d6f('0x54')](_0x5d99ea(_0x4e84fd,_0x4d6f('0x52')))[_0x4d6f('0x2c')](function(){})[_0x4d6f('0x2e')](_0x3d3fdf()));}}}return _0x5197a1;})[_0x4d6f('0x55')]()[_0x4d6f('0x2c')](function(){return db[_0x4d6f('0x4b')]['findAll']({'where':{'type':'outbound'},'attributes':['id'],'include':[{'model':db[_0x4d6f('0x4e')],'as':_0x4d6f('0x56'),'where':{'id':LISTID}}]})[_0x4d6f('0x2c')](function(_0x2e3af8){var _0x3340ab=[];if(_0x2e3af8){var _0x47b3de;for(var _0x31a1aa=0x0,_0x1e2259;_0x31a1aa<_0x2e3af8[_0x4d6f('0x19')];_0x31a1aa+=0x1){_0x1e2259=_0x2e3af8[_0x31a1aa]['get']({'plain':!![]});_0x3340ab[_0x4d6f('0x53')](db[_0x4d6f('0x51')][_0x4d6f('0x54')](_0x2ed23f(_0x1e2259,_0x4d6f('0x52')))[_0x4d6f('0x2c')](function(){})[_0x4d6f('0x2e')](_0x3d3fdf()));}}return _0x3340ab;})[_0x4d6f('0x55')]();})[_0x4d6f('0x2c')](function(){return db[_0x4d6f('0x57')]['findAll']({'attributes':['id',_0x4d6f('0x50')],'include':[{'model':db['CmList'],'as':_0x4d6f('0x4f'),'where':{'id':LISTID}}]})[_0x4d6f('0x2c')](function(_0x49993e){var _0x3a11c4=[];if(_0x49993e){for(var _0x5ca272=0x0,_0x33b079;_0x5ca272<_0x49993e[_0x4d6f('0x19')];_0x5ca272+=0x1){_0x33b079=_0x49993e[_0x5ca272][_0x4d6f('0x58')]({'plain':!![]});switch(_0x33b079[_0x4d6f('0x50')]){case _0x4d6f('0x59'):_0x3a11c4[_0x4d6f('0x53')](db[_0x4d6f('0x51')]['query'](_0x253488(_0x33b079,_0x4d6f('0x5a')))[_0x4d6f('0x2c')](function(){})['catch'](_0x3d3fdf()));break;case _0x4d6f('0x5b'):_0x3a11c4[_0x4d6f('0x53')](db['sequelize'][_0x4d6f('0x54')](_0x253b5f(_0x33b079,_0x4d6f('0x5a')))[_0x4d6f('0x2c')](function(){})[_0x4d6f('0x2e')](_0x3d3fdf()));break;default:_0x3a11c4[_0x4d6f('0x53')](db['sequelize'][_0x4d6f('0x54')](_0x5d99ea(_0x33b079,_0x4d6f('0x5a')))['then'](function(){})[_0x4d6f('0x2e')](_0x3d3fdf()));}}}return _0x3a11c4;})[_0x4d6f('0x55')]();})[_0x4d6f('0x2c')](function(){return db[_0x4d6f('0x57')][_0x4d6f('0x4c')]({'attributes':['id'],'include':[{'model':db[_0x4d6f('0x4e')],'as':'BlackLists','where':{'id':LISTID}}]})[_0x4d6f('0x2c')](function(_0x4365b6){var _0x344e52=[];if(_0x4365b6){for(var _0x17dd70=0x0,_0xcb329c;_0x17dd70<_0x4365b6['length'];_0x17dd70+=0x1){_0xcb329c=_0x4365b6[_0x17dd70][_0x4d6f('0x58')]({'plain':!![]});_0x344e52[_0x4d6f('0x53')](db[_0x4d6f('0x51')][_0x4d6f('0x54')](_0x2ed23f(_0xcb329c,_0x4d6f('0x5a')))[_0x4d6f('0x2c')](function(){})['catch'](_0x3d3fdf()));}}return _0x344e52;})[_0x4d6f('0x55')]();})[_0x4d6f('0x2e')](function(_0x206dcc){logger[_0x4d6f('0x14')]('cmContact,\x20%s,\x20%s',_0x4d6f('0x5c'),_0x206dcc[_0x4d6f('0x1b')]);});}var processPromises=function(_0x9ec4af){return BPromise[_0x4d6f('0x55')](promises)[_0x4d6f('0x2c')](function(_0x51e468){})[_0x4d6f('0x2e')](function(_0x6b2a98){logger[_0x4d6f('0x14')](_0x4d6f('0x5d'),JSON[_0x4d6f('0x5e')](_0x6b2a98));})[_0x4d6f('0x5f')](function(){socket[_0x4d6f('0x60')](_0x4d6f('0x61')+SOCKET_TIMESTAMP,{'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});promises=[];success=0x0;errors=0x0;duplicates=0x0;rows=[];if(_0x9ec4af){return _0x9ec4af['resume']();}});};var endCsv=function(){return BPromise[_0x4d6f('0x62')]()[_0x4d6f('0x2c')](function(){if(hopperContacts){return checkHopper();}})[_0x4d6f('0x2c')](function(){socket[_0x4d6f('0x60')](_0x4d6f('0x61')+SOCKET_TIMESTAMP,{'finished':!![],'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});try{fs[_0x4d6f('0x63')](FILEPATH);}catch(_0x475b26){logger[_0x4d6f('0x14')](_0x4d6f('0x64'),JSON[_0x4d6f('0x5e')](_0x475b26));}finally{process[_0x4d6f('0x65')](0x0);}});};process['on']('SIGINT',function(){logger[_0x4d6f('0x66')](_0x4d6f('0x67'));endCsv();});function main(){return BPromise['resolve']()[_0x4d6f('0x2c')](function(){if(DUPLICATES){DUPLICATES=DUPLICATES[_0x4d6f('0x12')](',');return db['CmContact'][_0x4d6f('0x4c')]({'where':{'ListId':LISTID},'attributes':DUPLICATES,'raw':!![]});}})[_0x4d6f('0x2c')](function(_0x41000f){var _0x24d620=fs[_0x4d6f('0x68')](FILEPATH,{'highWaterMark':0xf*0x400*0x400});Papa[_0x4d6f('0x69')](_0x24d620,{'header':!![],'skipEmptyLines':!![],'step':function(_0x5b1d74,_0x6de32d){total+=0x1;var _0x6336b9=total;promises['push'](checkRow(_0x5b1d74,_0x41000f,_0x6336b9)[_0x4d6f('0x2c')](function(){success+=0x1;})[_0x4d6f('0x2e')](function(_0x318c5b){if(_0x318c5b['error']){errors+=0x1;delete _0x318c5b[_0x4d6f('0x14')];}else if(_0x318c5b[_0x4d6f('0x28')]){duplicates+=0x1;delete _0x318c5b[_0x4d6f('0x28')];}rows['push'](_0x318c5b);}));if(total%0xc8===0x0){_0x6de32d['pause']();return processPromises(_0x6de32d);}},'complete':function(){return processPromises()['then'](function(){logger[_0x4d6f('0x66')](_0x4d6f('0x6a'));endCsv();});},'error':function(_0x326b8c,_0x57f56c){logger['info'](_0x4d6f('0x6b'),JSON[_0x4d6f('0x5e')](_0x326b8c));endCsv();}});})[_0x4d6f('0x2e')](function(_0x453f46){logger[_0x4d6f('0x14')](_0x4d6f('0x6c'),JSON[_0x4d6f('0x5e')](_0x453f46));});}main();