BrazilModels 2.0.0

dotnet add package BrazilModels --version 2.0.0
NuGet\Install-Package BrazilModels -Version 2.0.0
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="BrazilModels" Version="2.0.0" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add BrazilModels --version 2.0.0
#r "nuget: BrazilModels, 2.0.0"
#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.
// Install BrazilModels as a Cake Addin
#addin nuget:?package=BrazilModels&version=2.0.0

// Install BrazilModels as a Cake Tool
#tool nuget:?package=BrazilModels&version=2.0.0

CI Nuget alternate text is missing from this package README image alternate text is missing from this package README image alternate text is missing from this package README image alternate text is missing from this package README image

alternate text is missing from this package README image alternate text is missing from this package README image https://editorconfig.org/

BrazilModels

This library contains Models, Formatters and Validator for common Brazilian documents

Getting started

NuGet package available:

$ dotnet add package BrazilModels

Validation and Formatting

Cpf

using BrazilModels;

Cpf.Validate("00123456797");    // True
Cpf.Validate("99912345606");    // True
Cpf.Validate("999.123.456-06"); // True
Cpf.Validate("00000000000");    // False
Cpf.Validate("invalid");        // False

Cpf.Format("99912345606", withMask: true);    // "999.123.456-06"
Cpf.Format("319.818.120-83", withMask: true); // "319.818.120-83"
Cpf.Format("1234567890", withMask: true);     // "012.345.678-90"
Cpf.Format("12345601", withMask: true);       // "000.123.456-01"

Cpf.Format("319.818.120-83"); // "31981812083"
Cpf.Format("085.974.710-77"); // "08597471077"
Cpf.Format("08597471077");    // "08597471077"
Cpf.Format("12345601");       // "00012345601"

Cnpj

using BrazilModels;

Cnpj.Validate("49.020.406/0001-25");// True
Cnpj.Validate("49020406000125");    // True
Cnpj.Validate("invalid");           // False

Cnpj.Format("49020406000125", withMask: true);     // "49.020.406/0001-25"
Cnpj.Format("49.020.406/0001-25", withMask: true); // "49.020.406/0001-25"
Cnpj.Format("1123456000101", withMask: true);      // "01.123.456/0001-01"

Cnpj.Format("49020406000125");     // "49020406000125"
Cnpj.Format("49.020.406/0001-25"); // "49020406000125"
Cnpj.Format("01.123.456/0001-01"); // "1123456000101"

CpfCnpj (can be CPF or CNPJ)

using BrazilModels;

CpfCnpj.Validate("49.020.406/0001-25");// True
CpfCnpj.Validate("49020406000125");    // True
CpfCnpj.Validate("99912345606");       // True
CpfCnpj.Validate("999.123.456-06");    // True

CpfCnpj.Format("49020406000125", withMask: true); // "49.020.406/0001-25"
CpfCnpj.Format("99912345606", withMask: true);    // "999.123.456-06"

CpfCnpj.Format("085.974.710-77");         // "08597471077"
CpfCnpj.Format("49.020.406/0001-25");     // "49020406000125"

Models

You can use some value types defined in this lib to strongly type your domain:

  • Cpf
  • Cnpj
  • CpfCnpj
  • Email

How to use it?

var cpf = new Cpf("319.818.120-83");
var cnpj = new Cnpj("49.020.406/0001-25");

class Person {
    public Guid Id {get;init;}
    public Cpf Cpf {get;init;}
    public Email Email {get;init;}
}

class Company {
    public Guid Id {get;init;}
    public Cnpj Cnpj {get;init;}
}

Serialization

This already contain converters for:

  • System.Text.Json
  • Swashbuckle.AspNetCore.Annotations
  • System.ComponentModel.TypeConverter

Using with EntityFramework

You can easily define a ValueConverter for any of the types defined in this library as:


public class YourDbContext : DbContext
{
    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        var cliente = modelBuilder.Entity<Person>();
        cliente.Property(x => x.Cpf).HasConversion(t => t.Value, t => new(t));
        cliente.Property(x => x.Email).HasConversion(t => t.Value, t => new(t));
    }
}

Culture Info

You can use BrazilCulture.CultureInfo as a light-weight alternative pt-BR culture. It formats as expected dates and decimal values.

Product Compatible and additional computed target framework versions.
.NET net6.0 is compatible.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • net6.0

    • No dependencies.
  • net8.0

    • No dependencies.

NuGet packages (1)

Showing the top 1 NuGet packages that depend on BrazilModels:

Package Downloads
BrazilModels.Swagger

Package Description

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
2.0.0 144 4/3/2024
1.1.13 420 1/26/2024
1.1.12 1,535 5/24/2023
1.1.11 573 5/24/2023
1.1.10 1,666 2/10/2023
1.1.9 876 1/24/2023
1.1.8 2,267 1/16/2023
1.1.7 802 12/28/2022
1.1.6 708 12/28/2022
1.1.5 780 12/20/2022
1.1.4 902 11/27/2022
1.1.3 956 11/10/2022
1.1.2 773 11/8/2022
1.1.1 764 11/8/2022
1.1.0 748 11/7/2022
1.0.6 741 11/7/2022
1.0.5 734 11/7/2022
1.0.4 741 11/7/2022
1.0.3 761 11/7/2022
1.0.1 779 11/7/2022
1.0.0 785 11/7/2022