public async Task <PersonDetails> GetDetails(Roles roles, int id)
        {
            var personDb = await _personRepository.FindPerson(id);

            var family = await PersonUtils.FindSiblings(personDb, _personRepository);

            family.AddRange(personDb.Relationships);
            var familyDetails = new List <Family>();

            foreach (var familyMember in family.OrderBy(f => f.Relationship))
            {
                var familyMemberDetails = await _personRepository.FindPerson(familyMember.PersonId);

                if (roles != Roles.General || familyMemberDetails.Dead)
                {
                    familyDetails.Add(new Family
                    {
                        Id           = familyMember.PersonId,
                        Name         = familyMemberDetails.PreferredName,
                        Relationship = familyMember.Relationship.ToString()
                    });
                }
            }

            var personDetails = _mapper.Map <PersonDetails>(personDb);

            if (string.IsNullOrEmpty(personDetails.Portrait))
            {
                var gender = (Gender)Enum.Parse(typeof(Gender), personDb.Gender);
                personDetails.Portrait = gender == Gender.Male ? "Male.png" : "Female.png";
            }

            personDetails.Family = familyDetails;
            var images = await _imagesRepository.GetImagesForPerson(id);

            personDetails.Images = new List <ImageDetails>();

            foreach (var image in images)
            {
                var peopleInImage = await _imagesRepository.GetPeopleInImage(image.Id);

                string caption = peopleInImage.Count > 0 ? "People: \n" : "";

                foreach (var personInImage in peopleInImage)
                {
                    var personDbImage = await _personRepository.FindPerson(personInImage);

                    caption += $"\t{personDbImage.PreferredName}\n";
                }

                if (!string.IsNullOrEmpty(image.Description))
                {
                    caption += $"Description: {image.Description}\n";
                }

                if (!string.IsNullOrEmpty(image.Location))
                {
                    caption += $"Location: {image.Location}\n";
                }

                personDetails.Images.Add(new ImageDetails {
                    Id = image.Id, FileName = image.FileName, Orientation = image.Orientation, Caption = caption
                });
            }

            return(personDetails);
        }