public void AnalyzerResult(AnalyzerResponse analyzerResponse) { var extractedColumnValuePair = analyzerResponse.ColumnValuePair ?? new Dictionary <string, double>(); if (!extractedColumnValuePair.Keys.Any(x => x.Contains(Transaction, StringComparison.OrdinalIgnoreCase))) { return; } var transactoinKey = extractedColumnValuePair.Keys.Single(x => x.Contains(Transaction, StringComparison.OrdinalIgnoreCase)); var transactionTotal = extractedColumnValuePair[transactoinKey]; if (extractedColumnValuePair.Keys.Any(x => x.Contains(Refund, StringComparison.OrdinalIgnoreCase))) { var key = extractedColumnValuePair.Keys.Single(x => x.Contains(Refund, StringComparison.OrdinalIgnoreCase)); var totalRefund = extractedColumnValuePair[key]; analyzerResponse.RefundPercentage = (totalRefund / transactionTotal) * 100; analyzerResponse.RecommandationOnRefund = analyzerResponse.RefundPercentage > 20 ? "Consider reject" : "Consider accept"; } if (extractedColumnValuePair.Keys.Any(x => x.Contains(Chargeback, StringComparison.OrdinalIgnoreCase))) { var key = extractedColumnValuePair.Keys.Single(x => x.Contains(Chargeback, StringComparison.OrdinalIgnoreCase)); var totalChargeback = extractedColumnValuePair[key]; analyzerResponse.ChargebackPercentage = (totalChargeback / transactionTotal) * 100; analyzerResponse.RecommandationOnChargeback = analyzerResponse.ChargebackPercentage > 20 ? "Consider reject" : "Consider accept"; } }
private AnalyzerResponse GetAllAmountsAndValues(AnalyzeResult analyzeResult) { var respose = new AnalyzerResponse { NumberOfPagesAnalyzed = analyzeResult.Pages.Count, Pages = new List <AnalyzedPageDetials>() }; var columnValuePair = new Dictionary <string, double>(); foreach (var page in analyzeResult.Pages) { var analyzedPage = new AnalyzedPageDetials { PageNumber = page.Number, NumberOfTables = page.Tables.Count(), Tables = new List <AnalyzedTableDetails>() }; //foreach (var kv in page.KeyValuePairs) //{ // if (kv.Key.Any(x => ColumnTextsToCheck.Any(y => x.Text.Contains(y, StringComparison.OrdinalIgnoreCase)))) // { // var key = string.Join(" ", kv.Key.Select(x => x.Text)); // var value = kv.Value.Where(x => double.TryParse(x.Text, out _)).Select(x => double.Parse(x.Text)).Sum(); // result.Add(key, value); // } //} foreach (var table in page.Tables) { var analyzedTable = new AnalyzedTableDetails { ColumnRowCountPair = new List <Tuple <string, int> >() }; foreach (var column in table.Columns) { analyzedTable.ColumnRowCountPair.Add(Tuple.Create(string.Join(" ", column.Header.Select(x => x.Text)), column.Entries.Count)); if (column.Header.Any(x => ColumnTextsToCheck.Any(y => x.Text.Trim().Equals(y.Trim(), StringComparison.OrdinalIgnoreCase)))) { var sum = column.Entries.SelectMany(x => x.Where(y => double.TryParse(y.Text, out _))).Select(x => double.Parse(x.Text)).Sum(); var key = string.Join(" ", column.Header.Select(x => x.Text)); if (columnValuePair.ContainsKey(key)) { columnValuePair[key] += sum; } else if (columnValuePair.Keys.Any(x => x.Contains(key))) { key = columnValuePair.Keys.SingleOrDefault(x => x.Contains(key)); if (key != null) { columnValuePair[key] += sum; } } else { columnValuePair.Add(key, sum); } } } analyzedPage.Tables.Add(analyzedTable); } respose.Pages.Add(analyzedPage); } respose.ColumnValuePair = columnValuePair; return(respose); }