/*
* GestionRH
*
* Copyright (C) Maisel Team
*
* GestionRH is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published
* by the Free Software Foundation; either version 2 of the License,
* or (at your option) any later version.
*
* GestionRH is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Cobertura; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
* USA
*/
package metier;
import java.util.Collection;
import java.util.Date;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Query;
import metier.core.Candidat;
import metier.core.Offre;
import org.hibernate.Criteria;
import systeme.JpaUtils;
/**
* La classe GesCandiadt permet la gestion des des candidats dans le système
*
* @version 1.0
* @author Yohann lepage
* @author Alexandre Besnard
* @author Jonathan Morfin
* @author Quentin Rousseau
*/
public class GesCandidat implements ICandidat {
private EntityManagerFactory emf;
private EntityManager em = entityManager();
public static final EntityManager entityManager() {
return JpaUtils.get().createEntityManager();
}
/*
* Constructeur par défaut
*/
public GesCandidat() {
}
/*
* creerCandidat permet la création d'un candidat
* @param prenom
* le prenom du candidat
* @param nom
* le nom du candidat
* @param cv
* le cv du candidat
* @param ldm
* la lettre de motivation du candidat
* @return le candidat créé
*
*/
@Override
public Candidat creerCandidat(String prenom, String nom, String cv, String ldm) {
Candidat candidat = new Candidat(prenom, nom, cv, ldm);
em.getTransaction().begin();
em.persist(candidat);
em.getTransaction().commit();
return candidat;
}
@Override
public Candidat creerCandidat(String prenom, String nom) {
Candidat candidat = new Candidat(prenom, nom);
em.getTransaction().begin();
em.persist(candidat);
em.getTransaction().commit();
return candidat;
}
/*
* lireCandidat permet de renvoyer un candidat à partir de son id
* @param idCandidat
* l'id du candidat
* @return le candidat
*/
@Override
public Candidat lireCandidat(Long idCandidat) {
return em.find(Candidat.class, idCandidat);
}
@Override
public Candidat lireCandidat(String nom, String prenom)
{
Query q = em.createQuery("FROM Candidat WHERE nom like '" + nom + "' OR prenom like '" + prenom +"'");
return (Candidat) q.getSingleResult();
}
/*
* majCandidat permet de mettre à jour un candidat
* @param candidat
* le candidat que l'onsouhaite mettre à jour
* @return le candidat mis à jour
*/
@Override
public Boolean majCandidat(Candidat candidat) {
em.getTransaction().begin();
Candidat merge = em.merge(candidat);
em.getTransaction().commit();
if (merge == null) {
return false;
} else {
return true;
}
}
/*
* supprimerCandidat permet la suppression d'un candidat
* @param candidat
* le candidat à supprimer
* @return 1 si le candidat est supprimé
*/
@Override
public Boolean suppprimerCandidat(Candidat candidat) {
em.getTransaction().begin();
em.remove(candidat);
em.getTransaction().commit();
return true;
}
/*
* creerConvocation permet de creer une convocation à l'attention du candidat
* @param date
* la date de la convocation
* @param candidat
* le candidat à convoquer
* @return la convocation créée
*/
@Override
public metier.Convocation creerConvocation(Date date, Candidat candidat) {
Convocation c = new Convocation(date, candidat);
em.getTransaction().begin();
em.persist(c);
em.getTransaction().commit();
return em.find(Convocation.class, c.getId());
}
/*
* supprimerConvocation permet la suppression d'une convocation
* @param convocation
* la convocation à supprimer
* @return 1 si la convocation à été supprimée
*/
@Override
public Boolean supprimerConvocation(Convocation convocation) {
em.getTransaction().begin();
em.remove(convocation);
em.getTransaction().commit();
return true;
}
/*
* creerDossier permet la creation d'un dossier
* @param etat
* l'état du dossier
* @param candidat
* le candidat concerné
* @param offre
* l'offre concernée
* @return le dossier créé
*/
@Override
public Dossier creerDossier(String etat, Candidat candidat, Offre offre) {
Dossier d = new Dossier(etat, candidat, offre);
em.getTransaction().begin();
em.persist(d);
em.getTransaction().commit();
return em.find(Dossier.class, d.getId());
}
/*
* lireDossier permet de lire un dossier à partir de son id
* @param idDossier
* l'id du dossier à lire
* @return le dossier lu
*/
@Override
public Dossier lireDossier(Long idDossier) {
return em.find(Dossier.class, idDossier);
}
/*
* majDossier permet de mettre à jour un dossier dans le systeme
* @param dossier
* le dossier à mettre à jour
* @return
* le dossier mis à jour
*/
@Override
public Boolean majDossier(Dossier dossier) {
em.getTransaction().begin();
Dossier merge = em.merge(dossier);
em.getTransaction().commit();
if (merge == null) {
return false;
} else {
return true;
}
}
/*
* majDossier permet de mettre à jour un dossier dans le systeme
* @param dossier
* le dossier à mettre à jour
* @return
* le dossier mis à jour
*/
@Override
public Boolean majDossier(Long id, String eta) {
em.getTransaction().begin();
Dossier dossier = lireDossier(id);
dossier.setEtat(eta);
em.getTransaction().commit();
if (dossier == null) {
return false;
} else {
return true;
}
}
/*
* supprimerDossier permet la suppression d'un dossier
* @param dossier
* le dossier à supprimer
* @return 1 si le dossier est supprimé
*/
@Override
public Boolean supprimerDossier(Dossier dossier) {
em.getTransaction().begin();
em.remove(dossier);
em.getTransaction().commit();
return true;
}
/*
* majConvocation permet de mettre à jour une convocation
* @param convocation
* la convocation à mettre à jour
* @return la convocation mise à jour
*/
@Override
public Boolean majConvocation(Convocation convocation) {
em.getTransaction().begin();
Convocation merge = em.merge(convocation);
em.getTransaction().commit();
if (merge == null) {
return false;
} else {
return true;
}
}
/*
* listerCandidats permet de lister les candidats du système
* @return la collection de candidats
*/
@Override
public Collection<Candidat> listerCandidats() {
Query query = em.createQuery("SELECT e FROM Candidat e");
return (Collection<Candidat>) query.getResultList();
}
/*
* listerDossier permet de lister les dossiers du système
* @return la collecction de dossiers
*/
@Override
public Collection<Dossier> listerDossiers() {
Query query = em.createQuery("SELECT e FROM Dossier e ORDER BY e.id");
return (Collection<Dossier>) query.getResultList();
}
@Override
public Convocation lireConvocation(Long idConvocation) {
return em.find(Convocation.class, idConvocation);
}
@Override
public Collection<Convocation> listerConvocations() {
Query query = em.createQuery("SELECT e FROM Convocation e");
System.out.println("gesCandiatlisterConvocation");
//System.out.print(query.getResultList());
return (Collection<Convocation>) query.getResultList();
}
@Override
public Boolean majConvocation(Long id, String validation) {
em.getTransaction().begin();
Convocation convocation = lireConvocation(id);
if (validation.equals("accepter")) {
convocation.setValidation(Boolean.TRUE);
} else {
convocation.setValidation(Boolean.FALSE);
}
em.getTransaction().commit();
if (convocation == null) {
return false;
} else {
return true;
}
}
@Override
public Boolean majConvocation(Long id, String validation, String type) {
em.getTransaction().begin();
Convocation convocation = lireConvocation(id);
if (convocation == null) {
return false;
}
//System.out.print(convocation);
if (validation.equals("accepter")) {
convocation.setValidation(Boolean.TRUE);
} else {
convocation.setValidation(Boolean.FALSE);
}
convocation.setType(type);
em.getTransaction().commit();
return true;
}
@Override
public Boolean majConvocation(Long id, String validation, String type, Date date) {
em.getTransaction().begin();
Convocation convocation = lireConvocation(id+1);
// if (convocation == null) {
// return false;
// }
convocation.setType(type);
convocation.setDatec(date);
//convocation.setValidation(Boolean.FALSE);
if (validation.equals("accepter")) {
convocation.setValidation(Boolean.TRUE);
} else {
convocation.setValidation(Boolean.FALSE);
}
Convocation merge = em.merge(convocation);
System.out.print("####\n date : "+merge.getDatec());
em.getTransaction().commit();
return true;
}
}