public override IList <Merchant> ImportAmexMidFile(Stream fileStream) { IList <Merchant> merchants = new List <Merchant>(); try { HashSet <string> amexMids = new HashSet <string>(); IExcelDataReader excelReader = ExcelReaderFactory.CreateOpenXmlReader(fileStream); excelReader.IsFirstRowAsColumnNames = true; DataSet storeDataSet = excelReader.AsDataSet(); DataTable storeDataTable = storeDataSet.Tables[0]; if (storeDataTable != null) { Log.Info("Total Rows in AmexMid File is {0}", storeDataTable.Rows.Count); var merchantData = GetDataFromSpecifiedColumns(storeDataTable, AmexImportList); Log.Info("Total Rows read from AmexMid File is {0}", merchantData.Count); foreach (var data in merchantData) { Merchant existingMerchant = null; //Check if we have already seen this merchant in this spreadsheet based on the PartnerMerchantId of the merchant string merchantId = data.ContainsKey(MerchantConstants.Id) ? data[MerchantConstants.Id] : null; if (!string.IsNullOrEmpty(merchantId)) { existingMerchant = merchants.FirstOrDefault(m => m.Id == data[MerchantConstants.Id]); } if (existingMerchant == null) { Merchant merchant = new Merchant { Id = data[MerchantConstants.Id], Name = data[MerchantConstants.Name], Location = new Location { Address = data[MerchantConstants.Address], City = data[MerchantConstants.City], State = data[MerchantConstants.State], Zip = data[MerchantConstants.Zip] }, PhoneNumber = data.ContainsKey(MerchantConstants.Phone) ? StringUtility.StripAllButDigits(data[MerchantConstants.Phone]) : string.Empty }; // amexMids hashset is passed to validate duplication of SE numbers for different merchants merchant.Payments = CreateAmexPayment(data, amexMids); merchants.Add(merchant); } else { // if MerchantId appears multiple times in the list hence add to the list var payments = CreateAmexPayment(data, amexMids); if (payments != null && payments.Any()) { foreach (var payment in payments) { existingMerchant.Payments.Add(payment); } } } } } Log.Info("Total unique merchants read from AmexMid file is {0} ", merchants.Count); return(merchants); } catch (Exception e) { Log.Error("Error in reading merchant data from excel stream " + e.Message); throw; } }
public override IList <Merchant> ImportMasterCardClearingFile(Stream fileStream) { IList <Merchant> lstMerchants = new List <Merchant>(); try { IExcelDataReader excelReader = ExcelReaderFactory.CreateOpenXmlReader(fileStream); excelReader.IsFirstRowAsColumnNames = true; DataSet storeDataSet = excelReader.AsDataSet(); DataTable storeDataTable = storeDataSet.Tables[0]; if (storeDataTable != null) { Log.Info("Total Rows in MasterCardClearingFile is {0}", storeDataTable.Rows.Count); var lstMerchantData = GetDataFromSpecifiedColumns(storeDataTable, MCClearingFileImportColumnList); Log.Info("Total Rows read from MasterCardClearingFile is {0}", lstMerchantData.Count); foreach (var merchantData in lstMerchantData) { Merchant existingMerchant = null; //Check if we have already seen this merchant in this spreadsheet based on the siteid of the merchant string siteId = merchantData.ContainsKey(MerchantConstants.MCSiteId) ? merchantData[MerchantConstants.MCSiteId] : string.Empty; if (!string.IsNullOrEmpty(siteId)) { existingMerchant = lstMerchants .FirstOrDefault(m => (m.ExtendedAttributes != null && m.ExtendedAttributes.ContainsKey(MerchantConstants.MCSiteId) && m.ExtendedAttributes[MerchantConstants.MCSiteId] == merchantData[MerchantConstants.MCSiteId])); } //if we have not seen the merchant, then create one if (existingMerchant == null) { var merchant = CreateMerchant(merchantData); merchant.ExtendedAttributes = new Dictionary <string, string>(); merchant.ExtendedAttributes.Add(MerchantConstants.MCSiteId, merchantData[MerchantConstants.MCSiteId]); merchant.Payments = new List <Payment>(); Payment payment = new Payment(); payment.Processor = PaymentProcessor.MasterCard; payment.PaymentMids = new Dictionary <string, string>(); payment.PaymentMids.Add(MerchantConstants.MCLocationId, merchantData[MerchantConstants.MCLocationId]); merchant.Payments.Add(payment); lstMerchants.Add(merchant); } else { //else, update the payment info to the existing merchant Payment payment = new Payment(); payment.Processor = PaymentProcessor.MasterCard; payment.PaymentMids = new Dictionary <string, string>(); payment.PaymentMids.Add(MerchantConstants.MCLocationId, merchantData[MerchantConstants.MCLocationId]); existingMerchant.Payments.Add(payment); } } } Log.Info("Total unique merchants read from MasterCardClearing file is {0} ", lstMerchants.Count); return(lstMerchants); } catch (Exception e) { Log.Error("Error in reading merchant data from excel stream " + e.Message); throw; } }
public override IList <Merchant> ImportVisaMidFile(Stream fileStream) { IList <Merchant> lstMerchants = new List <Merchant>(); try { HashSet <string> visaMids = new HashSet <string>(); IExcelDataReader excelReader = ExcelReaderFactory.CreateOpenXmlReader(fileStream); excelReader.IsFirstRowAsColumnNames = true; DataSet storeDataSet = excelReader.AsDataSet(); DataTable storeDataTable = storeDataSet.Tables[0]; if (storeDataTable != null) { Log.Info("Total Rows in VisaMid File is {0}", storeDataTable.Rows.Count); var lstMerchantData = GetDataFromSpecifiedColumns(storeDataTable, VisaImportList); Log.Info("Total Rows read from VisaMid File is {0}", lstMerchantData.Count); foreach (var merchantData in lstMerchantData) { Merchant existingMerchant = null; //Check if we have already seen this merchant in this spreadsheet based on the PartnerMerchantId of the merchant string partnerMerchantId = merchantData.ContainsKey(MerchantConstants.PartnerMerchantId) ? merchantData[MerchantConstants.PartnerMerchantId] : null; if (!string.IsNullOrEmpty(partnerMerchantId)) { existingMerchant = lstMerchants.FirstOrDefault(m => m.PartnerMerchantId == merchantData[MerchantConstants.PartnerMerchantId]); } if (existingMerchant == null) { Merchant merchant = CreateMerchant(merchantData); merchant.PartnerMerchantId = partnerMerchantId; Payment payment = CreateVisaPayment(merchantData, visaMids); merchant.Payments = new List <Payment>(); merchant.Payments.Add(payment); merchant.ExtendedAttributes = new Dictionary <string, string>(); string visaMidName = merchantData.ContainsKey(MerchantConstants.VisaMidName) ? merchantData[MerchantConstants.VisaMidName] : null; string visaSidName = merchantData.ContainsKey(MerchantConstants.VisaSidName) ? merchantData[MerchantConstants.VisaSidName] : null; if (!string.IsNullOrEmpty(visaMidName)) { merchant.ExtendedAttributes.Add(MerchantConstants.VisaMidName, visaMidName); } if (!string.IsNullOrEmpty(visaSidName)) { merchant.ExtendedAttributes.Add(MerchantConstants.VisaSidName, visaSidName); } lstMerchants.Add(merchant); } else { Payment payment = CreateVisaPayment(merchantData, visaMids); existingMerchant.Payments.Add(payment); } } } Log.Info("Total unique merchants read from VisaMid file is {0} ", lstMerchants.Count); return(lstMerchants); } catch (Exception e) { Log.Error("Error in reading merchant data from excel stream " + e.Message); throw; } }