public IActionResult CreateScoreForUser(string userId, [FromBody] ScoreCreateModel score) { if (score == null) { return(BadRequest()); } if (!ModelState.IsValid) { return(new UnprocessableEntityObjectResult(ModelState)); } if (userId == "self") { userId = _memoryRepository.GetUserId(this.User); } var userEntity = _memoryRepository.GetUser(userId).Result; if (userEntity == null) { return(NotFound()); } var scoreEntity = _mapper.Map <GameScore>(score); _memoryRepository.CreateScoreForUser(userEntity, scoreEntity); if (!_memoryRepository.Save()) { throw new Exception($"Creating a score for user {userEntity.Id} failed on save."); } var scoreModel = _mapper.Map <ScoreModel>(scoreEntity); return(CreatedAtRoute("GetScoreForUser", new { userId = userId, id = scoreModel.Id }, scoreModel)); }