public void AddFamily(Family family) { Requires.NotNull("family", family); family.Id = _document.Records.GetNextId(GEDCOMTag.FAM).ToString(); var record = new GEDCOMFamilyRecord(family.Id); if (!string.IsNullOrEmpty(family.HusbandId)) { //Add HUSB record.AddHusband(GEDCOMUtil.CreateId("I", family.HusbandId)); } if (!string.IsNullOrEmpty(family.WifeId)) { //Add WIFE record.AddWife(GEDCOMUtil.CreateId("I", family.WifeId)); } foreach (Individual child in family.Children) { //Add CHIL record.AddChild(GEDCOMUtil.CreateId("I", child.Id)); } _document.AddRecord(record); }
private static void RemoveIndividualFromFamilyRecord(Individual child, GEDCOMRecord familyRecord, GEDCOMTag tag) { var childRecord = (from GEDCOMRecord record in familyRecord.ChildRecords.GetLinesByTag(tag) where record.XRefId == GEDCOMUtil.CreateId("I", child.Id) select record).SingleOrDefault(); if (childRecord != null) { familyRecord.ChildRecords.Remove(childRecord); } }
public void UpdateFamily(Family family) { Requires.NotNull("family", family); GEDCOMFamilyRecord record = _document.SelectFamilyRecord(GEDCOMUtil.CreateId("F", family.Id)); if (record == null) { //record not in repository throw new ArgumentOutOfRangeException(); } }
private GEDCOMFamilyRecord GetFamilyRecord(Individual individual) { string fatherId = individual.FatherId; string motherId = individual.MotherId; var familyRecord = !string.IsNullOrEmpty(fatherId) ? (!string.IsNullOrEmpty(motherId) ? _document.SelectFamilyRecord(GEDCOMUtil.CreateId("I", fatherId), GEDCOMUtil.CreateId("I", motherId)) : _document.SelectHusbandsFamilyRecords(GEDCOMUtil.CreateId("I", fatherId)).FirstOrDefault()) : _document.SelectWifesFamilyRecords(GEDCOMUtil.CreateId("I", motherId)).FirstOrDefault(); return(familyRecord); }
public void DeleteIndividual(Individual individual) { Requires.NotNull("individual", individual); string individualId = GEDCOMUtil.CreateId("I", individual.Id); //Remove from internal List Individuals.Remove(individual); GEDCOMIndividualRecord record = _document.SelectIndividualRecord(individualId); if (record == null) { //record not in repository throw new ArgumentOutOfRangeException(); } _document.RemoveRecord(record); //see if individual is a child in a family var familyRecord = _document.SelectChildsFamilyRecord(individualId); if (familyRecord != null) { //remove child from family RemoveIndividualFromFamilyRecord(individual, familyRecord, GEDCOMTag.CHIL); } if (individual.Sex == Sex.Male) { //see if individual is a husband in a family foreach (GEDCOMFamilyRecord fRecord in _document.SelectHusbandsFamilyRecords(individualId)) { //remove husband from family RemoveIndividualFromFamilyRecord(individual, fRecord, GEDCOMTag.HUSB); } } else { //see if individual is a wife in a family foreach (GEDCOMFamilyRecord fRecord in _document.SelectWifesFamilyRecords(individualId)) { //remove wife from family RemoveIndividualFromFamilyRecord(individual, fRecord, GEDCOMTag.WIFE); } } }
public void UpdateIndividual(Individual individual) { Requires.NotNull("individual", individual); GEDCOMIndividualRecord record = _document.SelectIndividualRecord(GEDCOMUtil.CreateId("I", individual.Id)); if (record == null) { //record not in repository throw new ArgumentOutOfRangeException(); } record.Name = new GEDCOMNameStructure(String.Format("{0} /{1}/", individual.FirstName, individual.LastName), record.Level + 1); record.Sex = individual.Sex; //Update Family Info UpdateFamilyDetails(individual); }
private void UpdateFamilyDetails(Individual individual) { var familyRecord = _document.SelectChildsFamilyRecord(GEDCOMUtil.CreateId("I", individual.Id)); if (familyRecord != null) { if (individual.FatherId != GEDCOMUtil.GetId(familyRecord.Husband) || individual.MotherId != GEDCOMUtil.GetId(familyRecord.Wife)) { //remove child from current family RemoveIndividualFromFamilyRecord(individual, familyRecord, GEDCOMTag.CHIL); familyRecord = GetFamilyRecord(individual); if (familyRecord != null) { //Add Individual as Child familyRecord.AddChild(GEDCOMUtil.CreateId("I", individual.Id)); } else { //new Family CreateNewFamily(individual); } } } else { if (!string.IsNullOrEmpty(individual.FatherId) || !string.IsNullOrEmpty(individual.MotherId)) { familyRecord = GetFamilyRecord(individual); if (familyRecord != null) { //Add Individual as Child familyRecord.AddChild(GEDCOMUtil.CreateId("I", individual.Id)); } else { //new Family CreateNewFamily(individual); } } } }