package de.rwth.idsg.bikeman.repository; import de.rwth.idsg.bikeman.domain.CardAccount; import de.rwth.idsg.bikeman.domain.OperationState; import de.rwth.idsg.bikeman.domain.User; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Modifying; import org.springframework.data.jpa.repository.Query; import org.springframework.transaction.annotation.Transactional; import java.util.List; import java.util.Optional; /** * Created by swam on 16/10/14. */ public interface CardAccountRepository extends JpaRepository<CardAccount, Long> { @Query("select c from CardAccount c, MajorCustomer mc where c.cardId = ?1 and c.user = mc and mc.name = ?2") Optional<CardAccount> findByCardIdAndMajorCustomerName(String cardId, String majorName); CardAccount findByCardIdAndCardPin(String cardId, String cardPin); List<CardAccount> findByUser(User user); CardAccount findByCardId(String cardId); @Query("select c from CardAccount c where UPPER(c.user.login) = UPPER(?1)") List<CardAccount> findByUserLogin(String login); @Query("select c from CardAccount c where c.activationKey = ?1") CardAccount findByActivationKey(String activationKey); @Transactional @Modifying(clearAutomatically = true) @Query("update CardAccount c set c.operationState = ?1 where c.cardId = ?2") int setOperationStateForCardId(OperationState operationState, String cardId); @Transactional @Modifying(clearAutomatically = true) @Query("update CardAccount c set c.authenticationTrialCount = 0 where c.cardId = ?1") void resetAuthenticationTrialCount(String cardId); }