Solvberget.Domain.DTO.Document.GeneratePersonsFromXml C# (CSharp) Method

GeneratePersonsFromXml() protected static method

protected static GeneratePersonsFromXml ( IEnumerable nodes, string id ) : IEnumerable
nodes IEnumerable
id string
return IEnumerable
        protected static IEnumerable<Person> GeneratePersonsFromXml(IEnumerable<XElement> nodes, string id)
        {
            var persons = new List<Person>();

            var varfields = nodes.Elements("varfield").Where(x => ((string)x.Attribute("id")).Equals(id)).ToList();

            foreach (var varfield in varfields)
            {
                var nationality = GetSubFieldValue(varfield, "j");
                string nationalityLookupValue = null;
                if (nationality != null)
                    NationalityDictionary.TryGetValue(nationality, out nationalityLookupValue);

                var role = GetSubFieldValue(varfield, "e");
                string roleLookupValue = null;
                if (role != null)
                    RoleDictionary.TryGetValue(role, out roleLookupValue);

                var person = new Person()
                                 {
                                     Name = GetSubFieldValue(varfield, "a"),
                                     LivingYears = GetSubFieldValue(varfield, "d"),
                                     Nationality = nationalityLookupValue ?? nationality,
                                     Role = roleLookupValue ?? role,
                                     ReferredWork = GetSubFieldValue(varfield, "t")
                                 };

                string tempName = GetSubFieldValue(varfield, "a");
                if (tempName != null)
                    person.InvertName(tempName);

                if (!string.IsNullOrEmpty(person.Name) && !persons.Any(x => x.Name.Equals(person.Name)))
                {
                    persons.Add(person);
                }

            }

            return persons;
        }