MatchController.kt
- package delta.codecharacter.server.match
- import delta.codecharacter.core.MatchApi
- import delta.codecharacter.dtos.CreateMatchRequestDto
- import delta.codecharacter.dtos.MatchDto
- import delta.codecharacter.dtos.MatchModeDto
- import delta.codecharacter.server.exception.CustomException
- import delta.codecharacter.server.user.UserEntity
- import org.springframework.beans.factory.annotation.Autowired
- import org.springframework.http.HttpStatus
- import org.springframework.http.ResponseEntity
- import org.springframework.security.access.annotation.Secured
- import org.springframework.security.core.context.SecurityContextHolder
- import org.springframework.web.bind.annotation.RestController
- @RestController
- class MatchController(@Autowired private val matchService: MatchService) : MatchApi {
- @Secured("ROLE_USER")
- override fun createMatch(createMatchRequestDto: CreateMatchRequestDto): ResponseEntity<Unit> {
- if (createMatchRequestDto.mode == MatchModeDto.AUTO) {
- throw CustomException(HttpStatus.BAD_REQUEST, "Users cannot create auto match")
- }
- val user = SecurityContextHolder.getContext().authentication.principal as UserEntity
- matchService.createMatch(user.id, createMatchRequestDto)
- return ResponseEntity.ok().build()
- }
- @Secured("ROLE_USER")
- override fun getTopMatches(): ResponseEntity<List<MatchDto>> {
- return ResponseEntity.ok(matchService.getTopMatches())
- }
- @Secured("ROLE_USER")
- override fun getUserMatches(): ResponseEntity<List<MatchDto>> {
- val user = SecurityContextHolder.getContext().authentication.principal as UserEntity
- return ResponseEntity.ok(matchService.getUserMatches(user.id))
- }
- }