Trabajo en controllers
This commit is contained in:
1 parent
732c3b3e8c
commit
58d8d431eb
5 files changed
+45
-15
No files matched your search
@@ -6,7 +6,7 @@ typealias TravelId = Long
|
||||
|
||||
@Entity
|
||||
class Travel(
|
||||
@Id @GeneratedValue var id: TravelId,
|
||||
@Id @GeneratedValue var id: TravelId? = null,
|
||||
@ManyToOne
|
||||
var driver: User,
|
||||
@ManyToMany
|
||||
|
||||
@@ -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()
|
||||
}
|
||||
}
|
||||
@@ -9,7 +9,7 @@ import org.springframework.data.repository.findByIdOrNull
|
||||
|
||||
class TravelDto(
|
||||
// Los campos deben ser públicos para que aparezcan en el JSON
|
||||
val id: TravelId,
|
||||
val id: TravelId? = null,
|
||||
val driverId: UserId,
|
||||
val travelersId: List<UserId>,
|
||||
val departureDate: String,
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
package eu.fosil.okupamicoche.usecases.travel
|
||||
|
||||
import eu.fosil.okupamicoche.entities.TravelId
|
||||
import eu.fosil.okupamicoche.repositories.TravelRepository
|
||||
|
||||
class CancelTravel(private val travelRepository: TravelRepository) {
|
||||
fun cancelTravel(id: TravelId) {
|
||||
// notificar viajeros
|
||||
}
|
||||
}
|
||||
@@ -5,6 +5,7 @@ import eu.fosil.okupamicoche.repositories.TravelRepository
|
||||
|
||||
class DeleteTravel(private val travelRepository: TravelRepository) {
|
||||
fun deleteTravel(id: TravelId) {
|
||||
CancelTravel(travelRepository).cancelTravel(id)
|
||||
travelRepository.deleteById(id)
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user