package fr.teamflash.fencerjudgeback.restControllers import fr.teamflash.fencerjudgeback.entities.MatchState import fr.teamflash.fencerjudgeback.entities.RefereeBean import fr.teamflash.fencerjudgeback.entities.RefereeLevel import fr.teamflash.fencerjudgeback.services.RefereeService import org.springframework.http.ResponseEntity import org.springframework.web.bind.annotation.CrossOrigin import org.springframework.web.bind.annotation.DeleteMapping import org.springframework.web.bind.annotation.GetMapping import org.springframework.web.bind.annotation.PathVariable import org.springframework.web.bind.annotation.PostMapping import org.springframework.web.bind.annotation.PutMapping import org.springframework.web.bind.annotation.RequestBody import org.springframework.web.bind.annotation.RequestMapping import org.springframework.web.bind.annotation.RestController @RestController @CrossOrigin(origins = ["*"]) @RequestMapping("/referees") class RefereeRestController(private val refereeService: RefereeService) { // Lister tous les arbitres @GetMapping("/") fun getAll() : ResponseEntity> { return ResponseEntity.ok(refereeService.getAll()) } // Afficher un arbitre par id @GetMapping("/{id}") fun getById(@PathVariable id: Long): ResponseEntity { return ResponseEntity.ok(refereeService.getById(id)) } // Afficher un ou plusieurs arbitre(s) par nom @GetMapping("/name/{name}") fun getByName(@PathVariable name:String): ResponseEntity?> { return ResponseEntity.ok(refereeService.getByName(name)) } // Afficher un ou plusieurs arbitre(s) par prénom @GetMapping("/firstname/{firstName}") fun getByFirstName(@PathVariable firstName:String): ResponseEntity?> { return ResponseEntity.ok(refereeService.getByFirstName(firstName)) } // Afficher un ou plusieurs arbitre(s) par niveau @GetMapping("/level/{level}") fun getByQualification(@PathVariable level: RefereeLevel): ResponseEntity?> { return ResponseEntity.ok(refereeService.getByLevel(level)) } // Ajouter un arbitre @PostMapping("/create-referee") fun createReferee(@RequestBody referee: RefereeBean): ResponseEntity { return ResponseEntity.ok(refereeService.createReferee(referee)) } // Modifier un arbitre @PutMapping("/update-referee/{id}") fun updateReferee(@PathVariable id: Long, @RequestBody referee: RefereeBean) : ResponseEntity { return ResponseEntity.ok(refereeService.updateReferee(id, referee)) } // Supprimer un arbitre @DeleteMapping("/delete-referee/{id}") fun deleteReferee(@PathVariable id:Long): ResponseEntity { return ResponseEntity.ok(refereeService.deleteRefereeById(id)) } }