source: jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/service/impl/JobSeekerServiceImpl.java@ 0f0add0

main
Last change on this file since 0f0add0 was 08f82ec, checked in by 223021 <daniel.ilievski.2@…>, 2 weeks ago

Did more refactoring

  • Property mode set to 100644
File size: 4.5 KB
Line 
1package mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.service.impl;
2
3import lombok.RequiredArgsConstructor;
4import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.users.DTO.JobSeekerEditDetailsDTO;
5import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.users.JobSeeker;
6import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.users.mappers.JobSeekerMapper;
7import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.repositories.JobSeekerRepository;
8import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.service.intef.JobSeekerService;
9import org.springframework.beans.factory.annotation.Autowired;
10import org.springframework.beans.factory.annotation.Value;
11import org.springframework.core.io.Resource;
12import org.springframework.core.io.UrlResource;
13import org.springframework.stereotype.Service;
14import org.springframework.web.multipart.MultipartFile;
15
16import java.io.IOException;
17import java.nio.file.Files;
18import java.nio.file.Path;
19import java.nio.file.Paths;
20import java.nio.file.StandardCopyOption;
21
22@Service
23@RequiredArgsConstructor
24public class JobSeekerServiceImpl implements JobSeekerService {
25
26 private final JobSeekerRepository jobSeekerRepository;
27 private final Path profilePicStorageLocation;
28
29 @Autowired
30 JobSeekerServiceImpl(@Value("./uploads") String uploadDir, JobSeekerRepository jobSeekerRepository) {
31 this.jobSeekerRepository = jobSeekerRepository;
32
33 this.profilePicStorageLocation = Paths.get(uploadDir + "/job-seekers").toAbsolutePath().normalize();
34 try {
35 Files.createDirectories(this.profilePicStorageLocation);
36 } catch (IOException ex) {
37 throw new RuntimeException("Could not create the directory where the uploaded files will be stored.", ex);
38 }
39 }
40
41 @Override
42 public JobSeekerEditDetailsDTO editJobSeekerDetailsById(Long jobSeekerId, JobSeekerEditDetailsDTO jobSeekerEditDetailsDTO) {
43 JobSeeker jobSeeker = jobSeekerRepository.findById(jobSeekerId).orElse(null);
44 jobSeeker.setEmail(jobSeekerEditDetailsDTO.getEmail());
45 jobSeeker.setFirstName(jobSeekerEditDetailsDTO.getFirstName());
46 jobSeeker.setLastName(jobSeekerEditDetailsDTO.getLastName());
47 jobSeeker.setPhoneNumber(jobSeekerEditDetailsDTO.getPhoneNumber());
48 jobSeekerRepository.save(jobSeeker);
49 return JobSeekerMapper.mapToJobSeekerEditDetailsDTO(jobSeeker);
50 }
51
52 @Override
53 public JobSeekerEditDetailsDTO getJobSeekerEditDetailsById(Long jobSeekerId) {
54 JobSeeker jobSeeker = jobSeekerRepository.findById(jobSeekerId).orElse(null);
55 return JobSeekerMapper.mapToJobSeekerEditDetailsDTO(jobSeeker);
56 }
57
58 @Override
59 public void submitProfilePic(Long jobSeekerId, MultipartFile profilePicFile) {
60 Path jobSeekerProfilePicDir = this.profilePicStorageLocation.resolve(String.valueOf(jobSeekerId)).resolve("profile-pics");
61
62 try {
63 Files.createDirectories(jobSeekerProfilePicDir);
64 String originalFileName = profilePicFile.getOriginalFilename();
65
66 if(originalFileName != null) {
67 Path targetLocation = jobSeekerProfilePicDir.resolve(originalFileName);
68 Files.copy(profilePicFile.getInputStream(), targetLocation, StandardCopyOption.REPLACE_EXISTING);
69
70 JobSeeker jobSeeker = jobSeekerRepository.findById(jobSeekerId).orElse(null);
71 String relativePath = Paths.get("uploads", "job-seekers", String.valueOf(jobSeekerId), "profile-pics", originalFileName).toString();
72
73 jobSeeker.setProfilePicFilePath(relativePath);
74 jobSeekerRepository.save(jobSeeker);
75 }
76 } catch (IOException e) {
77 throw new RuntimeException(e);
78 }
79 }
80
81 @Override
82 public Resource loadProfilePicAsResource(Long jobSeekerId) {
83 JobSeeker jobSeeker = jobSeekerRepository.findById(jobSeekerId)
84 .orElseThrow(() -> new RuntimeException("Job Seeker not found"));
85
86 try {
87 String relativeProfilePicPath = jobSeeker.getProfilePicFilePath();
88 Path profilePicPath = profilePicStorageLocation.getParent().getParent().resolve(relativeProfilePicPath);
89 Resource resource = new UrlResource(profilePicPath.toUri());
90 if(resource.exists()) {
91 return resource;
92 } else {
93 throw new RuntimeException("Could not find profile pic at " + profilePicPath);
94 }
95 } catch (IOException ex) {
96 throw new RuntimeException(ex);
97 }
98
99
100 }
101}
Note: See TracBrowser for help on using the repository browser.