1 | package mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.controllers;
|
---|
2 |
|
---|
3 | import lombok.AllArgsConstructor;
|
---|
4 | import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.applications.Application;
|
---|
5 | import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.applications.DTO.ApplicationDTO;
|
---|
6 | import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.applications.DTO.ApplicationDetailsDTO;
|
---|
7 | import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.applications.DTO.ApplicationStatusDTO;
|
---|
8 | import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.service.intef.ApplicationService;
|
---|
9 | import org.springframework.http.HttpStatus;
|
---|
10 | import org.springframework.http.MediaType;
|
---|
11 | import org.springframework.http.ResponseEntity;
|
---|
12 | import org.springframework.web.bind.annotation.*;
|
---|
13 | import org.springframework.web.multipart.MultipartFile;
|
---|
14 | import org.springframework.core.io.Resource;
|
---|
15 | import org.springframework.http.HttpHeaders;
|
---|
16 |
|
---|
17 | import java.util.List;
|
---|
18 |
|
---|
19 | @RestController
|
---|
20 | @RequestMapping("/api")
|
---|
21 | @AllArgsConstructor
|
---|
22 | @CrossOrigin(origins = "*")
|
---|
23 | public class ApplicationController {
|
---|
24 | private final ApplicationService applicationService;
|
---|
25 |
|
---|
26 | @GetMapping("/my-applications/{id}")
|
---|
27 | public ResponseEntity<?> findAllApplicationsByJobSeekerId(@PathVariable Long id) {
|
---|
28 | List<ApplicationDetailsDTO> applicationList = applicationService.findAllByJobSeekerId(id);
|
---|
29 | return new ResponseEntity<>(applicationList, HttpStatus.OK);
|
---|
30 | }
|
---|
31 |
|
---|
32 | @GetMapping("/job-advertisements/{advertisement_id}/applications")
|
---|
33 | public ResponseEntity<?> findAllApplicationsByJobAdvertisementId(@PathVariable("advertisement_id") Long advertisementId) {
|
---|
34 | List<ApplicationDetailsDTO> applicationList = applicationService.findAllByJobAdvertisementId(advertisementId);
|
---|
35 | return new ResponseEntity<>(applicationList, HttpStatus.OK);
|
---|
36 | }
|
---|
37 |
|
---|
38 | @PostMapping("/applications/{id}/update")
|
---|
39 | public ResponseEntity<?> updateApplicationStatus(@PathVariable("id") Long applicaitonId, @RequestBody ApplicationStatusDTO appStatusDTO) {
|
---|
40 | ApplicationStatusDTO applicationStatusDTO = applicationService.updateApplicationStatus(applicaitonId,appStatusDTO.getStatus());
|
---|
41 | return new ResponseEntity<>(applicationStatusDTO, HttpStatus.OK);
|
---|
42 | }
|
---|
43 |
|
---|
44 | @GetMapping("/resume/{fileName:.+}")
|
---|
45 | public ResponseEntity<Resource> downloadResume(@PathVariable("fileName") String fileName) {
|
---|
46 | Resource resource = applicationService.loadResumeAsResource(fileName);
|
---|
47 | return ResponseEntity.ok()
|
---|
48 | .contentType(MediaType.APPLICATION_PDF)
|
---|
49 | .header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=\"" + resource.getFilename() + "\"")
|
---|
50 | .body(resource);
|
---|
51 | }
|
---|
52 |
|
---|
53 | @PostMapping("/job-advertisements/apply")
|
---|
54 | public ResponseEntity<ApplicationDetailsDTO> submitApplication(
|
---|
55 | @RequestParam("jobSeekerId") Long jobSeekerId,
|
---|
56 | @RequestParam("jobAdId") Long jobAdId,
|
---|
57 | @RequestParam("resumeFile") MultipartFile resumeFile,
|
---|
58 | @RequestParam("answerOne") String answerOne,
|
---|
59 | @RequestParam("answerTwo") String answerTwo,
|
---|
60 | @RequestParam("answerThree") String answerThree,
|
---|
61 | @RequestParam("messageToRecruiter") String messageToRecruiter) {
|
---|
62 |
|
---|
63 | ApplicationDTO applicationDTO = new ApplicationDTO(jobSeekerId, jobAdId, resumeFile, answerOne, answerTwo, answerThree, messageToRecruiter);
|
---|
64 | ApplicationDetailsDTO applicationDetailsDTO = applicationService.submitApplication(applicationDTO);
|
---|
65 | return new ResponseEntity<>(applicationDetailsDTO, HttpStatus.OK);
|
---|
66 | }
|
---|
67 |
|
---|
68 | }
|
---|