Changes in / [dd7a2b6:0391097]
- Location:
- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo
- Files:
-
- 1 deleted
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/config/WebSecurityConfig.java
rdd7a2b6 r0391097 71 71 .allowedHeaders("*") 72 72 .allowCredentials(true); 73 74 registry.addMapping("/uploads/**")75 .allowedOrigins("http://localhost:5173")76 .allowedMethods("*")// maybe should be only GET77 .allowedHeaders("*");78 73 } 79 74 }; -
ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/impl/FileStorageServiceImpl.java
rdd7a2b6 r0391097 15 15 public class FileStorageServiceImpl implements FileStorageService { 16 16 17 private final Path rootUploadsDir = Paths.get("uploads"); 18 private final Path logosDir = rootUploadsDir.resolve("logos"); 19 private final Path localsDir = rootUploadsDir.resolve("locals"); 17 private final Path uploadDirectory = Paths.get("uploads"); 20 18 21 19 public FileStorageServiceImpl() throws IOException { 22 Files.createDirectories(rootUploadsDir); 23 Files.createDirectories(logosDir); 24 Files.createDirectories(localsDir); 20 Files.createDirectories(uploadDirectory); 25 21 } 26 22 27 23 @Override 28 public String save LogoFile(MultipartFile file) {24 public String saveFile(MultipartFile file) { 29 25 try { 30 26 String fileName = UUID.randomUUID() + "_" + file.getOriginalFilename(); 31 Path target = logosDir.resolve(fileName);27 Path target = uploadDirectory.resolve(fileName); 32 28 Files.copy(file.getInputStream(), target, StandardCopyOption.REPLACE_EXISTING); 33 return "/uploads/ logos/" + fileName;29 return "/uploads/" + fileName; 34 30 } catch (IOException e) { 35 throw new RuntimeException("Failed to save logo", e); 36 } 37 } 38 39 @Override 40 public String saveLocalPhoto(Long localId, MultipartFile file) { 41 try { 42 Path localFolder = localsDir.resolve(String.valueOf(localId)); 43 Files.createDirectories(localFolder); 44 String fileName = UUID.randomUUID() + "_" + file.getOriginalFilename(); 45 Path target = localFolder.resolve(fileName); 46 Files.copy(file.getInputStream(), target, StandardCopyOption.REPLACE_EXISTING); 47 return "/uploads/locals/" + localId + "/" + fileName; 48 } catch (IOException e) { 49 throw new RuntimeException("Failed to save local photo", e); 31 throw new RuntimeException("Failed to save file", e); 50 32 } 51 33 } -
ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/impl/LocalManagerServiceImpl.java
rdd7a2b6 r0391097 4 4 import mk.ukim.finki.it.reservengo.model.domain.LocalManager; 5 5 import mk.ukim.finki.it.reservengo.model.exceptions.LocalIdNotFoundException; 6 import mk.ukim.finki.it.reservengo.model.exceptions.LogoDeletionException;7 6 import mk.ukim.finki.it.reservengo.model.exceptions.UserEmailAlreadyExistsException; 8 7 import mk.ukim.finki.it.reservengo.repository.LocalManagerRepository; … … 13 12 import org.springframework.stereotype.Service; 14 13 import org.springframework.web.multipart.MultipartFile; 15 16 import java.io.IOException;17 import java.nio.file.Files;18 import java.nio.file.Path;19 import java.nio.file.Paths;20 import java.util.ArrayList;21 import java.util.List;22 14 23 15 @Service … … 40 32 Local local = localRepository.findById(localId).orElseThrow(() -> new LocalIdNotFoundException(localId)); 41 33 42 String logoPath = fileStorageService.save LogoFile(logoFile);34 String logoPath = fileStorageService.saveFile(logoFile); 43 35 local.setLogoUrl(logoPath); 44 36 … … 53 45 localManagerRepository.save(localManager); 54 46 } 55 56 @Override57 public void deleteLocalLogo(Long localId) {58 Local local = localRepository.findById(localId).orElseThrow(() -> new LocalIdNotFoundException(localId));59 String logoUrl = local.getLogoUrl();60 61 if (logoUrl != null && !logoUrl.isEmpty()) {62 Path filePath = Paths.get("uploads").resolve(Paths.get(logoUrl).getFileName().toString());63 64 try {65 Files.deleteIfExists(filePath);66 } catch (IOException e) {67 throw new LogoDeletionException("Failed to delete logo from path: " + filePath, e);68 }69 }70 local.setLogoUrl(null);71 localRepository.save(local);72 }73 74 @Override75 public void uploadPhotos(Long localId, List<MultipartFile> photos) {76 Local local = localRepository.findById(localId).orElseThrow(() -> new LocalIdNotFoundException(localId));77 78 List<String> photoPaths = local.getLocalPhotos();79 80 if (photoPaths == null) {81 photoPaths = new ArrayList<>();82 }83 84 for (MultipartFile photo : photos) {85 if (!photo.isEmpty()) {86 String filePath = fileStorageService.saveLocalPhoto(localId, photo);87 photoPaths.add(filePath);88 }89 }90 local.setLocalPhotos(photoPaths);91 localRepository.save(local);92 }93 47 } -
ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/intf/FileStorageService.java
rdd7a2b6 r0391097 4 4 5 5 public interface FileStorageService { 6 String saveLogoFile(MultipartFile file); 7 String saveLocalPhoto(Long localId, MultipartFile file); 6 String saveFile(MultipartFile file); 8 7 } -
ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/intf/LocalManagerService.java
rdd7a2b6 r0391097 4 4 import org.springframework.web.multipart.MultipartFile; 5 5 6 import java.util.List;7 8 6 public interface LocalManagerService { 9 7 void uploadLogo(Long localId, MultipartFile logoFile); 10 8 11 9 void save(LocalManager localManager); 12 13 void deleteLocalLogo(Long localId);14 15 void uploadPhotos(Long localId, List<MultipartFile> photos);16 10 } -
ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/web/advice/GlobalExceptionHandler.java
rdd7a2b6 r0391097 56 56 return ResponseEntity.status(HttpStatus.CONFLICT).body(ex.getMessage()); 57 57 } 58 59 @ExceptionHandler(LogoDeletionException.class)60 public ResponseEntity<String> handleLogoDeletion(LogoDeletionException ex) {61 return ResponseEntity.status(HttpStatus.CONFLICT).body(ex.getMessage());62 }63 58 } 64 59 -
ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/web/controller/LocalManagerController.java
rdd7a2b6 r0391097 5 5 import org.springframework.web.bind.annotation.*; 6 6 import org.springframework.web.multipart.MultipartFile; 7 8 import java.util.List;9 7 10 8 @RestController … … 24 22 return ResponseEntity.ok().build(); 25 23 } 26 27 @DeleteMapping("/{localId}/delete-logo") 28 public ResponseEntity<?> deleteLocalLogo(@PathVariable Long localId) { 29 localManagerService.deleteLocalLogo(localId); 30 return ResponseEntity.ok().build(); 31 } 32 24 //TODO implement delete logo 33 25 @PostMapping("/{localId}/upload-photos") 34 public ResponseEntity<?> uploadPhotos(@PathVariable Long localId, 35 @RequestParam("photos") List<MultipartFile> photos) { 36 localManagerService.uploadPhotos(localId, photos); 26 //TODO implement this next 27 public ResponseEntity<?> uploadPhotos(@PathVariable Long localId) { 37 28 return ResponseEntity.ok().build(); 38 29 }
Note:
See TracChangeset
for help on using the changeset viewer.