Beispiel #1
0
        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));
        }
Beispiel #2
0
        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);
        }
Beispiel #3
0
        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);
            }
        }