package com.megatim.fdxconsultation.dao.impl.administration;
|
|
import javax.persistence.EntityManager;
|
import javax.persistence.PersistenceContext;
|
|
import com.bekosoftware.genericdaolayer.dao.impl.AbstractGenericDAO;
|
import com.bekosoftware.genericdaolayer.dao.tools.RestrictionsContainer;
|
import com.megatim.commons.tools.CommonsTools;
|
import com.megatim.fdxcommons.model.enumeration.TypeOperation;
|
import com.megatim.fdxconsultation.dao.ifaces.administration.UserDAO;
|
import com.megatim.fdxconsultation.model.administration.Role;
|
import com.megatim.fdxconsultation.model.administration.User;
|
import java.util.ArrayList;
|
import java.util.List;
|
import java.util.Optional;
|
import javax.enterprise.context.Dependent;
|
|
@Dependent
|
public class UserDAOImpl extends AbstractGenericDAO<User, Long> implements UserDAO {
|
|
@PersistenceContext(unitName = "fdxConsultationPersistenceUnit")
|
protected EntityManager em;
|
|
public UserDAOImpl() {
|
}
|
|
@Override
|
public EntityManager getEntityManager() {
|
return em;
|
}
|
|
@Override
|
public Class<User> getManagedEntityClass() {
|
return (User.class);
|
}
|
|
@Override
|
public User getById(Long id) {
|
Optional<User> optional = em.createQuery("SELECT u from User u"
|
+ " LEFT JOIN FETCH u.typeFichiers "
|
+ " WHERE u.id = :id")
|
.setParameter("id", id)
|
.getResultList()
|
.stream()
|
.findFirst();;
|
return optional.isPresent() ? optional.get() : null;
|
}
|
|
@Override
|
public User getCurrentUser() {
|
RestrictionsContainer requeteur = RestrictionsContainer.newInstance();
|
requeteur.addEq("typeOperation", TypeOperation.AJOUTER);
|
return filter(requeteur.getPredicats(), null, null, 0, 1).stream().findAny().orElse(null);
|
}
|
|
@Override
|
public User recuperUtilisateur(String username, String motDePasse) {
|
//Variables
|
List<User> resutlats = null;
|
User user = null;
|
boolean isCorrect = false;
|
RestrictionsContainer requeteur = RestrictionsContainer.newInstance();
|
|
//On construit la requete
|
requeteur.addEq("userName", username);
|
requeteur.addEq("typeOperation", TypeOperation.AJOUTER);
|
|
//On execute la requte
|
resutlats = filter(requeteur.getPredicats(), null, null, 0, 1);
|
|
//Si liste non vide
|
if (resutlats != null && !resutlats.isEmpty()) {
|
|
try {
|
|
//On recupere le user
|
user = resutlats.get(0);
|
|
//On verifie si le mot de passe est correct
|
isCorrect = CommonsTools.validerMotDePasse(motDePasse, user.getPwd());
|
|
//Si incorrect
|
if (!isCorrect) {
|
|
//Utilisateur non trouvé
|
user = null;
|
|
}
|
|
} catch (Exception ex) {
|
|
//On affiche l'erreur
|
ex.printStackTrace();
|
|
}
|
|
}
|
|
return user;
|
}
|
|
@Override
|
public User recuperUtilisateur(String username) {
|
Optional<User> optional = em.createQuery("SELECT u from User u"
|
+ " LEFT JOIN FETCH u.typeFichiers "
|
+ " LEFT JOIN FETCH u.participants "
|
+ " WHERE u.userName = :username AND u.typeOperation = :typeOperation")
|
.setParameter("username", username)
|
.setParameter("typeOperation", TypeOperation.AJOUTER)
|
.getResultList()
|
.stream()
|
.findFirst();
|
return optional.isPresent() ? optional.get() : null;
|
}
|
|
@Override
|
public List<User> obtenirListeUtilisateursRole(Role role) {
|
|
//variables
|
List<User> utilisateurs = null;
|
RestrictionsContainer requeteur = RestrictionsContainer.newInstance();
|
|
//On construit la requete
|
requeteur.addEq("role", role);
|
requeteur.addEq("typeOperation", TypeOperation.AJOUTER);
|
|
//On execute la requte
|
utilisateurs = filter(requeteur.getPredicats(), null, null, 0, -1);
|
|
//Si liste null
|
if (utilisateurs == null) {
|
|
//On crée une instance vide
|
utilisateurs = new ArrayList<User>();
|
|
}
|
|
return utilisateurs;
|
}
|
}
|