private async Task <bool> ValidarDatosObligatoriosPersona(Entidades.Persona persona) { Framework.Validaciones.Validaciones.Validar <Entidades.Persona>(persona); DatosInvalidosException datosInvalidos = new DatosInvalidosException(); if (await PersonaRepositorio.ObtenerUnoAsync(p => p.IdPais == persona.IdPais && p.IdTipoDocumento == persona.IdTipoDocumento && p.IdSexo == persona.IdSexo && p.NumeroDocumento == persona.NumeroDocumento && p.Id != persona.Id) != null) { datosInvalidos.Data.Add("Persona Existente", "La persona ya se encuentra registrada."); } if (persona.PersonaContacto.Count == 0) { datosInvalidos.Data.Add("Persona sin contactos", "Debe indicar al menos un tipo de contacto"); } if (persona.FechaNacimiento.AddYears(18) > DateTime.Now) { datosInvalidos.Data.Add("Persona menor de edad", "La persona debe ser mayor a 18 años."); } if (datosInvalidos.Data.Count == 0) { return(true); } else { throw datosInvalidos; } }
public async Task <DtoPersonaRelacion> GuardarRelacionPadreAsync(int idPersona1, int idPersona2) { if (idPersona1 == idPersona2) { DatosInvalidosException datosInvalidos = new DatosInvalidosException(); datosInvalidos.Data.Add("Relacion Invalida", "Una persona no puede ser padre de si mismo"); throw datosInvalidos; } PersonaRelacion personaRelacion = await PersonaRelacionRepositorio.ObtenerUnoAsync(r => (r.IdPersona1 == idPersona1 && r.IdPersona2 == idPersona2) || (r.IdPersona1 == idPersona2 && r.IdPersona2 == idPersona1)); if (personaRelacion == null) { personaRelacion = await PersonaRelacionRepositorio.InsertarAsync(new PersonaRelacion() { IdPersona1 = idPersona1, IdPersona2 = idPersona2, IdTipoRelacion = (int)Entidades.Enumeraciones.TipoRelacionEnum.Padre }); } else { DatosInvalidosException datosInvalidos = new DatosInvalidosException(); datosInvalidos.Data.Add("Relacion Existente", "Ya existe una relacion entre las personas indicadas."); throw datosInvalidos; } return(new DtoPersonaRelacion() { IdPersona1 = idPersona1, IdPersona2 = idPersona2, Relacion = TipoRelacionEnum.Padre.ToString() }); }
public static Boolean Validar <TEntity>(TEntity Entidad) where TEntity : class { DatosInvalidosException datosInvalidos = null; foreach (var prop in typeof(TEntity).GetProperties()) { object[] attrs = prop.GetCustomAttributes(true); if (attrs == null || attrs.Length == 0) { continue; } foreach (Attribute attr in attrs) { if (attr is RequiredAttribute) { if ((attr as RequiredAttribute).IsValid(prop.GetValue(Entidad)) == false) { if (datosInvalidos == null) { datosInvalidos = new DatosInvalidosException(); } datosInvalidos.Data.Add(prop.Name, (attr as RequiredAttribute).ErrorMessage ?? String.Format("El campo {0} es obligatorio", prop.Name)); } } else if (attr is MinLengthAttribute) { if ((attr as MinLengthAttribute).IsValid(prop.GetValue(Entidad)) == false) { if (datosInvalidos == null) { datosInvalidos = new DatosInvalidosException(); } datosInvalidos.Data.Add(prop.Name, (attr as MinLengthAttribute).ErrorMessage ?? String.Format("El campo {0} debe tener una longitud mínima de '{1}'.", prop.Name, (attr as MinLengthAttribute).Length)); } } else if (attr is MaxLengthAttribute) { if ((attr as MaxLengthAttribute).IsValid(prop.GetValue(Entidad)) == false) { if (datosInvalidos == null) { datosInvalidos = new DatosInvalidosException(); } datosInvalidos.Data.Add(prop.Name, (attr as MaxLengthAttribute).ErrorMessage ?? String.Format("El campo {0} debe tener una longitud máxima de '{1}'.", prop.Name, (attr as MaxLengthAttribute).Length)); } } else if (attr is RangeAttribute) { if ((attr as RangeAttribute).IsValid(prop.GetValue(Entidad)) == false) { if (datosInvalidos == null) { datosInvalidos = new DatosInvalidosException(); } datosInvalidos.Data.Add(prop.Name, (attr as RangeAttribute).ErrorMessage ?? String.Format("El campo {0} debe estar en el rango {1} - {2}.", prop.Name, (attr as RangeAttribute).Minimum, (attr as RangeAttribute).Maximum)); } } } } if (datosInvalidos == null) { return(true); } else { throw datosInvalidos; } }