source: jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/models/job_advertisements/JobAdvertisement.java@ 28b3398

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

Implemented job application functionality, added job advertisement filtering and replaced text areas with editors

  • Property mode set to 100644
File size: 2.8 KB
Line 
1package mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.job_advertisements;
2
3import jakarta.persistence.*;
4import lombok.AllArgsConstructor;
5import lombok.Data;
6import lombok.NoArgsConstructor;
7import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.enumerations.EmploymentStatus;
8import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.enumerations.JobType;
9import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.job_advertisements.DTO.JobAdDetailsDTO;
10import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.users.Recruiter;
11import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.users.User;
12
13import java.time.LocalDate;
14import java.time.LocalDateTime;
15
16@Entity
17@NoArgsConstructor
18@AllArgsConstructor
19@Data
20@Table(name = "job_advertisements")
21public 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}
Note: See TracBrowser for help on using the repository browser.