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)); }
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); }
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)); }
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")); }
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)); }
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)); }
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)); } }