public ValidadorProveedor() { this.ClearRules(proveedor => proveedor.Codigo); this.RuleFor(proveedor => proveedor.Codigo) .Must((proveedor, codigo) => { if (codigo == null || codigo == string.Empty) { return(true); } else { return(codigo.All(p => Regex.IsMatch(p.ToString(), "[a-zA-Z0-9]"))); } }) .WithMessage("Sólo letras y números.") .Length(0, 5) .WithMessage("Código no puede superar los 5 dígitos."); this.RuleFor(proveedor => proveedor.RazonSocial) .NotEmpty() .WithMessage("Este campo no puede estar vacio") .NotNull() .WithMessage("Este campo no puede estar vacio"); //this.RuleFor(proveedor => proveedor.ConceptoDeMovimiento).NotNull().NotEmpty().WithMessage("Concepto de Movimiento no puede estar vacio"); //this.RuleFor(proveedor => proveedor.CondicionDePago).NotNull().NotEmpty().WithMessage("Condicion no puede estar vacio"); this.RuleFor(proveedor => proveedor.Cuit) .NotEmpty() .WithMessage("CUIT no puede estar vacío.") .When(proveedor => proveedor.CondicionAnteIva != Fiscal.CondicionAnteIva.ConsumidorFinal) .NotNull() .WithMessage("CUIT no puede estar vacío.") .When(proveedor => proveedor.CondicionAnteIva != Fiscal.CondicionAnteIva.ConsumidorFinal) .Must((proveedor, cuit) => { var validadorCuit = new ValidadorCUIT(); return(validadorCuit.ValidaCuit(cuit)); }) .WithMessage("El CUIT ingresado es incorrecto.") .When(proveedor => proveedor.CondicionAnteIva != Fiscal.CondicionAnteIva.ConsumidorFinal); this.RuleFor(p => p.TipoProveedor) .NotNull() .WithMessage("Seleccione un Tipo de Proveedor."); this.RuleFor(p => p.CondicionAnteIIBB) .NotNull() .WithMessage("Debe indicar una Condición ante IIBB."); this.RuleFor(p => p.Iibb) .NotEmpty() .WithMessage("Debe indicar el Número IIBB.") .When(prov => prov.CondicionAnteIIBB == Fiscal.CondicionAnteIIBB.DMOnceVeitiseis || prov.CondicionAnteIIBB == Fiscal.CondicionAnteIIBB.DNBOcho || prov.CondicionAnteIIBB == Fiscal.CondicionAnteIIBB.DNBTreintaYOcho) .NotNull() .WithMessage("Debe indicar el Número IIBB.") .When(prov => prov.CondicionAnteIIBB == Fiscal.CondicionAnteIIBB.DMOnceVeitiseis || prov.CondicionAnteIIBB == Fiscal.CondicionAnteIIBB.DNBOcho || prov.CondicionAnteIIBB == Fiscal.CondicionAnteIIBB.DNBTreintaYOcho); }
public ValidadorCliente() { this.ClearRules(cliente => cliente.Codigo); //this.RuleFor(cliente => cliente.Codigo) // .Must((cliente, codigo) => // { // if (codigo == null || codigo == string.Empty) // return true; // else // return codigo.All(p => Regex.IsMatch(p.ToString(), "[a-zA-Z0-9]")); // }) // .WithMessage("Sólo letras y números.") // .Length(0, 5) // .WithMessage("Código no puede superar los 5 dígitos."); this.RuleFor(cliente => cliente.RazonSocial) .NotNull() .WithMessage("Campo no puede estar vacio.") .NotEmpty() .WithMessage("Campo no puede estar vacio."); this.RuleFor(cliente => cliente.NombreFantasia) .NotNull() .WithMessage("Campo no puede estar vacio.") .NotEmpty() .WithMessage("Campo no puede estar vacio."); this.ClearRules(cliente => cliente.Nombre); //this.RuleFor(cliente => cliente.Apellido) // .NotNull() // .WithMessage("Campo no puede estar vacio.") // .NotEmpty() // .WithMessage("Campo no puede estar vacio."); //this.RuleFor(cliente => cliente.Domicilio).NotEmpty().NotEmpty().WithMessage("Domicilio no puede estar vacio"); //this.RuleFor(cliente => cliente.Domicilio.Calle).NotEmpty().NotNull(); //this.RuleFor(cliente => cliente.Domicilio.Numero).NotEmpty().NotNull(); this.RuleFor(cliente => cliente.NumeroDocumentoCliente) .NotEmpty() .WithMessage("Debe indicar número de documento.") .When(cliente => cliente.CondicionAnteIva == Fiscal.CondicionAnteIva.ConsumidorFinal) .NotNull() .WithMessage("Debe indicar número de documento.") .When(cliente => cliente.CondicionAnteIva == Fiscal.CondicionAnteIva.ConsumidorFinal); this.RuleFor(cliente => cliente.NumeroDocumentoCliente) .Must((cliente, dni) => { int num = 0; return(int.TryParse(dni, out num)); }) .WithMessage("Número de documento debe contener números solamente.") .When(cliente => cliente.Id == 0 && cliente.CondicionAnteIva == Fiscal.CondicionAnteIva.ConsumidorFinal); this.RuleFor(cliente => cliente.Cuit) .NotEmpty() .WithMessage("CUIT no puede estar vacío.") .When(cliente => cliente.CondicionAnteIva != Fiscal.CondicionAnteIva.ConsumidorFinal) .NotNull() .WithMessage("CUIT no puede estar vacío.") .When(cliente => cliente.CondicionAnteIva != Fiscal.CondicionAnteIva.ConsumidorFinal) .Must((cliente, cuit) => { var validadorCuit = new ValidadorCUIT(); return(validadorCuit.ValidaCuit(cuit)); }) .WithMessage("El CUIT ingresado es incorrecto.") .When(cliente => cliente.CondicionAnteIva != Fiscal.CondicionAnteIva.ConsumidorFinal); this.RuleFor(cliente => cliente.NumeroIibb) .NotEmpty() .WithMessage("Número de IIBB no puede estar vacío.") .When(cliente => cliente.CondicionAnteIibb != Fiscal.CondicionAnteIIBB.NoCorrespondeExento && cliente.CondicionAnteIibb != Fiscal.CondicionAnteIIBB.NoAsignado) .NotNull() .WithMessage("Número de IIBB no puede estar vacío.") .When(cliente => cliente.CondicionAnteIibb != Fiscal.CondicionAnteIIBB.NoCorrespondeExento && cliente.CondicionAnteIibb != Fiscal.CondicionAnteIIBB.NoAsignado); //this.RuleFor(cliente => cliente.NumeroIibb).Must((cliente, numero) => //{ // if (cliente.CondicionAnteIibb == Fiscal.CondicionAnteIIBB.NoCorrespondeExento || cliente.CondicionAnteIibb == Fiscal.CondicionAnteIIBB.NoAsignado) // { // return true; // } // else // { // if (numero != null && numero != string.Empty) // return true; // else // return false; // } //}); var fecha_min = DateTime.Today.AddMonths(-2); var fecha_max = DateTime.Today.AddDays(1); this.RuleFor(cliente => cliente.FechaAlta) .GreaterThan(fecha_min) .WithMessage("La fecha indicada excede los 2 meses.") .When(cliente => cliente.Id == 0) .LessThan(fecha_max) .WithMessage("La fecha no debe ser mayor a la actual.") .When(cliente => cliente.Id == 0); this.RuleFor(cliente => cliente.Email) .EmailAddress() .WithMessage("E-Mail inválido.") .Unless(cliente => cliente.Email == string.Empty || cliente.Email == null); this.RuleFor(cliente => cliente.VencimientoReba) .GreaterThan(DateTime.Today) .WithMessage("La fecha debe ser mayor a la actual.") .When(cliente => cliente.Id == 0 && cliente.NumeroReba != null && cliente.NumeroReba.Length > 0); Func <Cliente, Ramo, bool> EncontrarRamoEntarjetas = (cli, ramo) => { bool encontro = false; if (cli.Ramo != null) { var ramocodigo = cli.Ramo.Codigo; encontro = cli.TarjetasCliente.Any(t => t.TipoTarjeta.Ramos.Any(r => r.Codigo == ramocodigo)); } return(encontro); }; this.RuleFor(cliente => cliente.Ramo) .NotNull() .WithMessage("Requerido."); //this.RuleFor(cliente => cliente.Ramo) // .Must(EncontrarRamoEntarjetas) // .WithMessage("El ramo no corresponde con las tarjetas asignadas actualmente.") // .When(cliente => cliente.TarjetasCliente.Count > 0); //this.RuleFor(cliente => cliente.CuentaPadre) // .Must(cli => // { // if (cli.CuentaPadre != null) // if (cli.CuentaPadre.Codigo == cli.Codigo) // return false; // return true; // }) // .When(c => c.Id != 0 && c.CuentaPadre != null) // .WithMessage("Cuenta Padre no puede ser el mismo cliente."); this.RuleFor(cliente => cliente.CuentaPadre) .NotEqual(cliente => cliente) .When(cliente => cliente.Id != 0) .WithMessage("Cuenta Padre no puede ser el mismo cliente."); this.RuleFor(cliente => cliente.ZonaGeografica) .NotNull() .WithMessage("Requerido."); //this.RuleFor(cliente => cliente.DatosOld.Domicilio) // .NotEmpty() // .WithMessage("Requerido.") // .NotNull() // .WithMessage("Requerido."); }