source: jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/models/applications/Application.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.applications;
2
3import jakarta.persistence.*;
4import lombok.AllArgsConstructor;
5import lombok.Data;
6import lombok.NoArgsConstructor;
7import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.applications.DTO.ApplicationDetailsDTO;
8import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.enumerations.ApplicationStatus;
9import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.job_advertisements.JobAdvertisement;
10import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.users.JobSeeker;
11import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.users.User;
12
13import java.time.LocalDateTime;
14import java.util.HashMap;
15import java.util.List;
16
17@Entity
18@NoArgsConstructor
19@AllArgsConstructor
20@Data
21@Table(name = "applications")
22public 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}
Note: See TracBrowser for help on using the repository browser.