1 | package mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.job_advertisements;
|
---|
2 |
|
---|
3 | import jakarta.persistence.*;
|
---|
4 | import lombok.AllArgsConstructor;
|
---|
5 | import lombok.Data;
|
---|
6 | import lombok.NoArgsConstructor;
|
---|
7 | import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.enumerations.EmploymentStatus;
|
---|
8 | import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.enumerations.JobType;
|
---|
9 | import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.job_advertisements.DTO.JobAdDetailsDTO;
|
---|
10 | import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.users.Recruiter;
|
---|
11 | import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.users.User;
|
---|
12 |
|
---|
13 | import java.time.LocalDate;
|
---|
14 | import java.time.LocalDateTime;
|
---|
15 |
|
---|
16 | @Entity
|
---|
17 | @NoArgsConstructor
|
---|
18 | @AllArgsConstructor
|
---|
19 | @Data
|
---|
20 | @Table(name = "job_advertisements")
|
---|
21 | public class JobAdvertisement {
|
---|
22 |
|
---|
23 | public JobAdvertisement(Recruiter recruiter, String title, String description, String industry, int startingSalary, LocalDate activeUntil, JobType jobType, EmploymentStatus employmentStatus) {
|
---|
24 | this.recruiter = recruiter;
|
---|
25 | this.title = title;
|
---|
26 | this.description = description;
|
---|
27 | this.industry = industry;
|
---|
28 | this.startingSalary = startingSalary;
|
---|
29 | this.postedOn = LocalDateTime.now();
|
---|
30 | this.activeUntil = activeUntil;
|
---|
31 | this.isActive = true;
|
---|
32 | this.jobType = jobType;
|
---|
33 | this.employmentStatus = employmentStatus;
|
---|
34 | }
|
---|
35 |
|
---|
36 | @Id
|
---|
37 | @GeneratedValue(strategy = GenerationType.IDENTITY)
|
---|
38 | private Long id;
|
---|
39 |
|
---|
40 | @ManyToOne
|
---|
41 | private Recruiter recruiter;
|
---|
42 |
|
---|
43 | private String title;
|
---|
44 | private String description;
|
---|
45 | private String industry;
|
---|
46 | private int startingSalary;
|
---|
47 | private LocalDateTime postedOn;
|
---|
48 | private LocalDate activeUntil;
|
---|
49 | private boolean isActive;
|
---|
50 |
|
---|
51 | @Enumerated(EnumType.STRING)
|
---|
52 | JobType jobType;
|
---|
53 |
|
---|
54 | @Enumerated(EnumType.STRING)
|
---|
55 | EmploymentStatus employmentStatus;
|
---|
56 |
|
---|
57 | public boolean isJobAdActive() {
|
---|
58 | LocalDate date = LocalDate.now();
|
---|
59 | return date.isBefore(activeUntil);
|
---|
60 | }
|
---|
61 |
|
---|
62 | public static JobAdDetailsDTO mapToJobAdDetailsDTO(JobAdvertisement jobAdvertisement) {
|
---|
63 |
|
---|
64 | return new JobAdDetailsDTO(
|
---|
65 | jobAdvertisement.getRecruiter().getName(),
|
---|
66 | jobAdvertisement.getRecruiter().getId(),
|
---|
67 | jobAdvertisement.getId(),
|
---|
68 | jobAdvertisement.getTitle(),
|
---|
69 | jobAdvertisement.getDescription(),
|
---|
70 | jobAdvertisement.getIndustry(),
|
---|
71 | jobAdvertisement.getStartingSalary(),
|
---|
72 | jobAdvertisement.getPostedOn().toString(),
|
---|
73 | jobAdvertisement.getActiveUntil().toString(),
|
---|
74 | jobAdvertisement.isJobAdActive(),
|
---|
75 | jobAdvertisement.getJobType().name(),
|
---|
76 | jobAdvertisement.getEmploymentStatus().name()
|
---|
77 | );
|
---|
78 | }
|
---|
79 |
|
---|
80 | }
|
---|