source: jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/controllers/ApplicationController.java

main
Last change on this file was 08f82ec, checked in by 223021 <daniel.ilievski.2@…>, 13 days ago

Did more refactoring

  • Property mode set to 100644
File size: 3.6 KB
Line 
1package mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.controllers;
2
3import lombok.AllArgsConstructor;
4import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.applications.Application;
5import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.applications.DTO.ApplicationDTO;
6import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.applications.DTO.ApplicationDetailsDTO;
7import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.applications.DTO.ApplicationStatusDTO;
8import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.service.intef.ApplicationService;
9import org.springframework.http.HttpStatus;
10import org.springframework.http.MediaType;
11import org.springframework.http.ResponseEntity;
12import org.springframework.web.bind.annotation.*;
13import org.springframework.web.multipart.MultipartFile;
14import org.springframework.core.io.Resource;
15import org.springframework.http.HttpHeaders;
16
17import java.util.List;
18
19@RestController
20@RequestMapping("/api")
21@AllArgsConstructor
22@CrossOrigin(origins = "*")
23public 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("/applications/{id}/download-resume")
45 public ResponseEntity<Resource> downloadResume(@PathVariable("id") Long applicationId) {
46 Resource resource = applicationService.loadResumeAsResource(applicationId);
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("/applications/submit")
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,
64 resumeFile, answerOne, answerTwo, answerThree, messageToRecruiter);
65 ApplicationDetailsDTO applicationDetailsDTO = applicationService.submitApplication(applicationDTO);
66 return new ResponseEntity<>(applicationDetailsDTO, HttpStatus.OK);
67 }
68}
Note: See TracBrowser for help on using the repository browser.