private void Process(IList <DistributorLog> scannableDistributorLogs) { string errorMessage = string.Empty; var copyList = new List <DistributorUpdateDTO>(); var renewalList = new List <DistributorUpdateDTO>(); var updateDict = new Dictionary <long, DistributorUpdateDTO>(); _logger.Info("Start loading distributor logs"); foreach (var distLog in scannableDistributorLogs) { _logger.Debug(string.Format(" Record found: {0}\t{1}\t{2}\t{3}", distLog.DISTNO, distLog.UPDATETYPE, distLog.UPDATEDTE, distLog.WAREHOUSE)); // Not scanned & Join if (DistUpdateType.Joins.Contains(distLog.UPDATETYPE)) { copyList.Add(new DistributorUpdateDTO(distLog.DISTNO, distLog)); } // Skip & Renewal else if (DistUpdateType.Renewals.Contains(distLog.UPDATETYPE)) { renewalList.Add(new DistributorUpdateDTO(distLog.DISTNO, distLog)); } // Else, update relevant info else { if (updateDict.ContainsKey(distLog.DISTNO)) { updateDict[distLog.DISTNO].Logs.Add(distLog); } else { updateDict[distLog.DISTNO] = new DistributorUpdateDTO(distLog.DISTNO, distLog); } } } _logger.Info("End loading distributor logs"); _logger.Info("***Start copying distributors from DSS"); _distributorService.CopyDistributorFromDSS(copyList, out errorMessage); if (!string.IsNullOrEmpty(errorMessage)) { _logger.WriteLog("Distributor Copy error message: " + errorMessage, LogLevel.Error); } _logger.Info("***End copying distributors from DSS"); _logger.Info("***Start renewing distributor's expiry"); _distributorService.RenewDistributorExpiry(renewalList, out errorMessage); if (!string.IsNullOrEmpty(errorMessage)) { _logger.WriteLog("Distributor Renewal error message: " + errorMessage, LogLevel.Error); } _logger.Info("***End renewing distributor's expiry"); _logger.Info("***Start updating distributor info"); _distributorService.UpdateDistributorInfo(updateDict, out errorMessage); if (!string.IsNullOrEmpty(errorMessage)) { _logger.WriteLog("Distributor Update error message: " + errorMessage, LogLevel.Error); } _logger.Info("***End updating distributor info"); _logger.Info("***Deleting distributor logs"); _distributorService.DeleteDistributorLogs(scannableDistributorLogs); }