package main import ( "strings" "unicode" ) func dataEqual(a, b []Person) bool { if len(a) != len(b) { return false } for i := range a { if !personEqual(a[i], b[i]) { return false } } return true } func personEqual(a, b Person) bool { return a.FirstName == b.FirstName && a.LastName == b.LastName && a.Email == b.Email && a.InternalPhone == b.InternalPhone && a.Department == b.Department && phonesEqual(a.Phones, b.Phones) } func phonesEqual(a, b []Phone) bool { if len(a) != len(b) { return false } for i := range a { if a[i] != b[i] { return false } } return true } func formatPhoneNumber(number string) string { // Entferne alle Nicht-Ziffern digits := strings.Map(func(r rune) rune { if unicode.IsDigit(r) { return r } return -1 }, number) // Entferne führende Nullen digits = strings.TrimLeft(digits, "0") // Entferne den Länderprefix, falls vorhanden countryPrefix := config.PhoneRules.Country.Prefix if strings.HasPrefix(digits, countryPrefix) { digits = digits[len(countryPrefix):] } // Füge eine führende "0" hinzu, wenn nicht vorhanden if !strings.HasPrefix(digits, "0") { digits = "0" + digits } return digits } func extractInternalNumber(phoneNumber string) string { digits := formatPhoneNumber(phoneNumber) for _, areaCode := range config.PhoneRules.Country.AreaCodes { if strings.HasPrefix(digits[1:], areaCode) { // Ignoriere die führende 0 remaining := digits[1+len(areaCode):] if strings.HasPrefix(remaining, config.PhoneRules.Country.InternalPrefix) { return remaining[len(config.PhoneRules.Country.InternalPrefix):] } } } return "" } func normalizePhoneNumber(number string) string { return formatPhoneNumber(number) }