public static List <FECTransaction> PopulateTransList(TextFieldParser parser1) { FECTransaction newTrans = new FECTransaction(); List <FECTransaction> transObjList = new List <FECTransaction>(); CSVHeaderIndexes headerIndex = new CSVHeaderIndexes(); int count = 0; while (!parser1.EndOfData) { string[] fields = null; try { fields = parser1.ReadFields(); } catch (MalformedLineException) { break; } if (count == 0) { headerIndex = ReadCSVHeader(fields); } if (count > 0) { newTrans = CSVFieldsToTransObj(fields, headerIndex); transObjList.Add(newTrans); } count++; } return(transObjList); }
public static CSVHeaderIndexes ReadCSVHeader(string[] fields) { int fieldsLength = fields.Length; string lowerFields = string.Empty; CSVHeaderIndexes headerIndexes = new CSVHeaderIndexes(); for (int i = 0; i < fieldsLength; i++) { lowerFields = fields[i].ToLower(); if (lowerFields == "first name" || lowerFields == "first") { headerIndexes.FirstName = i; } else if (lowerFields == "last name" || lowerFields == "last") { headerIndexes.LastName = i; } else if (lowerFields.Contains("legislator") && lowerFields.Contains("first")) { headerIndexes.LegislatorFirstName = i; } else if (lowerFields.Contains("legislator") && lowerFields.Contains("last")) { headerIndexes.LegislatorLastName = i; } else if (lowerFields == "organization name") { headerIndexes.OrgName = i; } else if (lowerFields == "committee name") { headerIndexes.CommitteeName = i; } else if (lowerFields.Contains("receipt amount")) { headerIndexes.ReceiptAmount = i; } else if (lowerFields.Contains("disbursement amount")) { headerIndexes.DisbursementAmount = i; } else if (lowerFields.Contains("receipt date") || lowerFields.Contains("disbursement date")) { headerIndexes.Date = i; } else if (lowerFields.Contains("state")) { headerIndexes.State = i; } else if (lowerFields.Contains("city")) { headerIndexes.City = i; } else if (lowerFields.Contains("period text")) { headerIndexes.ElectionPeriod = i; } } return(headerIndexes); }
public static FECTransaction CSVFieldsToTransObj(string[] fields, CSVHeaderIndexes headerIndexes) { decimal amount = 0; string orgName = string.Empty; string firstName = string.Empty; string lastName = string.Empty; string committeeName = string.Empty; string legFirst = string.Empty; string legLast = string.Empty; string recordType = string.Empty; string city = string.Empty; string state = string.Empty; string electionPeriod = string.Empty; string schedString = string.Empty; string transType = string.Empty; string tempDateString = string.Empty; DateTime transDate = new DateTime(); if (headerIndexes.FirstName != -1) { firstName = fields[headerIndexes.FirstName]; if (!string.IsNullOrWhiteSpace(firstName)) { recordType = "IND"; } } if (headerIndexes.LastName != -1) { lastName = fields[headerIndexes.LastName]; } if (headerIndexes.OrgName != -1) { orgName = fields[headerIndexes.OrgName]; if (!string.IsNullOrWhiteSpace(orgName)) { recordType = "ORG"; } } if (headerIndexes.CommitteeName != -1) { committeeName = fields[headerIndexes.CommitteeName]; if (!string.IsNullOrEmpty(committeeName)) { recordType = "COM"; } } if (headerIndexes.LegislatorFirstName != -1) { legFirst = fields[headerIndexes.LegislatorFirstName]; if (!string.IsNullOrEmpty(legFirst)) { recordType = "LEG"; } } if (headerIndexes.LegislatorLastName != -1) { legLast = fields[headerIndexes.LegislatorLastName]; if (!string.IsNullOrEmpty(legLast)) { recordType = "LEG"; } } if (headerIndexes.City != -1) { city = fields[headerIndexes.City]; } if (headerIndexes.State != -1) { state = fields[headerIndexes.State]; } if (headerIndexes.Date != -1) { tempDateString = fields[headerIndexes.Date]; DateTime.TryParse(tempDateString, out transDate); } if (headerIndexes.ElectionPeriod != -1) { electionPeriod = fields[headerIndexes.ElectionPeriod]; } if (headerIndexes.ReceiptAmount != -1) { decimal.TryParse(fields[headerIndexes.ReceiptAmount], out amount); if (!string.IsNullOrWhiteSpace(fields[headerIndexes.ReceiptAmount])) { transType = "receipt"; } } else if (headerIndexes.DisbursementAmount != -1) { decimal.TryParse(fields[headerIndexes.ReceiptAmount], out amount); if (!string.IsNullOrWhiteSpace(fields[headerIndexes.DisbursementAmount])) { transType = "disbursement"; } } FECTransaction newTrans = new FECTransaction(orgName, firstName, lastName, recordType, city, state, electionPeriod, transDate, amount, transType); return(newTrans); }