Ejemplo n.º 1
0
        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);
        }