package de.rwth.idsg.bikeman.psinterface.repository; import de.rwth.idsg.bikeman.domain.Reservation; import de.rwth.idsg.bikeman.domain.ReservationState; import org.joda.time.LocalDateTime; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Modifying; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; import java.util.List; /** * @author Sevket Goekay <goekay@dbis.rwth-aachen.de> * @since 16.06.2015 */ public interface PsiReservationRepository extends JpaRepository<Reservation, String> { @Query("SELECT r FROM Reservation r " + "WHERE r.cardAccount.cardAccountId = :cardAccountId " + "AND r.pedelec.pedelecId = :pedelecId " + "AND r.startDateTime <= :startTime " + "AND :startTime <= r.endDateTime " + "AND r.state = de.rwth.idsg.bikeman.domain.ReservationState.CREATED") List<Reservation> find(@Param("cardAccountId") long cardAccountId, @Param("pedelecId") long pedelecId, @Param("startTime") LocalDateTime startTime); @Modifying @Query("UPDATE Reservation r SET r.state = :state WHERE r = :reservation") void updateState(@Param("reservation") Reservation reservation, @Param("state") ReservationState state); }