private static GitPersonEvent CreateBirthEvent(GedcomPerson gedcomPerson, GitPerson gitPerson, GedcomEvent ev, DateTime date, GitDateType dateType) { string description = GenerateDescription(ev, EventType.Birth, date, dateType, gitPerson) + " " + Utils.JoinNotEmpty(gedcomPerson.Gender, gedcomPerson.Education, gedcomPerson.Religion, gedcomPerson.Note, gedcomPerson.Changed, gedcomPerson.Occupation, gedcomPerson.Health, gedcomPerson.Title); return(new GitPersonEvent(gitPerson, EventType.Birth, date, description, dateType)); }
private static GitPerson Convert(GedcomPerson gedcomPerson) { var result = new GitPerson(gedcomPerson.Id) { FirstName = gedcomPerson.FirstName, LastName = gedcomPerson.LastName, }; DateTime curDate = DateTime.MinValue; var events = new List <GitPersonEvent>(); foreach (GedcomEvent ev in gedcomPerson.Events) { GitDateType dateType; if (ev.Date?.IsDefined == true) { curDate = (DateTime)ev.Date; dateType = GitDateType.Exact; } else { curDate = curDate.AddTicks(1); dateType = GitDateType.After; } GitPersonEvent gitPersonEvent; if (ev.Type == EventType.Birth) { gitPersonEvent = CreateBirthEvent(gedcomPerson, result, ev, curDate, dateType); } else { string description = GenerateDescription(ev, ev.Type, curDate, dateType, result); gitPersonEvent = new GitPersonEvent(result, ev.Type, curDate, description, dateType); } events.Add(gitPersonEvent); } if (!events.Exists(ev => ev.Type == EventType.Birth)) { GitPersonEvent birthEvent = CreateBirthEvent(gedcomPerson, result, null, DateTime.MinValue, GitDateType.After); events.Insert(0, birthEvent); } result.Events = events.OrderBy(ev => ev.Date).ToList(); return(result); }
private static void InsertChild(GedcomPerson gedcomParent, GitPerson gitParent, GitPerson gitChild, GitPersonEvent gitChildBirthEvent) { if (gitParent.Events.Count == 0) { gitParent.Events.Add(CreateBirthEvent(gedcomParent, gitParent, null, DateTime.MinValue, GitDateType.After)); } bool childAdded = false; for (int i = gitParent.Events.Count - 1; i >= 0; i--) { if (gitParent.Events[i].Date < gitChildBirthEvent.Date) { gitParent.Events[i].Children.Add(gitChild); childAdded = true; break; } } if (!childAdded) { gitParent.Events[0].Parents.Add(gitChild); } }