using BowlingEF.Entities; using BowlingService.Interfaces; using DTOs; using Microsoft.AspNetCore.Mvc; namespace BowlingApi.Controllers; [ApiController] [Route("api/[controller]")] public class JoueurController:Controller { private IJoueurService _joueurService; public JoueurController(IJoueurService joueurService) { _joueurService = joueurService; } /// /// Get all Players /// /// la liste des Joueurs /// Retourne la liste des joueurs /// Si la liste est vide /// Si une erreur est survenue [HttpGet] [ProducesResponseType(typeof(string), StatusCodes.Status500InternalServerError)] [ProducesResponseType(typeof(string), StatusCodes.Status404NotFound)] [ProducesResponseType(typeof(IEnumerable), StatusCodes.Status200OK)] public async Task Get() { try { var result = await _joueurService.GetAll(); if (result == null) { return NotFound(); } return Ok(result); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); throw; } } /// /// Get a player by name /// GET: api/Joueur/Djon /// /// /// [HttpGet("{name}")] public async Task Get(string name) { try { if(String.IsNullOrWhiteSpace(name)) return BadRequest("Le nom du joueur est obligatoire"); var result = _joueurService.GetDataWithName(name).Result; if (result == null) { return NotFound(); } return Ok(result); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); throw; } } // POST: api/Joueur [HttpPost] public async Task> Post([FromBody] JoueurDTO joueur) { try { if (joueur== null) { return BadRequest("Le joueur est obligatoire"); } var createdJoueur = _joueurService.Add(joueur).Result; return CreatedAtAction(nameof(Get), new { id = createdJoueur.Id }, createdJoueur); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, e.Message); throw; } } [HttpPut("{id}")] public async Task> Put(long id,[FromBody] JoueurDTO joueur) { try { if(joueur == null) return BadRequest("Le joueur est obligatoire"); var updateJoueur = _joueurService.Update(id,joueur); if (updateJoueur.Result == false) { return NotFound(); } return Ok(joueur); } catch (Exception e) { StatusCode(StatusCodes.Status500InternalServerError, e.Message); throw; } } }