Ejemplo n.º 1
0
        public CondicaoPagamentoValidator(CondicaoPagamentoDAO condicaoPagamentoDAO, FormaPagamentoDAO formaPagamentoDAO, CondicaoPagamentoParcelaDAO condicaoPagamentoParcelaDAO)
        {
            this.CondicaoPagamentoParcelaDAO = condicaoPagamentoParcelaDAO;
            this.CondicaoPagamentoDAO        = condicaoPagamentoDAO;
            this.FormaPagamentoDAO           = formaPagamentoDAO;

            RuleFor(e => e.Nome)
            .NotEmpty().WithMessage("Nome da Condição de Pagamento não pode ser vazio.")
            .MaximumLength(50).WithMessage("O campo Nome não deve possuir mais de 50 caracteres.");


            RuleFor(e => e.Nome).Must(NameIsAllow).WithMessage("Condição de Pagamento já cadastrada.");
            RuleFor(e => e.Multa)
            .Must(e => e >= 0).WithMessage("Valor da multa não pode ser negativo")
            .Must(e => e <= 100).WithMessage("Valor da multa não pode ser maior que 100%");

            RuleFor(e => e.Juro)
            .Must(e => e >= 0).WithMessage("Valor do juro não pode ser negativo")
            .Must(e => e <= 100).WithMessage("Valor do juro não pode ser maior que 100%");

            RuleFor(e => e.Desconto)
            .Must(e => e >= 0).WithMessage("Valor do desconto não pode ser negativo")
            .Must(e => e <= 100).WithMessage("Valor do desconto não pode ser maior que 100%");

            RuleFor(e => e.Id).Must(ExistsCondicaoPagamento).When(e => e.Id > 0).WithMessage("Forma de Pagamento não cadastrada.");

            RuleFor(e => e.Parcela)
            .Must(e => e.All(a => a.Percentual > 0 && a.Percentual <= 100))
            .WithMessage("Valor percentual da parcela é inválido.")
            .Must(e => e.Sum(a => a.Percentual) == 100)
            .WithMessage((e) => $"Percentual total de parcelas não corresponde a 100% ({e.Parcela.Sum(a => a.Percentual)}).")
            .Must(e =>
            {
                var dia = 0;
                return(e.All(e =>
                {
                    var valid = e.NumeroDias >= dia;
                    dia = e.NumeroDias;
                    return valid;
                }));
            }).WithMessage("Os dias devem ser sequenciais.")
            .Must(ee =>
            {
                return(ee.Where(a => a.Id > 0).All(a => ExistsParcela(a.Id)));
            }).WithMessage("Parcela não cadastrada.")
            .Must(ee =>
            {
                return(ee.All(a => ExistsFormaPagamento(a, a.FormaPagamentoId)));
            }).WithMessage("Forma de Pagamento não cadastrada.")
            .Must(ee => ee.Select(a => a.NumeroDias).Distinct().Count() == ee.Count()).WithMessage("Número de dias repetidos.");

            //dias repetidos
        }
 public CondicaoPagamentoDAO(CondicaoPagamentoParcelaDAO condicaoPagamentoParcelaDAO, DataBaseConnection context) : base(context, "CondicaoPagamentos")
 {
     CondicaoPagamentoParcelaDAO = condicaoPagamentoParcelaDAO ?? throw new ArgumentNullException(nameof(condicaoPagamentoParcelaDAO));
 }
Ejemplo n.º 3
0
 public CondicaoPagamentoDAO(CondicaoPagamentoParcelaDAO condicaoPagamentoParcelaDAO, ApplicationContext context) : base(context, "CondicaoPagamentos")
 {
     CondicaoPagamentoParcelaDAO = condicaoPagamentoParcelaDAO ?? throw new ArgumentNullException(nameof(condicaoPagamentoParcelaDAO));
 }