diff --git a/src/main/kotlin/eu/fosil/okupamicoche/spring/dto/CreateUserDto.kt b/src/main/kotlin/eu/fosil/okupamicoche/dto/CreateUserDto.kt similarity index 92% rename from src/main/kotlin/eu/fosil/okupamicoche/spring/dto/CreateUserDto.kt rename to src/main/kotlin/eu/fosil/okupamicoche/dto/CreateUserDto.kt index 853a8e7..4dc920a 100644 --- a/src/main/kotlin/eu/fosil/okupamicoche/spring/dto/CreateUserDto.kt +++ b/src/main/kotlin/eu/fosil/okupamicoche/dto/CreateUserDto.kt @@ -1,4 +1,4 @@ -package eu.fosil.okupamicoche.spring.dto +package eu.fosil.okupamicoche.dto import eu.fosil.okupamicoche.entities.User import eu.fosil.okupamicoche.repositories.UserRepository diff --git a/src/main/kotlin/eu/fosil/okupamicoche/spring/dto/TravelDto.kt b/src/main/kotlin/eu/fosil/okupamicoche/dto/TravelDto.kt similarity index 97% rename from src/main/kotlin/eu/fosil/okupamicoche/spring/dto/TravelDto.kt rename to src/main/kotlin/eu/fosil/okupamicoche/dto/TravelDto.kt index 437ccce..a615ed2 100644 --- a/src/main/kotlin/eu/fosil/okupamicoche/spring/dto/TravelDto.kt +++ b/src/main/kotlin/eu/fosil/okupamicoche/dto/TravelDto.kt @@ -1,4 +1,4 @@ -package eu.fosil.okupamicoche.spring.dto +package eu.fosil.okupamicoche.dto import eu.fosil.okupamicoche.entities.Travel import eu.fosil.okupamicoche.entities.TravelId diff --git a/src/main/kotlin/eu/fosil/okupamicoche/dto/TravelListDto.kt b/src/main/kotlin/eu/fosil/okupamicoche/dto/TravelListDto.kt new file mode 100644 index 0000000..1930f38 --- /dev/null +++ b/src/main/kotlin/eu/fosil/okupamicoche/dto/TravelListDto.kt @@ -0,0 +1,3 @@ +package eu.fosil.okupamicoche.dto + +class TravelListDto(val totalTravels: Long, val travels: List) diff --git a/src/main/kotlin/eu/fosil/okupamicoche/spring/dto/UserDto.kt b/src/main/kotlin/eu/fosil/okupamicoche/dto/UserDto.kt similarity index 95% rename from src/main/kotlin/eu/fosil/okupamicoche/spring/dto/UserDto.kt rename to src/main/kotlin/eu/fosil/okupamicoche/dto/UserDto.kt index ac41ef3..128ffb8 100644 --- a/src/main/kotlin/eu/fosil/okupamicoche/spring/dto/UserDto.kt +++ b/src/main/kotlin/eu/fosil/okupamicoche/dto/UserDto.kt @@ -1,4 +1,4 @@ -package eu.fosil.okupamicoche.spring.dto +package eu.fosil.okupamicoche.dto import eu.fosil.okupamicoche.entities.User import eu.fosil.okupamicoche.entities.UserId diff --git a/src/main/kotlin/eu/fosil/okupamicoche/repositories/TravelRepository.kt b/src/main/kotlin/eu/fosil/okupamicoche/repositories/TravelRepository.kt index d651af4..44f20e3 100644 --- a/src/main/kotlin/eu/fosil/okupamicoche/repositories/TravelRepository.kt +++ b/src/main/kotlin/eu/fosil/okupamicoche/repositories/TravelRepository.kt @@ -10,6 +10,14 @@ import org.springframework.data.repository.query.Param interface TravelRepository : CrudRepository { @Query("SELECT t FROM Travel t WHERE t.driver.id = :userId") fun findUserTravelsAsDriver(@Param("userId") userId: UserId): List + @Query("SELECT t FROM Travel t JOIN t.travelers u WHERE u.id = :userId") fun findUserTravelsAsTraveler(@Param("userId") userId: UserId): List + + @Query("SELECT t FROM Travel t WHERE t.origin LIKE :filter") +// @Query("SELECT t FROM Travel t WHERE t.origin LIKE :filter LIMIT :pageSize") + fun findFilteredTravels( + @Param("filter") filter: String, +// @Param("pageSize") pageSize: Int + ): List } \ No newline at end of file diff --git a/src/main/kotlin/eu/fosil/okupamicoche/spring/conf/JWTSecurityConfig.kt b/src/main/kotlin/eu/fosil/okupamicoche/spring/conf/JWTSecurityConfig.kt index f3e9175..ebe8c1a 100644 --- a/src/main/kotlin/eu/fosil/okupamicoche/spring/conf/JWTSecurityConfig.kt +++ b/src/main/kotlin/eu/fosil/okupamicoche/spring/conf/JWTSecurityConfig.kt @@ -9,12 +9,13 @@ class JWTSecurityConfig : WebSecurityConfigurerAdapter() { @Throws(Exception::class) override fun configure(http: HttpSecurity) {//@formatter:off http.cors() -// .and() -// .authorizeRequests() -// .anyRequest() -// .hasAuthority("SCOPE_profile") .and() - .oauth2ResourceServer() - .jwt() + .authorizeRequests() + .anyRequest() + .permitAll() +// .hasAuthority("SCOPE_profile") +// .and() +// .oauth2ResourceServer() +// .jwt() }//@formatter:on } \ No newline at end of file diff --git a/src/main/kotlin/eu/fosil/okupamicoche/spring/controller/TravelRestController.kt b/src/main/kotlin/eu/fosil/okupamicoche/spring/controller/TravelRestController.kt index 22efb6a..1d6f70d 100644 --- a/src/main/kotlin/eu/fosil/okupamicoche/spring/controller/TravelRestController.kt +++ b/src/main/kotlin/eu/fosil/okupamicoche/spring/controller/TravelRestController.kt @@ -5,7 +5,8 @@ import eu.fosil.okupamicoche.entities.TravelId import eu.fosil.okupamicoche.entities.UserId import eu.fosil.okupamicoche.repositories.TravelRepository import eu.fosil.okupamicoche.repositories.UserRepository -import eu.fosil.okupamicoche.spring.dto.TravelDto +import eu.fosil.okupamicoche.dto.TravelDto +import eu.fosil.okupamicoche.dto.TravelListDto import eu.fosil.okupamicoche.usecases.travel.* import org.springframework.data.repository.findByIdOrNull import org.springframework.validation.annotation.Validated @@ -56,17 +57,26 @@ class TravelRestController( } @RequestMapping("/list") - fun listTravels(): ApiResponse> { + fun listTravels( + @RequestParam @Validated filter: String? + ): ApiResponse { return response { - ListTravels(travelRepository).listTravels().map { t -> TravelDto(t) } + val travels = if ((filter == null) || (filter.isEmpty())) + ListTravels(travelRepository).listTravels().map { t -> TravelDto(t) } + else + ListTravels(travelRepository).listTravels( + filter, SORT_ASCENDING, 0, 20 + ).map { t -> TravelDto(t) } + TravelListDto(travelRepository.count(), travels) } } @RequestMapping("/listusertravels") - fun listUserTravels(): ApiResponse> { + fun listUserTravels(): ApiResponse { return response { val userId = getCurrentUserId() - ListUserTravels(travelRepository).listUserTravels(userId).map { t -> TravelDto(t) } + val travels = ListUserTravels(travelRepository).listUserTravels(userId).map { t -> TravelDto(t) } + TravelListDto(travelRepository.count(), travels) } } diff --git a/src/main/kotlin/eu/fosil/okupamicoche/spring/controller/UserRestController.kt b/src/main/kotlin/eu/fosil/okupamicoche/spring/controller/UserRestController.kt index 6ceae90..5e89320 100644 --- a/src/main/kotlin/eu/fosil/okupamicoche/spring/controller/UserRestController.kt +++ b/src/main/kotlin/eu/fosil/okupamicoche/spring/controller/UserRestController.kt @@ -3,8 +3,8 @@ package eu.fosil.okupamicoche.spring.controller import eu.fosil.okupamicoche.entities.ApiResponse import eu.fosil.okupamicoche.entities.UserId import eu.fosil.okupamicoche.repositories.UserRepository -import eu.fosil.okupamicoche.spring.dto.CreateUserDto -import eu.fosil.okupamicoche.spring.dto.UserDto +import eu.fosil.okupamicoche.dto.CreateUserDto +import eu.fosil.okupamicoche.dto.UserDto import eu.fosil.okupamicoche.usecases.user.* import org.springframework.validation.annotation.Validated import org.springframework.web.bind.annotation.CrossOrigin diff --git a/src/main/kotlin/eu/fosil/okupamicoche/usecases/travel/ListTravels.kt b/src/main/kotlin/eu/fosil/okupamicoche/usecases/travel/ListTravels.kt index b96caf7..cf22796 100644 --- a/src/main/kotlin/eu/fosil/okupamicoche/usecases/travel/ListTravels.kt +++ b/src/main/kotlin/eu/fosil/okupamicoche/usecases/travel/ListTravels.kt @@ -3,8 +3,14 @@ package eu.fosil.okupamicoche.usecases.travel import eu.fosil.okupamicoche.entities.Travel import eu.fosil.okupamicoche.repositories.TravelRepository +const val SORT_ASCENDING = true +const val SORT_DESCENDING = false + class ListTravels(private val travelRepository: TravelRepository) { fun listTravels():List { return travelRepository.findAll().toList() } + fun listTravels(filter: String = "", sortDirection: Boolean, pageIndex: Int, pageSize: Int):List { + return travelRepository.findFilteredTravels(filter).toList() + } } \ No newline at end of file