1 | package mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.applications;
|
---|
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.applications.DTO.ApplicationDetailsDTO;
|
---|
8 | import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.enumerations.ApplicationStatus;
|
---|
9 | import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.job_advertisements.JobAdvertisement;
|
---|
10 | import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.users.JobSeeker;
|
---|
11 | import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.users.User;
|
---|
12 |
|
---|
13 | import java.time.LocalDateTime;
|
---|
14 | import java.util.HashMap;
|
---|
15 | import java.util.List;
|
---|
16 |
|
---|
17 | @Entity
|
---|
18 | @NoArgsConstructor
|
---|
19 | @AllArgsConstructor
|
---|
20 | @Data
|
---|
21 | @Table(name = "applications")
|
---|
22 | public class Application {
|
---|
23 |
|
---|
24 | @Id
|
---|
25 | @GeneratedValue(strategy = GenerationType.IDENTITY)
|
---|
26 | private Long id;
|
---|
27 |
|
---|
28 | @ManyToOne
|
---|
29 | private JobSeeker jobSeeker;
|
---|
30 |
|
---|
31 | @ManyToOne
|
---|
32 | private JobAdvertisement jobAdvertisement;
|
---|
33 |
|
---|
34 | @Column(name = "resume_file_name", nullable = false)
|
---|
35 | private String resumeFileName;
|
---|
36 |
|
---|
37 | @ElementCollection
|
---|
38 | private List<String> questionAnswers;
|
---|
39 |
|
---|
40 | private String message;
|
---|
41 |
|
---|
42 | private LocalDateTime submittedOn;
|
---|
43 |
|
---|
44 | @Enumerated(EnumType.STRING)
|
---|
45 | private ApplicationStatus status;
|
---|
46 |
|
---|
47 | public Application(JobSeeker jobSeeker, JobAdvertisement jobAdvertisement, String resumeFileName, List<String> answers, String message) {
|
---|
48 | this.jobSeeker = jobSeeker;
|
---|
49 | this.jobAdvertisement = jobAdvertisement;
|
---|
50 | this.resumeFileName = resumeFileName;
|
---|
51 | this.questionAnswers = answers;
|
---|
52 | this.message = message;
|
---|
53 | submittedOn = LocalDateTime.now();
|
---|
54 | this.status = ApplicationStatus.PROPOSED;
|
---|
55 | }
|
---|
56 |
|
---|
57 | public static ApplicationDetailsDTO mapToApplicationDetailsDTO (Application application) {
|
---|
58 | return new ApplicationDetailsDTO(
|
---|
59 | application.getId(),
|
---|
60 | application.getJobSeeker().getId(),
|
---|
61 | application.getJobSeeker().getName(),
|
---|
62 | application.getJobSeeker().getEmail(),
|
---|
63 | application.getJobSeeker().getPhoneNumber(),
|
---|
64 | application.getJobAdvertisement().getRecruiter().getName(),
|
---|
65 | application.getJobAdvertisement().getRecruiter().getEmail(),
|
---|
66 | application.getJobAdvertisement().getRecruiter().getPhoneNumber(),
|
---|
67 | application.getJobAdvertisement().getId(),
|
---|
68 | application.getJobAdvertisement().getTitle(),
|
---|
69 | application.getQuestionAnswers(),
|
---|
70 | application.getResumeFileName(),
|
---|
71 | application.getMessage(),
|
---|
72 | application.getSubmittedOn(),
|
---|
73 | application.getStatus().name()
|
---|
74 | );
|
---|
75 | }
|
---|
76 | }
|
---|