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