package com.pmu.betengine.controller; import com.pmu.betengine.model.Hippodrome; import com.pmu.betengine.service.HippodromeService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; import java.util.List; @RestController @RequestMapping("/api/v1/hippodromes") @CrossOrigin(origins = "*") @Tag(name = "Gestion des Hippodromes", description = "Endpoints relatifs aux Hippodromes") public class HippodromeController { private final HippodromeService hippodromeService; public HippodromeController(HippodromeService hippodromeService) { this.hippodromeService = hippodromeService; } @GetMapping @Operation(summary = "Lister tous les Hippodromes") public ResponseEntity> getAllHippodromes() { return ResponseEntity.ok(hippodromeService.getAllHippodromes()); } @GetMapping("/{id}") @Operation(summary = "Obtenir un Hippodrome par ID") public ResponseEntity getHippodromeById(@PathVariable Long id) { return ResponseEntity.ok(hippodromeService.getHippodromeById(id)); } @PostMapping @Operation(summary = "Créer un Hippodrome") public ResponseEntity createHippodrome(@RequestBody Hippodrome hippodrome) { return new ResponseEntity<>(hippodromeService.createHippodrome(hippodrome), HttpStatus.CREATED); } @PutMapping("/{id}") @Operation(summary = "Modifier un Hippodrome") public ResponseEntity updateHippodrome(@PathVariable Long id, @RequestBody Hippodrome hippodrome) { return ResponseEntity.ok(hippodromeService.updateHippodrome(id, hippodrome)); } @DeleteMapping("/{id}") @Operation(summary = "Supprimer un Hippodrome") public ResponseEntity deleteHippodrome(@PathVariable Long id) { hippodromeService.deleteHippodrome(id); return ResponseEntity.noContent().build(); } @GetMapping("/ville/{ville}") @Operation(summary = "Lister les Hippodromes par ville") public ResponseEntity> getHippodromesByVille(@PathVariable String ville) { return ResponseEntity.ok(hippodromeService.getHippodromesByVille(ville)); } @GetMapping("/actifs") @Operation(summary = "Lister les Hippodromes actifs") public ResponseEntity> getHippodromesActifs() { return ResponseEntity.ok(hippodromeService.getHippodromesActifs()); } @GetMapping("/search") @Operation(summary = "Rechercher des Hippodromes par nom") public ResponseEntity> searchHippodromes(@RequestParam String nom) { return ResponseEntity.ok(hippodromeService.searchHippodromesByNom(nom)); } }