Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found
Select Git revision

Target

Select target project
  • m23cheri/jobmgmnt
1 result
Select Git revision
Show changes
Commits on Source (3)
Showing
with 695 additions and 0 deletions
......@@ -30,9 +30,12 @@
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<<<<<<< HEAD
=======
>>>>>>> d9a17a201a4ed5408d60b7579430fc1a0c36dfc7
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
......
package fr.atlantique.imt.inf211.jobmngt.controller;
import fr.atlantique.imt.inf211.jobmngt.entity.Application;
import fr.atlantique.imt.inf211.jobmngt.service.ApplicationService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import java.util.List;
@Controller
@RequestMapping("/applications")
public class ApplicationController {
@Autowired
private ApplicationService applicationService;
@GetMapping
public String redirectToApplicationList() {
return "redirect:/applications/list";
}
// Affichage de la liste des candidatures
@GetMapping("/list")
public String listApplications(Model model) {
List<Application> applications = applicationService.getAllApplications();
model.addAttribute("applications", applications);
return "application/application-list";
}
}
package fr.atlantique.imt.inf211.jobmngt.controller;
import java.util.List;
import java.util.Optional;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
//import org.hibernate.mapping.List;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.ModelAndView;
import fr.atlantique.imt.inf211.jobmngt.entity.Candidate;
import fr.atlantique.imt.inf211.jobmngt.service.CandidateService;
@Controller
@RequestMapping("/candidates")
public class CandidateController {
@Autowired
private CandidateService candidateService;
@GetMapping("/signup")
public String showSignupForm() {
return "candidate/signupCandidate";
}
@PostMapping("/signup")
public ModelAndView registerCandidate(@RequestParam String mail,
@RequestParam String password,
@RequestParam String lastname,
@RequestParam String firstname,
@RequestParam String city) {
// Vérifier si l'email existe déjà
Optional<Candidate> existingCandidate = candidateService.findByMail(mail);
if (existingCandidate.isPresent()) {
ModelAndView mav = new ModelAndView("candidate/signup");
mav.addObject("error", "Email already exists. Please use another email.");
return mav;
}
// Vérifier si le mot de passe est assez long
if (password.length() < 4) {
ModelAndView mav = new ModelAndView("candidate/signup");
mav.addObject("error", "Password must be at least 4 characters long.");
return mav;
}
// Création du candidat et enregistrement
Candidate candidate = new Candidate(mail, password, city, lastname, firstname);
candidateService.registerCandidate(candidate);
// Redirection vers la page de confirmation
ModelAndView mav = new ModelAndView("candidate/confirmation");
mav.addObject("message", "Your account has been successfully created!");
return mav;
}
@GetMapping("/list")
public String listCandidates(Model model) {
List<Candidate> candidates = candidateService.getAllCandidates();
model.addAttribute("candidates", candidates);
return "candidate/candidates-list";
}
@GetMapping
public String redirectToList() {
return "redirect:/candidates/list";
}
@GetMapping("/details/{id}")
public String getCandidateDetails(@PathVariable int id, Model model) {
Candidate candidate = candidateService.getCandidateById(id);
if (candidate == null) {
model.addAttribute("error", "Le candidat n'existe pas.");
return "error";
}
model.addAttribute("candidate", candidate);
return "candidate/details";
}
@GetMapping("/edit/{id}")
public String showEditForm(@PathVariable int id, Model model) {
Candidate candidate = candidateService.getCandidateById(id);
if (candidate == null) {
model.addAttribute("error", "Le candidat n'existe pas.");
return "error";
}
model.addAttribute("candidate", candidate);
return "candidate/editCandidate";
}
@PostMapping("/edit")
public String updateCandidate(@RequestParam int id,
@RequestParam String mail,
@RequestParam String password,
@RequestParam String lastname,
@RequestParam String firstname,
@RequestParam String city,
Model model) {
Candidate candidate = candidateService.getCandidateById(id);
if (candidate == null) {
model.addAttribute("error", "Le candidat n'existe pas.");
return "error";
}
candidate.setMail(mail);
candidate.setPassword(password);
candidate.setLastname(lastname);
candidate.setFirstname(firstname);
candidate.setCity(city);
candidateService.updateCandidate(candidate);
model.addAttribute("message", "Candidat mis à jour avec succès !");
return "candidate/confirmation";
}
@GetMapping("/delete/{id}")
public String deleteCandidate(@PathVariable int id, Model model) {
Candidate candidate = candidateService.getCandidateById(id);
if (candidate == null) {
model.addAttribute("error", "Le candidat n'existe pas.");
return "error";
}
candidateService.deleteCandidate(id);
model.addAttribute("message", "Le candidat a été supprimé avec succès !");
return "candidate/confirmation";
}
}
\ No newline at end of file
package fr.atlantique.imt.inf211.jobmngt.controller;
<<<<<<< HEAD
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.stereotype.Controller;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.beans.factory.annotation.Autowired;
=======
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;
>>>>>>> d9a17a201a4ed5408d60b7579430fc1a0c36dfc7
import fr.atlantique.imt.inf211.jobmngt.service.QualificationLevelService;
......
<<<<<<< HEAD
package fr.atlantique.imt.inf211.jobmngt.controller;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.server.ResponseStatusException;
import fr.atlantique.imt.inf211.jobmngt.dao.CompanyDao;
import fr.atlantique.imt.inf211.jobmngt.entity.Company;
@RestController
@RequestMapping("/api/companies")
public class TestCompanyDaoController {
@Autowired
private CompanyDao companyDao;
/**
* Lister toutes les entreprises existantes
*/
@GetMapping("")
public List<Company> all() {
return companyDao.findAll();
}
/**
* Créer une nouvelle entreprise
*/
@PostMapping(value = "", produces = MediaType.APPLICATION_JSON_VALUE)
public Company newCompany(@RequestBody Company company) {
if (company.getMail() == null || company.getPassword() == null || company.getCity() == null) {
throw new ResponseStatusException(HttpStatus.BAD_REQUEST, "Les champs 'mail', 'password' et 'city' sont obligatoires !");
}
companyDao.persist(company);
return company;
}
/**
* Récupérer les informations d'une entreprise par ID
*/
@GetMapping("/{id}")
public Company one(@PathVariable int id) {
Company company = companyDao.findById(id);
if (company == null) {
throw new ResponseStatusException(HttpStatus.NOT_FOUND, "Entreprise non trouvée");
}
return company;
}
/**
* Modifier les informations d'une entreprise
*/
@PutMapping("/{id}")
public Company replaceCompany(@RequestBody Company newCompany, @PathVariable int id) {
Company company = companyDao.findById(id);
if (company != null) {
company.setDenomination(newCompany.getDenomination());
company.setDescription(newCompany.getDescription());
// Hérité de AppUser
company.setMail(newCompany.getMail());
company.setPassword(newCompany.getPassword());
company.setCity(newCompany.getCity());
return companyDao.merge(company);
}
throw new ResponseStatusException(HttpStatus.NOT_FOUND, "Entreprise non trouvée");
}
/**
* Supprimer une entreprise par ID
*/
@DeleteMapping("/{id}")
public void deleteCompany(@PathVariable int id) {
Company company = companyDao.findById(id);
if (company != null) {
companyDao.remove(company);
} else {
throw new ResponseStatusException(HttpStatus.NOT_FOUND, "Entreprise non trouvée");
}
}
}
=======
// package fr.atlantique.imt.inf211.jobmngt.controller;
// import java.util.List;
......@@ -90,3 +184,4 @@
// }
// }
// }
>>>>>>> d9a17a201a4ed5408d60b7579430fc1a0c36dfc7
<<<<<<< HEAD
package fr.atlantique.imt.inf211.jobmngt.controller;
import java.util.Date;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.server.ResponseStatusException;
import fr.atlantique.imt.inf211.jobmngt.dao.CompanyDao;
import fr.atlantique.imt.inf211.jobmngt.dao.JobOfferDao;
import fr.atlantique.imt.inf211.jobmngt.dao.QualificationLevelDao;
import fr.atlantique.imt.inf211.jobmngt.dao.SectorDao;
import fr.atlantique.imt.inf211.jobmngt.entity.Company;
import fr.atlantique.imt.inf211.jobmngt.entity.JobOffer;
import fr.atlantique.imt.inf211.jobmngt.entity.QualificationLevel;
import fr.atlantique.imt.inf211.jobmngt.entity.Sector;
@RestController
@RequestMapping("/api/joboffers")
public class TestJobOfferDaoController {
@Autowired
private JobOfferDao jobOfferDao;
@Autowired
private CompanyDao companyDao;
@Autowired
private QualificationLevelDao qualificationLevelDao;
@Autowired
private SectorDao sectorDao;
/**
* 🔍 Récupérer toutes les offres d'emploi.
*/
@GetMapping("")
public List<JobOffer> getAllJobOffers() {
return jobOfferDao.findAll();
}
/**
* Récupérer les offres d'emploi en fonction d'un secteur et d'un niveau de qualification.
// */
@GetMapping("/sector/{sector}/qualification/{qualification}")
public List<JobOffer> findBySectorAndQualification(@PathVariable String sector, @PathVariable String qualification) {
return jobOfferDao.findBySectorAndQualification(sector, qualification);
}
/**
* 🔍 Récupérer une offre d'emploi par ID.
*/
@GetMapping("/{id}")
public JobOffer getJobOfferById(@PathVariable int id) {
JobOffer jobOffer = jobOfferDao.findById(id)
.orElseThrow(() -> new ResponseStatusException(HttpStatus.NOT_FOUND, "Offre d'emploi introuvable !"));
if (jobOffer == null) {
throw new ResponseStatusException(HttpStatus.NOT_FOUND, "Offre d'emploi introuvable !");
}
return jobOffer;
}
/**
* ✨ Créer une nouvelle offre d'emploi.
*/
@PostMapping(value = "", produces = MediaType.APPLICATION_JSON_VALUE)
public JobOffer newJobOffer(@RequestBody Map<String, Object> payload) {
// Vérification et récupération des données
int companyId = (int) payload.get("companyId");
Company company = companyDao.findById(companyId);
if (company == null) throw new ResponseStatusException(HttpStatus.NOT_FOUND, "Entreprise introuvable !");
int qualificationLevelId = (int) payload.get("qualificationLevelId");
QualificationLevel qualificationLevel = qualificationLevelDao.findById(qualificationLevelId);
if (qualificationLevel == null) throw new ResponseStatusException(HttpStatus.NOT_FOUND, "Niveau de qualification introuvable !");
JobOffer jobOffer = new JobOffer();
jobOffer.setCompany(company);
jobOffer.setQualificationLevel(qualificationLevel);
jobOffer.setTitle((String) payload.get("title"));
jobOffer.setTaskDescription((String) payload.get("taskDescription"));
jobOffer.setPublicationDate(new Date());
// Gestion des secteurs
Set<Sector> sectors = new HashSet<>();
for (Map<String, Object> sectorData : (List<Map<String, Object>>) payload.get("sectors")) {
int sectorId = (int) sectorData.get("id");
Sector sector = sectorDao.findById(sectorId);
if (sector == null) throw new ResponseStatusException(HttpStatus.NOT_FOUND, "Secteur introuvable avec ID: " + sectorId);
sectors.add(sector);
}
jobOffer.setSectors(sectors);
return jobOfferDao.save(jobOffer);
}
@DeleteMapping("/{id}")
public void deleteJobOffer(@PathVariable int id) {
if (!jobOfferDao.existsById(id)) {
throw new ResponseStatusException(HttpStatus.NOT_FOUND, "Offre d'emploi introuvable !");
}
jobOfferDao.deleteById(id);
}
}
=======
// package fr.atlantique.imt.inf211.jobmngt.controller;
// import java.util.Date;
......@@ -118,5 +240,6 @@
// }
>>>>>>> d9a17a201a4ed5408d60b7579430fc1a0c36dfc7
......@@ -77,6 +77,17 @@ public class ApplicationDao {
return query.getResultList();
}
<<<<<<< HEAD
@Transactional(readOnly = true)
public List<Application> findAll() {
logger.log(Level.INFO, "Fetching all applications");
String jpql = "SELECT a FROM Application a ORDER BY a.appdate DESC";
TypedQuery<Application> query = entityManager.createQuery(jpql, Application.class);
return query.getResultList();
}
=======
>>>>>>> d9a17a201a4ed5408d60b7579430fc1a0c36dfc7
}
......
......@@ -3,6 +3,10 @@ package fr.atlantique.imt.inf211.jobmngt.dao;
import java.util.List;
<<<<<<< HEAD
import java.util.Optional;
=======
>>>>>>> d9a17a201a4ed5408d60b7579430fc1a0c36dfc7
import java.util.logging.Level;
import java.util.logging.Logger;
......@@ -12,6 +16,10 @@ import org.springframework.transaction.annotation.Transactional;
import fr.atlantique.imt.inf211.jobmngt.entity.Candidate;
import jakarta.persistence.EntityManager;
import jakarta.persistence.PersistenceContext;
<<<<<<< HEAD
import jakarta.persistence.TypedQuery;
=======
>>>>>>> d9a17a201a4ed5408d60b7579430fc1a0c36dfc7
/**
* Home object for domain model class Candidate.
......@@ -81,5 +89,25 @@ public List<Candidate> findAll() {
throw re;
}
}
<<<<<<< HEAD
@Transactional(readOnly = true)
public Optional<Candidate> findByMail(String mail) {
TypedQuery<Candidate> query = entityManager.createQuery(
"SELECT c FROM Candidate c WHERE c.mail = :mail", Candidate.class);
query.setParameter("mail", mail);
List<Candidate> result = query.getResultList();
return result.isEmpty() ? Optional.empty() : Optional.of(result.get(0));
}
@Transactional
public void deleteById(int id) {
Candidate candidate = findById(id);
if (candidate != null) {
entityManager.remove(candidate);
}
}
=======
>>>>>>> d9a17a201a4ed5408d60b7579430fc1a0c36dfc7
}
package fr.atlantique.imt.inf211.jobmngt.dao;
import java.util.List;
<<<<<<< HEAD
import java.util.logging.Level;
import java.util.logging.Logger;
=======
import java.util.Optional;
>>>>>>> d9a17a201a4ed5408d60b7579430fc1a0c36dfc7
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;
......@@ -13,6 +18,32 @@ import jakarta.persistence.PersistenceContext;
@Repository
public class CompanyDao {
<<<<<<< HEAD
private static final Logger logger = Logger.getLogger(CompanyDao.class.getName());
@PersistenceContext
private EntityManager entityManager;
@Transactional
public void persist(Company transientInstance) {
logger.log(Level.INFO, "Persisting Company instance: " + transientInstance.getMail());
if (transientInstance.getMail() == null) {
throw new RuntimeException("Le champ 'mail' est obligatoire !");
}
entityManager.persist(transientInstance);
}
@Transactional
public void remove(Company persistentInstance) {
logger.log(Level.INFO, "Removing Company instance: " + persistentInstance.getMail());
entityManager.remove(persistentInstance);
}
@Transactional
public Company merge(Company detachedInstance) {
logger.log(Level.INFO, "Merging Company instance: " + detachedInstance.getMail());
return entityManager.merge(detachedInstance);
=======
@PersistenceContext
private EntityManager entityManager;
......@@ -24,6 +55,7 @@ public class CompanyDao {
} else {
return entityManager.merge(company);
}
>>>>>>> d9a17a201a4ed5408d60b7579430fc1a0c36dfc7
}
@Transactional(readOnly = true)
......@@ -31,6 +63,17 @@ public class CompanyDao {
return entityManager.createQuery("SELECT c FROM Company c", Company.class).getResultList();
}
<<<<<<< HEAD
@Transactional(readOnly = true)
public Company findById(int id) {
logger.log(Level.INFO, "Getting Company instance with id: " + id);
return entityManager.find(Company.class, id);
}
}
=======
@Transactional(readOnly = true)
public Optional<Company> findById(int id) {
return Optional.ofNullable(entityManager.find(Company.class, id));
......@@ -109,3 +152,4 @@ public void remove(int id) {
>>>>>>> d9a17a201a4ed5408d60b7579430fc1a0c36dfc7
......@@ -10,6 +10,10 @@ import org.springframework.transaction.annotation.Transactional;
import fr.atlantique.imt.inf211.jobmngt.entity.Sector;
import jakarta.persistence.EntityManager;
import jakarta.persistence.PersistenceContext;
<<<<<<< HEAD
import jakarta.persistence.TypedQuery;
=======
>>>>>>> d9a17a201a4ed5408d60b7579430fc1a0c36dfc7
@Repository
public class SectorDao {
......@@ -20,6 +24,23 @@ public class SectorDao {
private EntityManager entityManager;
@Transactional
<<<<<<< HEAD
public void persist(Sector transientInstance) {
logger.log(Level.INFO, "Persisting Sector instance");
entityManager.persist(transientInstance);
}
@Transactional
public void remove(Sector persistentInstance) {
logger.log(Level.INFO, "Removing Sector instance");
entityManager.remove(persistentInstance);
}
@Transactional
public Sector merge(Sector detachedInstance) {
logger.log(Level.INFO, "Merging Sector instance");
return entityManager.merge(detachedInstance);
=======
public void persist(Sector sector) {
logger.log(Level.INFO, "Persisting Sector instance");
entityManager.persist(sector);
......@@ -35,6 +56,7 @@ public class SectorDao {
public Sector merge(Sector sector) {
logger.log(Level.INFO, "Merging Sector instance");
return entityManager.merge(sector);
>>>>>>> d9a17a201a4ed5408d60b7579430fc1a0c36dfc7
}
@Transactional(readOnly = true)
......@@ -58,6 +80,20 @@ public class SectorDao {
}
/**
<<<<<<< HEAD
* Nouvelle méthode : Récupérer les secteurs ayant un label donné.
*/
@Transactional(readOnly = true)
public List<Sector> findByLabel(String label) {
logger.log(Level.INFO, "Fetching sectors with label: " + label);
String jpql = "SELECT s FROM Sector s WHERE s.label = :label";
TypedQuery<Sector> query = entityManager.createQuery(jpql, Sector.class);
query.setParameter("label", label);
return query.getResultList();
=======
* Nouvelle surcharge de findAll() sans paramètres.
*/
@Transactional(readOnly = true)
......@@ -105,5 +141,6 @@ public class SectorDao {
if (sector != null) {
entityManager.remove(sector);
}
>>>>>>> d9a17a201a4ed5408d60b7579430fc1a0c36dfc7
}
}
......@@ -25,6 +25,11 @@ public class Company extends AppUser implements Serializable {
private String description;
@OneToMany(mappedBy = "company", cascade = CascadeType.ALL, orphanRemoval = true, fetch = FetchType.LAZY)
<<<<<<< HEAD
@JsonIgnore // Évite la surcharge JSON circulaire
private Set<JobOffer> jobOffers;
=======
@JsonIgnore // Évite la surcharge JSON circulaire
private Set<JobOffer> jobOffers;
......@@ -33,6 +38,7 @@ public class Company extends AppUser implements Serializable {
return super.getMail(); // Hérite de AppUser
}
>>>>>>> d9a17a201a4ed5408d60b7579430fc1a0c36dfc7
// Constructeurs
public Company() {}
......@@ -67,3 +73,10 @@ public class Company extends AppUser implements Serializable {
this.jobOffers = jobOffers;
}
}
<<<<<<< HEAD
=======
>>>>>>> d9a17a201a4ed5408d60b7579430fc1a0c36dfc7
......@@ -4,8 +4,11 @@ import java.util.Date;
import java.util.HashSet;
import java.util.Set;
<<<<<<< HEAD
=======
import org.springframework.format.annotation.DateTimeFormat;
>>>>>>> d9a17a201a4ed5408d60b7579430fc1a0c36dfc7
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import jakarta.persistence.CascadeType;
......@@ -51,7 +54,14 @@ public class JobOffer implements java.io.Serializable {
private String taskDescription;
@Temporal(TemporalType.DATE)
<<<<<<< HEAD
<<<<<<< HEAD
=======
@DateTimeFormat(pattern = "yyyy-MM-dd")
>>>>>>> d9a17a2 (new_feat)
=======
@DateTimeFormat(pattern = "yyyy-MM-dd")
>>>>>>> d9a17a201a4ed5408d60b7579430fc1a0c36dfc7
@Column(name="publicationdate")
private Date publicationDate;
......@@ -112,6 +122,11 @@ public class JobOffer implements java.io.Serializable {
}
<<<<<<< HEAD
<<<<<<< HEAD
=======
=======
>>>>>>> d9a17a201a4ed5408d60b7579430fc1a0c36dfc7
......@@ -343,3 +358,7 @@ public class JobOffer implements java.io.Serializable {
// // }
<<<<<<< HEAD
>>>>>>> d9a17a2 (new_feat)
=======
>>>>>>> d9a17a201a4ed5408d60b7579430fc1a0c36dfc7
......@@ -34,7 +34,11 @@ public class QualificationLevel implements java.io.Serializable {
@Column(name="label", unique=true, nullable=false, length=50)
private String label;
<<<<<<< HEAD
@OneToMany(fetch=FetchType.LAZY, mappedBy="qualificationlevel") // Correspond exactement à Application.java
=======
@OneToMany(fetch=FetchType.LAZY, mappedBy="qualificationlevel")
>>>>>>> d9a17a201a4ed5408d60b7579430fc1a0c36dfc7
private Set<Application> applications = new HashSet<>();
@OneToMany(fetch=FetchType.LAZY, mappedBy="qualificationLevel")
......
package fr.atlantique.imt.inf211.jobmngt.service;
<<<<<<< HEAD
import fr.atlantique.imt.inf211.jobmngt.dao.AppUserDao;
import fr.atlantique.imt.inf211.jobmngt.entity.AppUser;
import org.springframework.stereotype.Component;
import org.springframework.beans.factory.annotation.Autowired;
import java.util.List;
import java.util.Optional;
=======
import java.util.List;
import java.util.Optional;
......@@ -9,6 +20,7 @@ import org.springframework.stereotype.Component;
import fr.atlantique.imt.inf211.jobmngt.dao.AppUserDao;
import fr.atlantique.imt.inf211.jobmngt.entity.AppUser;
>>>>>>> d9a17a201a4ed5408d60b7579430fc1a0c36dfc7
@Component
public class AppUserServiceImpl implements AppUserService {
......
package fr.atlantique.imt.inf211.jobmngt.service;
import fr.atlantique.imt.inf211.jobmngt.dao.ApplicationDao;
import fr.atlantique.imt.inf211.jobmngt.entity.Application;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
@Service
public class ApplicationService {
@Autowired
private ApplicationDao applicationDao;
@Transactional(readOnly = true)
public List<Application> getAllApplications() {
return applicationDao.findAll();
}
}
package fr.atlantique.imt.inf211.jobmngt.service;
import fr.atlantique.imt.inf211.jobmngt.entity.Candidate;
import java.util.List;
import java.util.Optional;
public interface CandidateService {
List<Candidate> getAllCandidates();
Candidate getCandidateById(int id);
void createCandidate(Candidate candidate);
void registerCandidate(Candidate candidate);
Optional<Candidate> findByMail(String mail);
void updateCandidate(Candidate candidate);
void deleteCandidate(int id);
}
package fr.atlantique.imt.inf211.jobmngt.service;
import fr.atlantique.imt.inf211.jobmngt.dao.CandidateDao;
import fr.atlantique.imt.inf211.jobmngt.entity.Candidate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Optional;
@Service
public class CandidateServiceImpl implements CandidateService {
@Autowired
private CandidateDao candidateDao;
@Override
public List<Candidate> getAllCandidates() {
return candidateDao.findAll();
}
@Override
public Candidate getCandidateById(int id) {
return candidateDao.findById(id);
}
@Override
public void createCandidate(Candidate candidate) {
candidateDao.persist(candidate);
}
@Override
public void registerCandidate(Candidate candidate) {
candidateDao.persist(candidate);
}
@Override
public Optional<Candidate> findByMail(String mail) {
return candidateDao.findByMail(mail);
}
@Override
public void updateCandidate(Candidate candidate) {
candidateDao.merge(candidate);
}
@Override
public void deleteCandidate(int id) {
Candidate candidate = candidateDao.findById(id);
if (candidate != null) {
candidateDao.remove(candidate);
}
}
}
\ No newline at end of file
package fr.atlantique.imt.inf211.jobmngt.service;
<<<<<<< HEAD
import fr.atlantique.imt.inf211.jobmngt.entity.QualificationLevel;
import java.util.List;
=======
import java.util.List;
import java.util.Optional;
import fr.atlantique.imt.inf211.jobmngt.entity.QualificationLevel;
>>>>>>> d9a17a201a4ed5408d60b7579430fc1a0c36dfc7
public interface QualificationLevelService {
......@@ -11,6 +16,9 @@ public interface QualificationLevelService {
public List<QualificationLevel> listOfQualificationLevels();
public long countQualificationLevel();
<<<<<<< HEAD
=======
Optional<QualificationLevel> findById(int id);
>>>>>>> d9a17a201a4ed5408d60b7579430fc1a0c36dfc7
}
package fr.atlantique.imt.inf211.jobmngt.service;
<<<<<<< HEAD
import fr.atlantique.imt.inf211.jobmngt.dao.QualificationLevelDao;
import fr.atlantique.imt.inf211.jobmngt.entity.QualificationLevel;
import org.springframework.stereotype.Component;
import org.springframework.beans.factory.annotation.Autowired;
import java.util.List;
@Component
public class QualificationLevelServiceImpl implements QualificationLevelService {
@Autowired
QualificationLevelDao qualificationLevelDao;
=======
import java.util.List;
import java.util.Optional;
......@@ -20,6 +36,7 @@ public class QualificationLevelServiceImpl implements QualificationLevelService
}
@Override
>>>>>>> d9a17a201a4ed5408d60b7579430fc1a0c36dfc7
public List<QualificationLevel> listOfQualificationLevels() {
return qualificationLevelDao.findAll("id", "ASC");
}
......@@ -29,6 +46,9 @@ public class QualificationLevelServiceImpl implements QualificationLevelService
return qualificationLevelDao.count();
}
<<<<<<< HEAD
}
=======
@Override
public Optional<QualificationLevel> findById(int id) {
return Optional.ofNullable(qualificationLevelDao.findById(id)); // ✅ Correction ici
......@@ -69,3 +89,4 @@ public class QualificationLevelServiceImpl implements QualificationLevelService
// }
>>>>>>> d9a17a201a4ed5408d60b7579430fc1a0c36dfc7
package fr.atlantique.imt.inf211.jobmngt.service;
<<<<<<< HEAD
import fr.atlantique.imt.inf211.jobmngt.entity.Sector;
import java.util.List;
public interface SectorService {
public List<Sector> listOfSectors();
public long countSectors();
=======
import java.util.List;
import java.util.Optional;
......@@ -11,4 +23,5 @@ public interface SectorService {
void saveSector(Sector sector);
void updateSector(Sector sector);
void deleteSector(int id);
>>>>>>> d9a17a201a4ed5408d60b7579430fc1a0c36dfc7
}