package org.dicadeveloper.weplantaforest.user; import org.dicadeveloper.weplantaforest.common.support.Language; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.CrudRepository; import org.springframework.data.repository.query.Param; public interface UserRepository extends CrudRepository<User, Long> { public final static String USER_EXISTS_QUERY = "SELECT COUNT(user) FROM User user WHERE user.name = :name)"; public final static String USER_WITH_MAIL_EXISTS_QUERY = "SELECT COUNT(user) FROM User user WHERE user.mail = :mail)"; public final static String GET_USER_DETAILS_QUERY = "SELECT new org.dicadeveloper.weplantaforest.user.UserReportData(user.name, COALESCE(user.imageName, 'anonymous.jpg'),COALESCE(user.mail, ''), user.regDate, user.lastVisit, user.organizationType, COALESCE(tm.name, ''), COALESCE(user.aboutMe, ''), COALESCE(user.location, ''), COALESCE(user.organisation, ''), COALESCE(user.homepage, ''), user.lang, user.newsletter)" + " FROM User user LEFT JOIN user.team tm WHERE user.name = :name"; public final static String GET_USER_LANGUAGE = "SELECT user.lang FROM User user WHERE user.name = :name"; public final static String GET_TEAM_MEMBER_QUERY = "SELECT user FROM User user WHERE user.team.name = :teamName"; public final static String COUNT_ANONYM_USER_QUERY = "SELECT count(user) FROM User user WHERE user.name like \'Anonymous%\'"; @Query public User findByName(@Param("name") String name); @Query(value = USER_EXISTS_QUERY) public long userExists(@Param("name") String name); @Query(value = USER_WITH_MAIL_EXISTS_QUERY) public long userWithMailExists(@Param("mail") String mail); @Query(value = GET_USER_DETAILS_QUERY) public UserReportData getUserDetails(@Param("name") String name); @Query(value = GET_USER_LANGUAGE) public Language getUserLanguage(@Param("name") String name); @Query(value = GET_TEAM_MEMBER_QUERY) public Page<User> getTeamMember(@Param("teamName") String teamName, Pageable page); @Query(value = COUNT_ANONYM_USER_QUERY) public long countAnonymUser(); }