public async Task <ActionResult> GetFamilyByName(string name, [FromQuery] bool includeLinks = true, [FromQuery] bool includeMammals = false)
        {
            try
            {
                var result = await _familyRepository.GetFamilyByName(name, includeMammals);

                if (result == null)
                {
                    throw new System.Exception($"Cant find Family with name: {name}");
                }

                var mappedResult = _mapper.Map <FamilyDTO>(result);

                if (includeLinks)
                {
                    mappedResult.Mammals = mappedResult.Mammals.Select(m => HateoasMainLinks(m)).ToList();
                    return(Ok(HateoasMainLinks(mappedResult)));
                }

                return(Ok(mappedResult));
            }
            catch (TimeoutException e)
            {
                return(this.StatusCode(StatusCodes.Status408RequestTimeout, $"Request timeout: {e.Message}"));
            }
            catch (Exception e)
            {
                return(this.StatusCode(StatusCodes.Status500InternalServerError, $"Database Failure: {e.Message}"));
            }
        }