PolandValidationAttributes 1.0.6

dotnet add package PolandValidationAttributes --version 1.0.6
                    
NuGet\Install-Package PolandValidationAttributes -Version 1.0.6
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="PolandValidationAttributes" Version="1.0.6">
  <PrivateAssets>all</PrivateAssets>
  <IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
</PackageReference>
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="PolandValidationAttributes" Version="1.0.6" />
                    
Directory.Packages.props
<PackageReference Include="PolandValidationAttributes">
  <PrivateAssets>all</PrivateAssets>
  <IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
</PackageReference>
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add PolandValidationAttributes --version 1.0.6
                    
#r "nuget: PolandValidationAttributes, 1.0.6"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package PolandValidationAttributes@1.0.6
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=PolandValidationAttributes&version=1.0.6
                    
Install as a Cake Addin
#tool nuget:?package=PolandValidationAttributes&version=1.0.6
                    
Install as a Cake Tool

Dokumentacja:

http://blog.rockedge.pl/page/PolandValidationAttributes.aspx

Licencja:

http://blog.rockedge.pl/page/Licencja-do-Poland-Validation-Attributes-.aspx

Poland Validation Attributes - to płatna do komercyjnych zastosowań biblioteka której celem jest umożliwienie sprawdzenia wszystkich urzędowych numerów w Polsce.

W wersji 1.0.6 dostępne jest:

sprawdzanie numeru PESEL w dwóch wariantach:
PESEL poprawny wygenerowany na podstawie przyszłej daty urodzin zwróci błąd
PESEL poprawny wygenerowany na podstawie przyszłej daty urodzin będzie poprawny
generowanie numerów PESEL dla wybranej daty
sprawdzanie czy data urodzenia jest zgodna z numerem PESEL
sprawdzanie czy podana płeć jest zgodna z numerem PESEL
sprawdzanie poprawności polskiego kodu pocztowego
sprawdzanie czy kod pocztowy pasuje do poczty
Sprawdzanie numeru PESEL ma swoje ograniczenia. Na chwilę obecną wiemy jakie są/będą numery od roku 1800 do 2299.

Walidacja numeru PESEL

PolandValidationAttributes dostępny jest poprzez Nuget. Po ściągnięciu paczki przez nuget'a wystarczy dodać atrybut do własciwości w modelu:

using PolandValidationAttributes.Pesel.Attributes;

public class UserMaster
{
   [Pesel(IsFutureAllowed = true)]
   public string Pesel { get; set; }

   [Pesel(IsFutureAllowed = false)]
   public string PeselPresent { get; set; }
}

Parametr IsFutureAllowed jest nieobowiązkowy, domyślnie przyjmuje wartość false. Wartość: 14711204228 dla Pesel będzie poprawna natomiast dla właściwości PeselPresent już nie (data urodzenia wg pesel: 2214-11-12). Zastosowanie tych atrybutów testowałem w aplikacji webowej ASP.NET MVC.

Generowanie numeru PESEL
Biblioteka posiada także klasę do generowania numerów PESEL: PeselGenerator(), aby z niej skorzystać wystarczy jej użyć w sposób pokazany poniżej, na podstawie daty zwraca listę możliwych do przypisania numerów PESEL.

public void GenerujNumeryPesel()
{
     var pesel = new PolandValidationAttributes.PeselGenerator();
     var pesele = pesel.Generate(new DateTime(1988, 10, 30));
}
Walidacja daty urodzenia z użyciem numeru PESEL

[Pesel(IsFutureAllowed = true)]
public string Pesel { get; set; }

[BirthdayMatchPesel("Pesel")] // "Pesel" - to nazwa właściwości powyżej
public DateTime DataUrodzenia { get; set; }

Walidacja płci z użycie numeru PESEL

       [Pesel(IsFutureAllowed = true)]
       public string Pesel { get; set; }

       [GenderMatchPesel("Pesel", Male = "Mężczyzna", Female = "Kobieta")]
       public string Plec { get; set; }

       [GenderMatchPesel("Pesel", Male = 0, Female = 1)]
       public bool PlecBool { get; set; }

       [GenderMatchPesel("Pesel", Male = PlecMvc.Men, Female = PlecMvc.Women)]
       public PlecMvc PlecEnum { get; set; }

Przy czym PlecMvc to enum w warstwie prezentacji. Na tą chwilę może walidować płeć dla stringów, boolów i enumów.
public enum PlecMvc
   {
       Men,
       Women
   }

Walidacja kodu pocztowego
Kod pocztowy może być podany w formie: 00-000 lub 00000.
Aby móc użyć walidatora kodu pocztowego należy użyć kodu poniżej:
using PolandValidationAttributes.PostCode.Attributes;

public class PowerUser
{
   [PostCode]
   public string KodPocztowy { get; set; }
}
Chcąc zwalidować gminę na podstawie kodu pocztowego:
using PolandValidationAttributes.PostCode.Attributes;

public class PowerUser
{
   [PostCode]
   public string KodPocztowy { get; set; }

   [PostMatchCode("KodPocztowy")]
   public string Poczta { get; set; }
}

Product Compatible and additional computed target framework versions.
.NET Framework net40 is compatible.  net403 was computed.  net45 was computed.  net451 was computed.  net452 was computed.  net46 was computed.  net461 was computed.  net462 was computed.  net463 was computed.  net47 was computed.  net471 was computed.  net472 was computed.  net48 was computed.  net481 was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

This package has no dependencies.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.0.6 631 11/4/2014

1.0.0 - 1.0.3 walidacja pesel
1.0.4 - 1.0.5 walidacja daty urodziny + walidacja płci
1.0.6 - walidacja kodu pocztowego, walidacja kodu pocztowego + poczty