Ejemplo n.º 1
0
        /// <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);
        }
Ejemplo n.º 2
0
        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));
        }
Ejemplo n.º 3
0
 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);
        }