source: jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/service/impl/JobAdvertisementServiceImpl.java@ 19398ad

main
Last change on this file since 19398ad was 19398ad, checked in by 223021 <daniel.ilievski.2@…>, 6 weeks ago

Implemented backend and frontend CRUD operations for job advertisements

  • Property mode set to 100644
File size: 5.4 KB
Line 
1package mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.service.impl;
2
3import lombok.RequiredArgsConstructor;
4import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.enumerations.EmploymentStatus;
5import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.enumerations.JobType;
6import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.job_advertisements.DTO.JobAdDetailsDTO;
7import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.job_advertisements.DTO.JobAdvertisementDTO;
8import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.job_advertisements.JobAdvertisement;
9import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.users.User;
10import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.repositories.JobAdvertisementRepository;
11import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.repositories.UserRepository;
12import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.service.intef.JobAdvertisementService;
13import org.springframework.stereotype.Service;
14
15import java.time.LocalDate;
16import java.time.LocalDateTime;
17import java.util.List;
18
19@Service
20@RequiredArgsConstructor
21public class JobAdvertisementServiceImpl implements JobAdvertisementService {
22 private final UserRepository userRepository;
23 private final JobAdvertisementRepository jobAdvertisementRepository;
24
25 @Override
26 public JobAdDetailsDTO addJobAdvertisement(JobAdvertisementDTO jobAdvertisementDTO) {
27 User recruiter = userRepository.findByEmail(jobAdvertisementDTO.getEmail()).orElseThrow(() -> new IllegalArgumentException("User not found"));
28 JobAdvertisement jobAdvertisement = new JobAdvertisement(
29 recruiter,
30 jobAdvertisementDTO.getTitle(),
31 jobAdvertisementDTO.getDescription(),
32 jobAdvertisementDTO.getIndustry(),
33 jobAdvertisementDTO.getStartingSalary(),
34 LocalDate.parse(jobAdvertisementDTO.getActiveUntil()),
35 JobType.valueOf(jobAdvertisementDTO.getJobType()),
36 EmploymentStatus.valueOf(jobAdvertisementDTO.getEmploymentStatus())
37 );
38 jobAdvertisementRepository.save(jobAdvertisement);
39 return JobAdvertisement.mapToJobAdDetailsDTO(jobAdvertisement);
40 }
41
42 @Override
43 public JobAdDetailsDTO editJobAdvertisement(Long id, JobAdvertisementDTO jobAdvertisementDTO) {
44 JobAdvertisement jobAdvertisement = jobAdvertisementRepository.findById(id).orElseThrow(() -> new IllegalArgumentException("Job Advertisement not found"));
45 jobAdvertisement.setTitle(jobAdvertisementDTO.getTitle());
46 jobAdvertisement.setDescription(jobAdvertisementDTO.getDescription());
47 jobAdvertisement.setIndustry(jobAdvertisementDTO.getIndustry());
48 jobAdvertisement.setStartingSalary(jobAdvertisementDTO.getStartingSalary());
49 jobAdvertisement.setActiveUntil(LocalDate.parse(jobAdvertisementDTO.getActiveUntil()));
50 jobAdvertisement.setActive(jobAdvertisement.isJobAdActive());
51 jobAdvertisement.setJobType(JobType.valueOf(jobAdvertisementDTO.getJobType()));
52 jobAdvertisement.setEmploymentStatus(EmploymentStatus.valueOf(jobAdvertisementDTO.getEmploymentStatus()));
53 jobAdvertisementRepository.save(jobAdvertisement);
54 return JobAdvertisement.mapToJobAdDetailsDTO(jobAdvertisement);
55 }
56
57 @Override
58 public void deleteJobAdvertisement(Long jobAdvertisementId) {
59 jobAdvertisementRepository.deleteById(jobAdvertisementId);
60 }
61
62 @Override
63 public List<JobAdDetailsDTO> findAllJobAdvertisements() {
64 List<JobAdvertisement> jobAdvertisementList = jobAdvertisementRepository.findAll();
65 jobAdvertisementList.forEach(jobAdvertisement -> {
66 if (!jobAdvertisement.isJobAdActive() && jobAdvertisement.isActive()) {
67 jobAdvertisement.setActive(false);
68 jobAdvertisementRepository.save(jobAdvertisement);
69 } else if (jobAdvertisement.isJobAdActive() && !jobAdvertisement.isActive()) {
70 jobAdvertisement.setActive(true);
71 jobAdvertisementRepository.save(jobAdvertisement);
72 }
73 });
74
75 return jobAdvertisementList.stream()
76 .map(JobAdvertisement::mapToJobAdDetailsDTO)
77 .toList();
78 }
79
80 @Override
81 public List<JobAdDetailsDTO> findAllJobAdvertisementsByRecruiterId(Long recruiterId) {
82 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
93 return jobAdvertisementList.stream()
94 .map(JobAdvertisement::mapToJobAdDetailsDTO)
95 .toList();
96 }
97 @Override
98 public JobAdDetailsDTO findJobAdvertisementById(Long id) {
99 JobAdvertisement jobAdvertisement = jobAdvertisementRepository.findById(id).orElse(null);
100 return JobAdvertisement.mapToJobAdDetailsDTO(jobAdvertisement);
101 }
102}
Note: See TracBrowser for help on using the repository browser.