Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
 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;
 }
Esempio n. 5
0
 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
     });
 }
Esempio n. 6
0
        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);
        }