Fluent Validation Kullanımı

Fluent Validation Kullanımı

Fluent Validation Nedir?

  • İş nesnelerimiz için doğrulama kuralları oluşturmak amacıyla akıcı bir arabirim ve lambda ifadeleri kullanan küçük bir . NET doğrulama kütüphanesidir

  • FluentValidation ve benzeri ürünlerin kullanılması, verilerin doğru şekilde yani verilerin oluştururken konulmuş kısıtlamaları sağlayarak kurallara uyumlu halde olmasını ve kullanıcı ya da sistem kaynaklı hataların oluşmasını engeller.

Fluent Validation Nasıl Kullanılır?

1- İlk olarak FluentValidation kütüphanesini kurmamız gerekiyor.

2- Daha sonra models klasörümüzün içinde Class’ımızı oluşturuyoruz

public class Person
{

        public string Name { get; set; }
        public string LastName { get; set; }
        public string Phone { get; set; }
        public int AccessLevel { get; set; }
        public decimal Salary { get; set; }

}

3- FluentValidation’ı startup.cs dosyasında entegre ediyoruz

 //fluentvalidation servisini entegre ettim
 services.AddControllersWithViews().AddFluentValidation(x=>x.RegisterValidatorsFromAssemblyContaining<Startup>());

4- Models klasörümüzün içerisine Validators klasörü açarak PersonValidator class’ı oluşturuyoruz. PersonValidator constructor’ı oluşturup içerisine kurallarımızı yazıyoruz.

using FluentValidation;
using FluentValidation.Validators;
using System.ComponentModel.DataAnnotations;
namespace SipayApi.Models.Validators
{
    public class PersonValidator:AbstractValidator<Person> //Hangi sınıfın validator'ı olduğunu göstermek için o sınıfın AbstractValidator'ının inherit aldım 
    {
        //Fluent validation eklemeleri
        public PersonValidator()
        {
            RuleFor(x => x.Name).NotEmpty().WithMessage("Name cannot be empty")
                .MinimumLength(5).MaximumLength(100).WithMessage("Name length can be at least 5 and up to 100")
                .WithName("staff person name");


            RuleFor(x => x.LastName).NotEmpty().WithMessage("LastName cannot be empty")
                .MinimumLength(5).MaximumLength(100).WithMessage("Lastname length can be at least 5 and up to 100")
                .WithName("staff person lastname");

            RuleFor(x => x.Phone).NotEmpty().WithMessage("Phone cannot be empty")
                .Matches(@"(0(\d{3}) (\d{3}) (\d{2}) (\d{2}))$").WithMessage("PhoneNumber not valid")
                .WithName("staff person phone number");


            RuleFor(x => x.AccessLevel).NotEmpty().WithMessage("AccessLevel cannot be empty")
                .InclusiveBetween(1, 5).WithMessage("AccessLevel should be between 1 and 5")
                .WithName("staff person access level to system");


            RuleFor(x => x.Salary).NotEmpty().WithMessage("Salary cannot be empty")
                 .Must((x,salary) => SalaryAccessLevel (x.AccessLevel, salary))
                 .InclusiveBetween(5000, 50000).WithMessage("Salary should be between 5000 and 50000")
                 .WithName("staff person salary");



        }


    }
}

Fluentvalidation hakkında bahsedeklerim bu kadardı sonraki yazılarımda görüşmek üzere diğer yazılarıma göz atmayı unutmayın :)) Mutlu Kodlamalar 👩‍💻 🚀

Fluentvalidation ile ilgili projeyi incelemek isterseniz → https://github.com/gulsunciftci/Sipay-Bootcamp-Hafta-1-FluentValidationOdevi