Ejemplo n.º 1
0
        private static ParseResult ParseNumberFFBBBUUUUP([NotNull] string number, [NotNull] string originalNumber, Province province)
        {
            if (number.Length != 10)
            {
                return(ParseResult.AsError(originalNumber, province, TaxNumberStatus.InvalidLength));
            }

            string prefix;

            switch (province)
            {
            case Elster.Province.Berlin:
                prefix = "11";
                break;

            case Elster.Province.Hamburg:
                prefix = "22";
                break;

            case Elster.Province.RheinlandPfalz:
                prefix = "27";
                break;

            case Elster.Province.BadenWuerttemberg:
                prefix = "28";
                break;

            case Elster.Province.Bremen:
                prefix = "24";
                break;

            case Elster.Province.Niedersachsen:
                prefix = "23";
                break;

            case Elster.Province.SchleswigHolstein:
                prefix = "21";
                break;

            default:
                throw new NotSupportedException($"Kein Präfix für das Bundesland {province} hinterlegt");
            }

            var result = string.Format(
                "{4}{0}0{1}{2}{3}",
                number.Substring(0, 2),
                number.Substring(2, 3),
                number.Substring(5, 4),
                number.Substring(9, 1),
                prefix);

            return(ParseResult.AsSuccess(result, province));
        }
Ejemplo n.º 2
0
        private static ParseResult ParseNumber([NotNull] string number, Province?province)
        {
            if (number == null)
            {
                throw new ArgumentNullException(nameof(number));
            }
            ParseResult result;
            var         testNumber = number.Replace(" ", string.Empty).Replace("/", string.Empty).Replace("-", string.Empty);

            switch (province)
            {
            case Elster.Province.Bayern:
            case Elster.Province.Brandenburg:
            case Elster.Province.MecklenburgVorpommern:
            case Elster.Province.Saarland:
            case Elster.Province.Sachsen:
            case Elster.Province.SachsenAnhalt:
            case Elster.Province.Thueringen:
                // FFFBBBUUUUP
                result = ParseNumberFFFBBBUUUUP(testNumber, number, province.Value);
                break;

            case Elster.Province.Berlin:
            case Elster.Province.Hamburg:
            case Elster.Province.RheinlandPfalz:
            case Elster.Province.BadenWuerttemberg:
            case Elster.Province.Bremen:
            case Elster.Province.Niedersachsen:
            case Elster.Province.SchleswigHolstein:
                // FFBBBUUUUP
                result = ParseNumberFFBBBUUUUP(testNumber, number, province.Value);
                break;

            case Elster.Province.Hessen:
                // 0FFBBBUUUUP
                result = ParseNumber0FFBBBUUUUP(testNumber, number, province.Value);
                break;

            case Elster.Province.NordrheinWestfalen:
                // FFFBBBBUUUP
                result = ParseNumberFFFBBBBUUUP(testNumber, number, province.Value);
                break;

            default:
                result = ParseResult.AsSuccess(number, province);
                break;
            }

            return(result);
        }
Ejemplo n.º 3
0
        private static ParseResult ParseNumberFFFBBBBUUUP([NotNull] string number, [NotNull] string originalNumber, Province province)
        {
            if (number.Length != 11)
            {
                return(ParseResult.AsError(originalNumber, province, TaxNumberStatus.InvalidLength));
            }
            const string prefix = "5";
            var          result = string.Format(
                "{4}{0}0{1}{2}{3}",
                number.Substring(0, 3),
                number.Substring(3, 3),
                number.Substring(6, 4),
                number.Substring(10, 1),
                prefix);

            return(ParseResult.AsSuccess(result, province));
        }
Ejemplo n.º 4
0
        private ParseResult <Foo> ParseFoo(string rawValue)
        {
            // Convert raw input to concrete type

            var values = rawValue.Split(':');

            if (values.Length == 2)
            {
                var value = new Foo
                {
                    Key   = values[0],
                    Value = values[1],
                };

                return(ParseResult.AsSuccess(value));
            }
            return(ParseResult.AsError <Foo>("Invalid value. Must be in `<key>:<value>` format"));
        }
Ejemplo n.º 5
0
        private static ParseResult ParseNumber0FFBBBUUUUP([NotNull] string number, [NotNull] string originalNumber, Province province)
        {
            if (number.Length != 10 && (number.Length != 11 || number[0] != '0'))
            {
                return(ParseResult.AsError(originalNumber, province, TaxNumberStatus.InvalidLength));
            }
            const string prefix      = "26";
            var          startOffset = (number.Length == 10) ? 0 : 1;
            var          result      = string.Format(
                "{4}{0}0{1}{2}{3}",
                number.Substring(startOffset, 2),
                number.Substring(startOffset + 2, 3),
                number.Substring(startOffset + 5, 4),
                number.Substring(startOffset + 9, 1),
                prefix);

            return(ParseResult.AsSuccess(result, province));
        }
Ejemplo n.º 6
0
        private static ParseResult ParseNumberFFFBBBUUUUP([NotNull] string number, [NotNull] string originalNumber, Province province)
        {
            if (number.Length != 11)
            {
                return(ParseResult.AsError(originalNumber, province, TaxNumberStatus.InvalidLength));
            }

            string prefix;

            switch (province)
            {
            case Elster.Province.Bayern:
                prefix = "9";
                break;

            case Elster.Province.Brandenburg:
            case Elster.Province.Sachsen:
            case Elster.Province.SachsenAnhalt:
                prefix = "3";
                break;

            case Elster.Province.MecklenburgVorpommern:
            case Elster.Province.Thueringen:
                prefix = "4";
                break;

            case Elster.Province.Saarland:
                prefix = "1";
                break;

            default:
                throw new NotSupportedException($"Kein Präfix für das Bundesland {province} hinterlegt");
            }

            var result = string.Format(
                "{4}{0}0{1}{2}{3}",
                number.Substring(0, 3),
                number.Substring(3, 3),
                number.Substring(6, 4),
                number.Substring(10, 1),
                prefix);

            return(ParseResult.AsSuccess(result, province));
        }
Ejemplo n.º 7
0
        private static ParseResult TryParseNumber([NotNull] string number, Province?province)
        {
            if (number == null)
            {
                throw new ArgumentNullException(nameof(number));
            }
            try
            {
                if (province != null && !string.IsNullOrEmpty(number) && ((number.IndexOf(' ') != -1 || number.IndexOf('/') != -1 || number.IndexOf('-') != -1) || number.Length < 13))
                {
                    return(ParseNumber(number, province));
                }

                return(ParseResult.AsSuccess(number, province));
            }
            catch
            {
                return(ParseResult.AsSuccess(number, province));
            }
        }