|
|
|
|
@@ -2,6 +2,7 @@ package eu.fosil.okupamicoche.spring.controller
|
|
|
|
|
|
|
|
|
|
import eu.fosil.okupamicoche.entities.TravelId
|
|
|
|
|
import eu.fosil.okupamicoche.entities.UserId
|
|
|
|
|
import eu.fosil.okupamicoche.entities.UserIdNotFoundException
|
|
|
|
|
import eu.fosil.okupamicoche.repositories.TravelRepository
|
|
|
|
|
import eu.fosil.okupamicoche.repositories.UserRepository
|
|
|
|
|
import eu.fosil.okupamicoche.spring.dto.TravelDto
|
|
|
|
|
@@ -10,8 +11,9 @@ import org.springframework.data.repository.findByIdOrNull
|
|
|
|
|
import org.springframework.security.core.context.SecurityContextHolder
|
|
|
|
|
import org.springframework.security.oauth2.jwt.Jwt
|
|
|
|
|
import org.springframework.validation.annotation.Validated
|
|
|
|
|
import org.springframework.web.bind.annotation.RequestBody
|
|
|
|
|
import org.springframework.web.bind.annotation.ModelAttribute
|
|
|
|
|
import org.springframework.web.bind.annotation.RequestMapping
|
|
|
|
|
import org.springframework.web.bind.annotation.RequestParam
|
|
|
|
|
import org.springframework.web.bind.annotation.RestController
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@@ -23,23 +25,28 @@ class TravelRestController(
|
|
|
|
|
) {
|
|
|
|
|
|
|
|
|
|
@RequestMapping("/create")
|
|
|
|
|
fun createTravel(@RequestBody @Validated travelDto: TravelDto) {
|
|
|
|
|
CreateTravel(travelRepository).createTravel(travelDto.toTravel(userRepository))
|
|
|
|
|
fun createTravel(@ModelAttribute @Validated travel: TravelDto) {
|
|
|
|
|
CreateTravel(travelRepository).createTravel(travel.toTravel(userRepository))
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@RequestMapping("/get")
|
|
|
|
|
fun getTravel(@RequestBody @Validated travelId: TravelId): TravelDto? {
|
|
|
|
|
fun getTravel(@RequestParam @Validated travelId: TravelId): TravelDto? {
|
|
|
|
|
return travelRepository.findByIdOrNull(travelId)?.let { TravelDto(it) }
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@RequestMapping("/cancel")
|
|
|
|
|
fun cancelTravel(@RequestParam @Validated travelId: TravelId) {
|
|
|
|
|
CancelTravel(travelRepository).cancelTravel(travelId)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@RequestMapping("/delete")
|
|
|
|
|
fun deleteTravel(@RequestBody @Validated id: TravelId) {
|
|
|
|
|
DeleteTravel(travelRepository).deleteTravel(id)
|
|
|
|
|
fun deleteTravel(@RequestParam @Validated travelId: TravelId) {
|
|
|
|
|
DeleteTravel(travelRepository).deleteTravel(travelId)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@RequestMapping("/edit")
|
|
|
|
|
fun editTravel(@RequestBody @Validated travelDto: TravelDto) {
|
|
|
|
|
EditTravel(travelRepository).editTravel(travelDto.toTravel(userRepository))
|
|
|
|
|
fun editTravel(@RequestParam @Validated travel: TravelDto) {
|
|
|
|
|
EditTravel(travelRepository).editTravel(travel.toTravel(userRepository))
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@RequestMapping("/list")
|
|
|
|
|
@@ -49,17 +56,29 @@ class TravelRestController(
|
|
|
|
|
|
|
|
|
|
@RequestMapping("/listusertravels")
|
|
|
|
|
fun listUserTravels(): List<TravelDto> {
|
|
|
|
|
val userId = getCurrentUserId() ?: throw Exception()
|
|
|
|
|
val userId = getCurrentUserId()
|
|
|
|
|
return ListUserTravels(travelRepository).listUserTravels(userId).map { t -> TravelDto(t) }
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@RequestMapping("/join")
|
|
|
|
|
fun join(@RequestParam @Validated travelId: TravelId) {
|
|
|
|
|
val userId = getCurrentUserId()
|
|
|
|
|
AddTraveler(userRepository, travelRepository).addTraveler(travelId, userId)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@RequestMapping("/leave")
|
|
|
|
|
fun leave(@RequestParam @Validated travelId: TravelId) {
|
|
|
|
|
val userId = getCurrentUserId()
|
|
|
|
|
RemoveTraveler(userRepository, travelRepository).removeTraveler(travelId, userId)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@RequestMapping("/addtraveler")
|
|
|
|
|
fun addTraveler(@RequestBody @Validated travelId: TravelId, @RequestBody @Validated userId: UserId) {
|
|
|
|
|
fun addTraveler(@RequestParam @Validated travelId: TravelId, @RequestParam @Validated userId: UserId) {
|
|
|
|
|
AddTraveler(userRepository, travelRepository).addTraveler(travelId, userId)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@RequestMapping("/removetraveler")
|
|
|
|
|
fun removeTraveler(@RequestBody @Validated travelId: TravelId, @RequestBody @Validated userId: UserId) {
|
|
|
|
|
fun removeTraveler(@RequestParam @Validated travelId: TravelId, @RequestParam @Validated userId: UserId) {
|
|
|
|
|
RemoveTraveler(userRepository, travelRepository).removeTraveler(travelId, userId)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@@ -67,12 +86,12 @@ class TravelRestController(
|
|
|
|
|
/**
|
|
|
|
|
* Devuelve el id del usuario actual.
|
|
|
|
|
*/
|
|
|
|
|
private fun getCurrentUserId(): String? {
|
|
|
|
|
private fun getCurrentUserId(): String {
|
|
|
|
|
val authentication = SecurityContextHolder.getContext().authentication
|
|
|
|
|
if (authentication.principal is Jwt) {
|
|
|
|
|
val jwt = authentication.principal as Jwt
|
|
|
|
|
return jwt.claims["sub"].toString()
|
|
|
|
|
}
|
|
|
|
|
return null
|
|
|
|
|
throw UserIdNotFoundException()
|
|
|
|
|
}
|
|
|
|
|
}
|