[28b3398] | 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 | }
|
---|