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