internal static AlteryxResult ReadInAlteryxData(string filePath) { var investments = new Dictionary <string, InvestmentActivity>(); var invalidEntries = new List <string>(); StreamReader reader; try { reader = new StreamReader(filePath); } catch (FileNotFoundException) { Log.Error($"Unable to load investment activities from file {filePath}. Please make sure that you specified a correct path."); return(null); } catch (IOException) { Log.Error($"Unable to open file {filePath}. Please close the file before running this programm"); return(null); } var config = new CsvConfiguration(CultureInfo.InvariantCulture) { HasHeaderRecord = true, HeaderValidated = null, MissingFieldFound = null }; using var csv = new CsvReader(reader, config); csv.Context.RegisterClassMap <AlteryxResultMap>(); var records = csv.GetRecords <InvestmentActivity>(); foreach (var record in records) { if (!DataValidators.IsValidAccessionNumber(record.AccessionNumber)) { invalidEntries.Add(record.AccessionNumber); } else { investments.TryAdd(record.AccessionNumber, record); } } return(new AlteryxResult { InvestmentActivities = investments, DataWithInvalidAccessionNumber = invalidEntries }); }
internal static QualityReport Measure(InvestmentActivity investment, AtratinusConfiguration config) { var report = new QualityReport(); ushort badStates = 0; if (!DataValidators.IsValidAccessionNumber(investment.AccessionNumber)) { report.Invalidations.Add("AccessionNumber"); report.Quality = QualityLevel.T_TIER; investment.DataQualityLevel = QualityLevel.T_TIER.ToString(); } if (!DataValidators.IsValidFilingDate(investment.FilingDate)) { badStates++; report.Invalidations.Add("FilingDate"); } else { var year = Convert.ToInt32(investment.FilingDate.Substring(0, 4)); var month = Convert.ToInt32(investment.FilingDate.Substring(4, 2)); var day = Convert.ToInt32(investment.FilingDate.Substring(6, 2)); if (new DateTime(year, month, day) < new DateTime(1998, 2, 17)) { report.SubmittedAfterSECReform = false; } else { report.SubmittedAfterSECReform = true; } } if (!DataValidators.IsValidPurposeOfTransaction(investment.PurposeOfTransaction)) { badStates++; report.Invalidations.Add("PurposeOfTransaction"); } if (!DataValidators.IsValidTypeOfReportingPerson(investment.TypeOfReportingPerson)) { badStates++; report.Invalidations.Add("TypeOfReportingPerson"); } if (!investment.SubmissionType.HasValue) { badStates++; report.Invalidations.Add("SubmissionType"); report.UsefulSubmissionType = false; } else { if (investment.SubmissionType.Value == Core.Enums.SubmissionType.SC_13D) { report.UsefulSubmissionType = true; } else { report.UsefulSubmissionType = false; } } if (report.Quality == QualityLevel.T_TIER) { return(report); } switch (badStates) { case 0: { investment.DataQualityLevel = QualityLevel.S_TIER.ToString(); report.Quality = QualityLevel.S_TIER; break; } case 1: { investment.DataQualityLevel = QualityLevel.A_TIER.ToString(); report.Quality = QualityLevel.A_TIER; break; } case 2: { investment.DataQualityLevel = QualityLevel.B_TIER.ToString(); report.Quality = QualityLevel.B_TIER; break; } case 3: { investment.DataQualityLevel = QualityLevel.C_TIER.ToString(); report.Quality = QualityLevel.C_TIER; break; } default: { investment.DataQualityLevel = QualityLevel.T_TIER.ToString(); report.Quality = QualityLevel.T_TIER; break; } } report.ShouldBeConsidered = TakeInvestment(report, config); return(report); }