Пример #1
0
        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
            });
        }
Пример #2
0
        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);
        }