public async Task UpdatePerson(PersonDetailsUpdate personDetails)
        {
            var personDd = await _personRepository.FindPerson(personDetails.Id);

            _mapper.Map(personDetails, personDd);
            await CreateRelationships(personDetails);

            await _personRepository.UpdatePerson(personDd);
        }
        public async Task <int> AddPerson(PersonDetailsUpdate personDetails)
        {
            var personDb = _mapper.Map <PersonDb>(personDetails);
            var personId = await _personRepository.AddPerson(personDb);

            personDetails.Id = personId;
            await CreateRelationships(personDetails);

            return(personId);
        }
예제 #3
0
        public async Task <ActionResult <PersonDetails> > UpdatePerson([FromBody] PersonDetailsUpdate personDetails, [FromHeader] string authorization)
        {
            if (string.IsNullOrEmpty(authorization))
            {
                return(Unauthorized());
            }

            var auth          = FirebaseAuth.DefaultInstance;
            var fireBaseToken = await auth.VerifyIdTokenAsync(authorization);

            if (fireBaseToken.Claims.ContainsKey("edit") && (bool)fireBaseToken.Claims["edit"])
            {
                await _familyRepository.UpdatePerson(personDetails);

                return(Ok(await _familyRepository.GetDetails(Roles.Admin, personDetails.Id)));
            }

            return(Unauthorized());
        }
        private async Task CreateRelationships(PersonDetailsUpdate personDetails)
        {
            if (personDetails.Id != 0)
            {
                await _personRepository.RemoveRelationships(personDetails.Id);
            }

            foreach (var parent in personDetails.Parents)
            {
                var parentDetails = await _personRepository.FindPerson(parent.Id);

                await _personRepository.AddRelationship(new RelationshipDb
                {
                    Person1      = personDetails.Id,
                    RelationShip = parentDetails.Gender == Gender.Female.ToString()
                        ? Relationship.Mother.ToString()
                        : Relationship.Father.ToString(),
                    Person2 = parent.Id
                });

                await _personRepository.AddRelationship(new RelationshipDb()
                {
                    Person1      = parent.Id,
                    RelationShip = personDetails.Gender == Gender.Female.ToString()
                        ? Relationship.Daughter.ToString()
                        : Relationship.Son.ToString(),
                    Person2 = personDetails.Id
                });
            }

            foreach (var spouse in personDetails.Spouses)
            {
                var spouseDetails = await _personRepository.FindPerson(spouse.Id);

                await _personRepository.AddRelationship(new RelationshipDb
                {
                    Person1      = personDetails.Id,
                    RelationShip = spouseDetails.Gender == Gender.Female.ToString()
                        ? Relationship.Wife.ToString()
                        : Relationship.Husband.ToString(),
                    Person2 = spouse.Id
                });

                await _personRepository.AddRelationship(new RelationshipDb()
                {
                    Person1      = spouse.Id,
                    RelationShip = personDetails.Gender == Gender.Female.ToString()
                        ? Relationship.Wife.ToString()
                        : Relationship.Husband.ToString(),
                    Person2 = personDetails.Id
                });
            }

            foreach (var child in personDetails.Children)
            {
                var childDetails = await _personRepository.FindPerson(child.Id);

                await _personRepository.AddRelationship(new RelationshipDb()
                {
                    Person1      = personDetails.Id,
                    RelationShip = childDetails.Gender == Gender.Female.ToString()
                        ? Relationship.Daughter.ToString()
                        : Relationship.Son.ToString(),
                    Person2 = child.Id
                });

                await _personRepository.AddRelationship(new RelationshipDb
                {
                    Person1      = child.Id,
                    RelationShip = personDetails.Gender == Gender.Female.ToString()
                        ? Relationship.Mother.ToString()
                        : Relationship.Father.ToString(),
                    Person2 = personDetails.Id
                });
            }
        }