public ActionResult <ShotResultResource> Put(SaveShotResource saveShot) { var shot = _mapper.Map <SaveShotResource, Shot>(saveShot); var shotResult = _gameService.FireShot(shot); var result = _mapper.Map <ShotResult, ShotResultResource>(shotResult); if (result.IsSuccess) { return(Ok(result)); } return(BadRequest(result)); }
public async Task <IActionResult> PostAsync([FromBody] SaveShotResource resource) { var trainer = await userService.FindByUsername(resource.Trainer.Username); var player = await userService.FindByUsername(resource.Player.Username); if (trainer == null || player == null) { return(NotFound(new { message = "Trainer or player not found", trainer, player })); } var shot = mapper.Map <SaveShotResource, Shot>(resource); shot.TrainerId = trainer.Id; shot.PlayerId = player.Id; shot.Player = null; shot.Trainer = null; var newLogin = new Login { PlayerId = player.Id, TrainerId = trainer.Id, TimeStamp = resource.TimeStamp }; var saveLoginResult = await loginService.SaveAsync(newLogin); if (!saveLoginResult.Success) { return(BadRequest(saveLoginResult)); } var saveShotResult = await shotService.SaveAsync(shot); if (!saveShotResult.Success) { return(BadRequest(saveShotResult)); } saveShotResult.value.Player = player; saveShotResult.value.Trainer = trainer; var shotResource = mapper.Map <Shot, ShotResource>(saveShotResult.value); return(CreatedAtAction(nameof(GetShotById), new { id = shot.Id }, shotResource)); }