Example #1
0
        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);
        }
Example #2
0
        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);
        }
Example #3
0
        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);
        }