Пример #1
0
        private static void ValidateList(IEnumerable <FuelScaleChargeResult> fuelScaleCharges, List <string> errors)
        {
            decimal vatRate            = fuelScaleCharges.First().VatRate;
            FuelScaleChargeResult last = null;

            foreach (var item in fuelScaleCharges)
            {
                if (last != null)
                {
                    if (last.CO2Band >= item.CO2Band)
                    {
                        errors.Add($"{nameof(item.CO2Band)} has decreased from last item.");
                    }
                    if (last.Nett >= item.Nett)
                    {
                        errors.Add($"{nameof(item.Nett)} has decreased from last item.");
                    }
                    if (last.Vat >= item.Vat)
                    {
                        errors.Add($"{nameof(item.Vat)} has decreased from last item.");
                    }
                }
                if (vatRate != item.VatRate)
                {
                    errors.Add($"VAT Rate has changed from {vatRate} to {item.VatRate}");
                }
                if (item.Nett == 0)
                {
                    errors.Add($"{nameof(item.Nett)} cannot be 0");
                }
                if (item.Vat == 0)
                {
                    errors.Add($"{nameof(item.Vat)} cannot be 0");
                }
                if (item.CO2Band == 0)
                {
                    errors.Add($"{nameof(item.CO2Band)} cannot be 0");
                }

                last = item;
            }
        }
Пример #2
0
        private static IEnumerable <FuelScaleChargeResult> GetValues(HtmlNode table)
        {
            var intExpression = new Regex("([0-9]+)");

            var resp = new List <FuelScaleChargeResult>();

            bool isStarted = false;

            foreach (var row in table.SelectNodes(".//tbody/tr"))
            {
                if (!isStarted && !row.InnerText.Contains("or less"))
                {
                    continue;
                }
                isStarted = true;

                var cells = row.SelectNodes(".//td");

                try {
                    var scaleCharge = new FuelScaleChargeResult()
                    {
                        CO2Band = int.Parse(intExpression.Match(cells[0].InnerText).Value, NumberStyles.AllowThousands, CultureInfo.CurrentCulture),
                        Vat     = decimal.Parse(cells[2].InnerText, NumberStyles.AllowCurrencySymbol | NumberStyles.AllowDecimalPoint | NumberStyles.AllowThousands, CultureInfo.CurrentCulture),
                        Nett    = decimal.Parse(cells[3].InnerText, NumberStyles.AllowCurrencySymbol | NumberStyles.AllowDecimalPoint | NumberStyles.AllowThousands, CultureInfo.CurrentCulture)
                    };

                    // CO2Band is actually the upper bound, but these pages use round-down to next 5g/km
                    scaleCharge.CO2Band += 4;

                    resp.Add(scaleCharge);
                } catch (Exception) {
                    throw;
                }
            }

            resp.Last().CO2Band = int.MaxValue;

            return(resp);
        }