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}")); } }