package DAO;

import jakarta.persistence.EntityTransaction;
import jakarta.persistence.Query;
import metier.Session;
import metier.Utilisateur;

public class UtilisateurDAO extends AbstractJpaDao<Integer, Utilisateur> {
    public UtilisateurDAO() {
        super();
        this.setClass(Utilisateur.class);
    }

    public Utilisateur findByEmail(String email){
        EntityTransaction t=em.getTransaction();
        t.begin();
        Query query=em.createQuery("select u from Utilisateur u where u.email=:email");
        query.setParameter("email",email);
        Utilisateur u=(Utilisateur)query.getSingleResult();
        t.commit();
        return u;
    }

    public void addToSession(int sessionId, int userId) {
        EntityTransaction t = em.getTransaction();
        t.begin();
        Session s = em.find(Session.class, sessionId);
        Utilisateur u = em.find(Utilisateur.class, userId);

        //FAUT AJOUTER OWNING SIDE ( Ici u --> s)
        u.getSession().add(s);
        //Jsp il faut birectionnelle ou pas?
        s.getUtilisateurs().add(u);
        em.merge(u);
        t.commit();
    }
}
