public PedigreeDTO AddChild(int id, PersonInfoDTO personInfo) { User loggedUser = this.Authenticate(); if (!ModelState.IsValid) { string errorMessage = GetModelStateErrors(ModelState); throw new FamilyValidationException(errorMessage); } Person parent = this.data.People.GetFull(id, loggedUser.Id); if (parent == null) { throw new FamilyException("No person found. Maybe the person is already deleted."); } Person dbPerson = this.map.ToSinglePerson(personInfo); dbPerson.PedigreeId = parent.PedigreeId; parent.ChildrenFirst.Add(dbPerson); if (parent.Spouse != null) { parent.Spouse.ChildrenSecond.Add(dbPerson); } this.data.Save(); Pedigree pedigree = this.data.Pedigrees.GetById(loggedUser.Id, dbPerson.PedigreeId); PedigreeDTO outputPedigree = this.map.ToSinglePedigreeDTO(pedigree); return(outputPedigree); }
public PedigreeDTO Update(int id, PersonInfoDTO personInfo) { User loggedUser = this.Authenticate(); if (!ModelState.IsValid) { string errorMessage = GetModelStateErrors(ModelState); throw new FamilyValidationException(errorMessage); } Person dbPerson = this.data.People.GetById(id); if (dbPerson == null) { throw new FamilyException("No person found. Maybe the person is already deleted."); } this.map.UpdatePerson(personInfo, dbPerson); this.data.Save(); Pedigree pedigree = this.data.Pedigrees.GetById(loggedUser.Id, dbPerson.PedigreeId); PedigreeDTO outputPedigree = this.map.ToSinglePedigreeDTO(pedigree); return(outputPedigree); }
public PedigreeDTO AddParent(int id, PersonInfoDTO personInfo) { User loggedUser = this.Authenticate(); if (!ModelState.IsValid) { string errorMessage = GetModelStateErrors(ModelState); throw new FamilyValidationException(errorMessage); } Person child = this.data.People.GetFull(id, loggedUser.Id); if (child == null) { throw new FamilyException("No person found. Maybe the person is already deleted."); } if (child.FirstParent != null && child.SecondParent != null) { throw new FamilyException("You can't add a third parent to a person. Consider deleting or editing an existing one."); } Person parentToAdd = this.map.ToSinglePerson(personInfo); parentToAdd.PedigreeId = child.PedigreeId; parentToAdd.Spouse = child.FirstParent ?? child.SecondParent; if (parentToAdd.Spouse == null) { child.FirstParent = parentToAdd; } else { parentToAdd.Spouse.Spouse = parentToAdd; IEnumerable <Person> childrenFirst = parentToAdd.Spouse.ChildrenFirst.ToArray(); IEnumerable <Person> childrenSecond = parentToAdd.Spouse.ChildrenSecond.ToArray(); IEnumerable <Person> children = childrenFirst.Union(childrenSecond); foreach (Person singleChild in children) { if (singleChild.FirstParent == null) { singleChild.FirstParent = parentToAdd; } else if (singleChild.SecondParent == null) { singleChild.SecondParent = parentToAdd; } } } this.data.Save(); Pedigree pedigree = this.data.Pedigrees.GetById(loggedUser.Id, parentToAdd.PedigreeId); PedigreeDTO outputPedigree = this.map.ToSinglePedigreeDTO(pedigree); return(outputPedigree); }
public void UpdatePerson(PersonInfoDTO newPerson, Person personToUpdate) { personToUpdate.DisplayName = newPerson.DisplayName; personToUpdate.FirstName = newPerson.FirstName; personToUpdate.MiddleName = newPerson.MiddleName; personToUpdate.LastName = newPerson.LastName; personToUpdate.Nickname = newPerson.Nickname; personToUpdate.Email = newPerson.Email; personToUpdate.BirthDate = newPerson.BirthDate; personToUpdate.IsAlive = newPerson.IsAlive; personToUpdate.IsMale = newPerson.IsMale; personToUpdate.Address = newPerson.Address; personToUpdate.Profession = newPerson.Profession; }
public Person ToSinglePerson(PersonInfoDTO person) { return(new Person() { Id = 0, DisplayName = person.DisplayName, FirstName = person.FirstName, MiddleName = person.MiddleName, LastName = person.LastName, Nickname = person.Nickname, Email = person.Email, BirthDate = person.BirthDate, IsAlive = person.IsAlive, IsMale = person.IsMale, Address = person.Address, Profession = person.Profession, Pedigree = null, FirstParent = null, SecondParent = null, SpouseId = null }); }
public PedigreeDTO AddSpouse(int id, PersonInfoDTO personInfo) { User loggedUser = this.Authenticate(); if (!ModelState.IsValid) { string errorMessage = GetModelStateErrors(ModelState); throw new FamilyValidationException(errorMessage); } Person person = this.data.People.GetFull(id, loggedUser.Id); if (person == null) { throw new FamilyException("No person found. Maybe the person is already deleted."); } if (person.Spouse != null) { throw new FamilyException("The person already has a spouse. Consider deleting or editing the existing one."); } Person dbSpouse = this.map.ToSinglePerson(personInfo); dbSpouse.PedigreeId = person.PedigreeId; // Adding spouse relashionship dbSpouse.Spouse = person; person.Spouse = dbSpouse; // Adding child -> parent relashionship dbSpouse.ChildrenFirst = person.ChildrenSecond; dbSpouse.ChildrenSecond = person.ChildrenFirst; this.data.Save(); Pedigree pedigree = this.data.Pedigrees.GetById(loggedUser.Id, dbSpouse.PedigreeId); PedigreeDTO outputPedigree = this.map.ToSinglePedigreeDTO(pedigree); return(outputPedigree); }