/// <summary> /// Adds a new relation to the person. /// </summary> /// <param name="p">Person</param> /// <param name="division">Stb division.</param> /// <param name="comment">Comment</param> private void AddStbRelationToPerson(Person p, StbDivision division, string comment, RelationType type) { Relation r = new Relation (); r.SubjectiveEntity = division; r.RelationType = type; r.ObjectiveEntity = p; r.Note = comment; _ctx.Relations.Add (r); }
/// <summary> /// Parses the XML node and imports it. /// </summary> /// <param name="rowNode">The node.</param> protected void ProcessRow(XmlNode rowNode) { XmlNodeList cells = rowNode.ChildNodes; if (cells.Count != kNumberOfColumns) { Console.WriteLine ("ERROR: Wrong number of columns in row {0}", rowNode.ToString ()); return; } //------------ Add to DB string lastName = cells[kLastNameColumnIndex].InnerText; string firstName = cells[kFirstNameColumnIndex].InnerText; if (firstName == null || firstName.Equals ("")) { firstName = "Nezname"; } string birthYear = cells[kBirthYearColumnIndex].InnerText; string birthPlace = cells[kBirthPlaceColumnIndex].InnerText; string[] countryStrings = new string[2]; countryStrings[0] = cells[kStateFirstColumnIndex].InnerText; countryStrings[1] = cells[kStateSecondColumnIndex].InnerText; List<Country> countries = ConvertStringCountriesToCountryArray (countryStrings); string dbAdditionYear = cells[kAddedToDatabaseYearColumnIndex].InnerText; string sexValue = cells[kSexColumnIndex].InnerText; Sex sex = Sex.Male; if (sexValue != null) { sex = sexValue.Equals (kMaleSexIdentifier) ? Sex.Male : Sex.Female; } string department = cells[kDepartmentColumnIndex].InnerText; string departmentComment = cells[kDepartmentCommentColumnIndex].InnerText; string administration = cells[kAdministrationColumnIndex].InnerText; string administrationComment = cells[kAdministrationCommentColumnIndex].InnerText; string pozorka1 = cells[kPozorkaFirstColumnIndex].InnerText; string pozorka2 = cells[kPozorkaSecondColumnIndex].InnerText; Person p = TryToFindPerson (firstName, lastName, birthYear, sex, birthPlace); if (p == null) { // Need to create a new person p = new Person (); p.FirstName = firstName; p.Surname = lastName; if (birthYear != null && !birthYear.Equals ("")) { p.BirthDate = birthYear; } p.Sex = sex; p.Nationality = Nationality.Unknown; p.Note = string.Format ("{0} {1}\n{2} {3}\n{4} {5}\n{6} {7}", kPlaceOfBirthNoteCaption, birthPlace, kPozorka1NoteCaption, pozorka1, kPozorka2NoteCaption, pozorka2, kAddedToStbDatabaseNoteCaption, dbAdditionYear); if (countries.Count > 0) { p.Citizenships = countries; } _ctx.Entities.Add (p); } StbDivision StbDepartment = GetStbDivisionByName (department); StbDivision StbAdministration = GetStbDivisionByName (administration); Relation departmentRelation = null; Relation administrationRelation = null; ICollection<Relation> relations = p.ObjectiveRelations; if (relations != null) { foreach (Relation r in relations) { if (StbDepartment != null && r.SubjectiveEntityId == StbDepartment.Id) { departmentRelation = r; } else if (StbAdministration != null && r.SubjectiveEntityId == StbAdministration.Id) { administrationRelation = r; } } } if (departmentRelation == null && StbDepartment != null) { // Need to add a relation AddStbRelationToPerson (p, StbDepartment, departmentComment, GetRelationType (kRelationDepartmentType)); } if (administrationRelation == null && StbAdministration != null) { // Need to add a relation AddStbRelationToPerson (p, StbAdministration, administrationComment, GetRelationType (kRelationAdministrativeType)); } _ctx.SaveChanges (); }