/// <summary> /// Validate person data against a list of specified validation and it will removed invalid data from collection /// </summary> /// <param name="persons"></param> /// <returns></returns> public IList <PersonDTO> Validate(IList <PersonDTO> persons) { List <PersonDTO> toRemove = new List <PersonDTO>(); Messages = new List <string>(); foreach (var person in persons) { _validationList = new ValidationList(); //_validationList.Add(new LastNameValidation(person)); _validationList.Add(new GivenNameValidation(person)); _validationList.Validate(); if (!_validationList.IsValid) { toRemove.Add(person); Messages = Messages.Concat(_validationList.Messages); } } foreach (var itemToBeDeleted in toRemove) { persons.Remove(itemToBeDeleted); } return(persons); }
public PartidasModel CreateSinglePartida(PartidasModel par) { centroCostoService = centroCostoService ?? new CentroCostoService(); partidaService = partidaService ?? new PartidasService(); conceptoCostoService = conceptoCostoService ?? new ConceptoCostoService(); contableService = contableService ?? new CuentaContableService(); empresaService = empresaService ?? new EmpresaService(); monedaService = monedaService ?? new MonedaService(); IFormatProvider culture = new CultureInfo("en-US", true); string dateFormat = "MMddyyyy"; //Counting number of record already exist. var counterRecords = partidaService.Count(); var centroCostos = centroCostoService.GetAll(); var conceptoCostos = conceptoCostoService.GetAll(); var cuentas = contableService.GetAll(); var empresa = empresaService.GetAll(); var context = new System.ComponentModel.DataAnnotations.ValidationContext(par, serviceProvider: null, items: null); var validationResults = new List <ValidationResult>(); bool isValid = Validator.TryValidateObject(par, context, validationResults, true); ValidationList rules = new ValidationList(); rules.Add(new FTSFOValidation(par, null)); rules.Add(new FTFCIFOValidation(par, null)); rules.Add(new COValidation(par, cuentas)); rules.Add(new CEValidation(par, empresa)); rules.Add(new CONCEPCOSValidation(par, conceptoCostos)); rules.Add(new IImporteValidation(par, null)); if (!rules.IsValid) { throw new Exception("No se cumple con la entrada de datos y las reglas de negocios"); } par.PA_STATUS_PARTIDA = Convert.ToInt16(BusinessEnumerations.EstatusCarga.POR_APROBAR); par.PA_REFERENCIA = System.DateTime.Now.Date.ToString(dateFormat) + counterRecords; return(base.Insert(par, true)); }
public void AddRule(IRule rule) { ValidationList.Add(rule); }
/// <summary> /// Procedimiento recursivo que emplea Reflection para extraer el cuerpo del xml a generar. /// </summary> /// <param name="obj"> /// Referencia al obeto que representa un nodo en el cuerpo del xml.</param> /// <param name="xmlDocument"> /// Referencia al objeto que contiene el contenido actual del xml, necesario para crear nuevos /// nodos.</param> /// <returns> /// Retorna un System.Xml.XmlNode que representa un nodo en el cuerpo actual del xml.</returns> private XmlNode ObtenerNodo(object obj, ref XmlDocument xmlDocument) { Type type = obj.GetType(); XmlNode xmlNode = xmlDocument.CreateElement(_prefix, type.Name, _nameSpaceURISatCfd3); PropertyInfo[] properties = type.GetProperties(); foreach (PropertyInfo property in properties) { /*Solo se consideran las propiedades declaradas con el atributo PropertyAttribute*/ object[] customAttributes = property.GetCustomAttributes(true); if (customAttributes.Length == 0) { continue; } if (!(customAttributes[0] is PropertyAttribute)) { continue; } PropertyAttribute propertyAttribute = (PropertyAttribute)customAttributes[0]; /*Para las proiedades de tipo Nodo*/ if (propertyAttribute.xmlMap == XMLMap.node) { object instance = property.GetValue(obj, null); if (instance != null) { xmlNode.AppendChild(this.ObtenerNodo(instance, ref xmlDocument)); } continue; } object valueAttribute = property.GetValue(obj, null); /*Para las propiedades de tipo lista*/ if (valueAttribute is System.Collections.IList) { if (valueAttribute != null) { this.ObtenerNodos(ref xmlDocument, ref xmlNode, (System.Collections.IList)valueAttribute); } continue; } string valueString = this.FormatearValorXML(valueAttribute, propertyAttribute.xmlFormat); /*Las propiedades que son opcionales y no tienen valor se omiten del xml*/ if (propertyAttribute.tipoUso == TipoUso.opcional && (valueString == string.Empty || valueString == _integerEmpty || valueString == _decimalEmpty)) { continue; } /*Validacion del contenido del atributo*/ if (valueString.Contains(_pipeString)) { _stackValidation.Add(new Validation( XmlSeverityType.Error, Messages.CharNotValidInAttribute(property.Name, type.Name, _pipeString))); } /*Para el resto de las propiedades de la clase*/ XmlAttribute xmlAttribute = xmlDocument.CreateAttribute(property.Name); xmlAttribute.InnerText = valueString; xmlNode.Attributes.Append(xmlAttribute); } /*Para los casos en que el objeto sea de tipo lista*/ if (obj is System.Collections.IList) { this.ObtenerNodos(ref xmlDocument, ref xmlNode, (System.Collections.IList)obj); } return(xmlNode); }