public ActionResult <WaterProfileDto> CreateWaterProfile([FromBody] WaterProfileForCreationDto waterProfile, [FromHeader(Name = ExtendedControllerBase.ACCEPT)] string mediaTypes) { var splitMediaTypes = mediaTypes.Split(','); if (!MediaTypeHeaderValue.TryParseList(splitMediaTypes, out IList <MediaTypeHeaderValue> parsedMediaTypes)) { return(BadRequest()); } var includeAdditions = true; var finalWaterProfile = _mapper.Map <Entities.WaterProfile>(waterProfile); _homeBrewRepository.AddWaterProfile(finalWaterProfile); _homeBrewRepository.Save(); var waterProfileToReturn = _mapper.Map <Models.WaterProfileDto>(finalWaterProfile); if (parsedMediaTypes.Any(pmt => pmt.SubTypeWithoutSuffix.EndsWith(this.HATEOAS, StringComparison.InvariantCultureIgnoreCase))) { var links = CreateLinksForWaterProfile(waterProfileToReturn.Id, includeAdditions); var linkedResourceToReturn = waterProfileToReturn.ShapeData(null) as IDictionary <string, object>; linkedResourceToReturn.Add(this.LINKS, links); return(CreatedAtRoute( "GetWaterProfile", new { id = linkedResourceToReturn["Id"], includeAdditions }, linkedResourceToReturn)); } return(CreatedAtRoute( "GetWaterProfile", new { id = finalWaterProfile.Id, includeAdditions }, waterProfileToReturn)); }