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();
}