public FornecedorValidation()
        {
            RuleFor(f => f.Nome)
            .NotEmpty().WithMessage("O campo {PropertyName} precisa ser fornecido")
            .Length(2, 100)
            .WithMessage("O campo {PropertyName} precisa ter entre {MinLength} e {MaxLength} caracteres");

            //When(f => f.TipoFornecedor == TipoFornecedor.PessoaFisica, () =>
            //{
            //    RuleFor(f => f.Documento.Length).Equal(CpfValidacao.TamanhoCpf)
            //        .WithMessage("O campo Documento precisa ter {ComparisonValue} caracteres e foi fornecido {PropertyValue}.");
            //    RuleFor(f=> CpfValidacao.Validar(f.Documento)).Equal(true)
            //        .WithMessage("O documento fornecido é inválido.");
            //});

            When(f => f.TipoFornecedor == TipoFornecedor.PessoaJuridica, () =>
            {
                RuleFor(f => f.Documento.Length).Equal(CnpjValidacao.TamanhoCnpj)
                .WithMessage("O campo Documento precisa ter {ComparisonValue} caracteres e foi fornecido {PropertyValue}.");
                RuleFor(f => CnpjValidacao.Validar(f.Documento)).Equal(true)
                .WithMessage("O documento fornecido é inválido.");
            });
        }
        public override void Validate()
        {
            LimparMensagemValidacao();

            if (string.IsNullOrWhiteSpace(Email))
            {
                AdicionarMensagem("Email é de preenchimento obrigatório");
            }

            if (string.IsNullOrWhiteSpace(Senha))
            {
                AdicionarMensagem("Senha é de preenchimento obrigatório");
            }

            if ((int)TipoPessoa <= 0)
            {
                AdicionarMensagem("Informe o tipo de pessoa");
            }

            if (string.IsNullOrWhiteSpace(Documento))
            {
                AdicionarMensagem("Documento é de preenchimento obrigatório");
            }

            if (!string.IsNullOrWhiteSpace(Documento))
            {
                if (TipoPessoa == TipoDocumentoEnum.PessoaFisica && !CpfValidacao.IsCpf(Documento))
                {
                    AdicionarMensagem("Cpf Inválido");
                }

                if (TipoPessoa == TipoDocumentoEnum.PessoaJuridica && !CnpjValidacao.IsCnpj(Documento))
                {
                    AdicionarMensagem("Cnpj Inválido");
                }
            }
        }
        public ProviderValidation()
        {
            RuleFor(x => x.Name)
            .NotEmpty().WithMessage("The field {PropertyName} is required")
            .Length(2, 100).WithMessage("The field {PropertyName} must have between {MinLength} and {MaxLength}");

            When(x => x.TypeProvider == TypeProvider.PhysicalPerson, () =>
            {
                RuleFor(x => x.Document.Length).Equal(CpfValidacao.TamanhoCpf)
                .WithMessage("The fiel Document need to have {ComparisonValue} characters and was supplied {PropertyValue}.");

                RuleFor(x => CpfValidacao.Validar(x.Document)).Equal(true)
                .WithMessage("Invalid Document!");
            });

            When(x => x.TypeProvider == TypeProvider.LegalPerson, () =>
            {
                RuleFor(x => x.Document.Length).Equal(CnpjValidacao.TamanhoCnpj)
                .WithMessage("The fiel Document need to have {ComparisonValue} characters and was supplied {PropertyValue}.");

                RuleFor(x => CnpjValidacao.Validar(x.Document)).Equal(true)
                .WithMessage("Invalid document!");
            });
        }
        public FornecedorValidation()
        {
            RuleFor(cd => cd.Nome)
            .NotEmpty().WithMessage(ValidationsMessages.MessageNotEmpty)
            .Length(2, 100).WithMessage(ValidationsMessages.MessageMinAndMaxLength);

            When(cd => cd.TipoFornecedor == TipoDocumento.PessoaFisica, () =>
            {
                RuleFor(cd => cd.Documento.Length).Equal(CpfValidacao.TamanhoCpf)
                .WithMessage(MessageInvalidLengthCnpjCpf);

                RuleFor(cd => CpfValidacao.Validar(cd.Documento)).Equal(true)
                .WithMessage(MessageInvalidCnpjCpf);
            });

            When(cd => cd.TipoFornecedor == TipoDocumento.PessoaJuridica, () =>
            {
                RuleFor(cd => cd.Documento.Length).Equal(CnpjValidacao.TamanhoCnpj)
                .WithMessage(MessageInvalidLengthCnpjCpf);

                RuleFor(cd => CnpjValidacao.Validar(cd.Documento)).Equal(true)
                .WithMessage(MessageInvalidCnpjCpf);
            });
        }