Changeset 28b3398 for jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/service/impl/JobAdvertisementServiceImpl.java
- Timestamp:
- 06/09/24 14:24:03 (2 weeks ago)
- Branches:
- main
- Children:
- b248810
- Parents:
- 19398ad
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/service/impl/JobAdvertisementServiceImpl.java
r19398ad r28b3398 5 5 import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.enumerations.JobType; 6 6 import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.job_advertisements.DTO.JobAdDetailsDTO; 7 import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.job_advertisements.DTO.JobAdFilterDTO; 7 8 import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.job_advertisements.DTO.JobAdvertisementDTO; 8 9 import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.job_advertisements.JobAdvertisement; 10 import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.users.Recruiter; 9 11 import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.users.User; 10 12 import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.repositories.JobAdvertisementRepository; 13 import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.repositories.RecruiterRepository; 11 14 import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.repositories.UserRepository; 12 15 import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.service.intef.JobAdvertisementService; … … 15 18 import java.time.LocalDate; 16 19 import java.time.LocalDateTime; 20 import java.util.Comparator; 17 21 import java.util.List; 18 22 … … 22 26 private final UserRepository userRepository; 23 27 private final JobAdvertisementRepository jobAdvertisementRepository; 28 private final RecruiterRepository recruiterRepository; 24 29 25 30 @Override 26 31 public JobAdDetailsDTO addJobAdvertisement(JobAdvertisementDTO jobAdvertisementDTO) { 27 User recruiter = userRepository.findByEmail(jobAdvertisementDTO.getEmail()).orElseThrow(() -> new IllegalArgumentException("User not found"));32 Recruiter recruiter = recruiterRepository.findRecruiterByEmail(jobAdvertisementDTO.getEmail()).orElseThrow(() -> new IllegalArgumentException("User not found")); 28 33 JobAdvertisement jobAdvertisement = new JobAdvertisement( 29 34 recruiter, … … 35 40 JobType.valueOf(jobAdvertisementDTO.getJobType()), 36 41 EmploymentStatus.valueOf(jobAdvertisementDTO.getEmploymentStatus()) 37 42 ); 38 43 jobAdvertisementRepository.save(jobAdvertisement); 39 44 return JobAdvertisement.mapToJobAdDetailsDTO(jobAdvertisement); … … 79 84 80 85 @Override 86 public List<JobAdDetailsDTO> filterJobAdvertisements(JobAdFilterDTO jobAdFilterDTO) { 87 List<JobAdvertisement> filteredJobAds = jobAdvertisementRepository.findAll(); 88 filteredJobAds = filter(filteredJobAds, jobAdFilterDTO); 89 90 return filteredJobAds.stream() 91 .map(JobAdvertisement::mapToJobAdDetailsDTO) 92 .toList(); 93 } 94 95 private List<JobAdvertisement> filter(List<JobAdvertisement> filteredJobAdvertisements, JobAdFilterDTO jobAdFilterDTO) { 96 return filteredJobAdvertisements.stream() 97 .filter(jobAd -> jobAd.getTitle().toLowerCase().contains(jobAdFilterDTO.getSearchTerm().toLowerCase())) 98 .filter(jobAd -> jobAdFilterDTO.getIndustry().equals("all") || jobAd.getIndustry().equals(jobAdFilterDTO.getIndustry())) 99 .sorted(getComparator(jobAdFilterDTO.getSortOrder())) 100 .toList(); 101 } 102 103 private Comparator<JobAdvertisement> getComparator(String sortOrder) { 104 return switch (sortOrder) { 105 case "date_newest" -> Comparator.comparing(JobAdvertisement::getPostedOn).reversed(); 106 case "date_oldest" -> Comparator.comparing(JobAdvertisement::getPostedOn); 107 case "salary_highest" -> Comparator.comparing(JobAdvertisement::getStartingSalary).reversed(); 108 case "salary_lowest" -> Comparator.comparing(JobAdvertisement::getStartingSalary); 109 default -> Comparator.comparing(JobAdvertisement::getPostedOn); // Default sorting order 110 }; 111 } 112 113 114 @Override 81 115 public List<JobAdDetailsDTO> findAllJobAdvertisementsByRecruiterId(Long recruiterId) { 82 116 List<JobAdvertisement> jobAdvertisementList = jobAdvertisementRepository.findAllByRecruiterId(recruiterId); 83 // jobAdvertisementList.forEach(jobAdvertisement -> {84 // if (!jobAdvertisement.isJobAdActive() && jobAdvertisement.isActive()) {85 // jobAdvertisement.setActive(false);86 // jobAdvertisementRepository.save(jobAdvertisement);87 // } else if (jobAdvertisement.isJobAdActive() && !jobAdvertisement.isActive()) {88 // jobAdvertisement.setActive(true);89 // jobAdvertisementRepository.save(jobAdvertisement);90 // }91 // });92 117 93 118 return jobAdvertisementList.stream() … … 95 120 .toList(); 96 121 } 122 123 @Override 124 public List<JobAdDetailsDTO> filterJobAdvertisementsByRecruiterId(Long recruiterId, JobAdFilterDTO jobAdFilterDTO) { 125 List<JobAdvertisement> filteredJobAds = jobAdvertisementRepository.findAllByRecruiterId(recruiterId); 126 filteredJobAds = filter(filteredJobAds, jobAdFilterDTO); 127 return filteredJobAds.stream() 128 .map(JobAdvertisement::mapToJobAdDetailsDTO) 129 .toList(); 130 } 131 97 132 @Override 98 133 public JobAdDetailsDTO findJobAdvertisementById(Long id) {
Note:
See TracChangeset
for help on using the changeset viewer.