From 8fae9f1e55f14a44ba7252e6f64d302abcf4eb3d Mon Sep 17 00:00:00 2001 From: Andrii Solianyk Date: Tue, 20 May 2025 10:37:04 +0200 Subject: [PATCH] =?UTF-8?q?fix=20of=20Kiedy=20usuwasz=20og=C5=82oszenie,?= =?UTF-8?q?=20nie=20usuwaj=C4=85=20zdj=C4=99cia=20z=20bazy=20i=20z=20dysku?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/ImageController.java | 14 +++++----- .../service/NoticeService.java | 28 +++++++++++++++++-- 2 files changed, 33 insertions(+), 9 deletions(-) diff --git a/src/main/java/_11/asktpk/artisanconnectbackend/controller/ImageController.java b/src/main/java/_11/asktpk/artisanconnectbackend/controller/ImageController.java index ce85ce2..fbb173b 100644 --- a/src/main/java/_11/asktpk/artisanconnectbackend/controller/ImageController.java +++ b/src/main/java/_11/asktpk/artisanconnectbackend/controller/ImageController.java @@ -3,6 +3,7 @@ package _11.asktpk.artisanconnectbackend.controller; import _11.asktpk.artisanconnectbackend.dto.RequestResponseDTO; import _11.asktpk.artisanconnectbackend.service.ImageService; import _11.asktpk.artisanconnectbackend.service.NoticeService; +import jakarta.persistence.EntityNotFoundException; import org.springframework.beans.factory.annotation.Value; import org.springframework.core.io.Resource; import org.springframework.http.HttpStatus; @@ -63,18 +64,17 @@ public class ImageController { } @GetMapping("/list/{id}") - public ResponseEntity> getImagesNamesList(@PathVariable("id") Long noticeId) { - if(noticeId == null) { - return ResponseEntity.badRequest().body(Collections.singletonList("Notice ID is invalid or does not exist.")); - } - + public ResponseEntity getImagesNamesList(@PathVariable("id") Long noticeId) { List result; try { + noticeService.getNoticeById(noticeId); result = imageService.getImagesList(noticeId); + return ResponseEntity.ok(result); + } catch (EntityNotFoundException e) { + return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(new RequestResponseDTO(e.getMessage())); } catch (Exception e) { - return ResponseEntity.status(HttpStatus.NOT_FOUND).body(Collections.singletonList(e.getMessage())); + return ResponseEntity.status(HttpStatus.NOT_FOUND).body(new RequestResponseDTO(e.getMessage())); } - return ResponseEntity.ok(result); } @DeleteMapping("/delete/{filename}") diff --git a/src/main/java/_11/asktpk/artisanconnectbackend/service/NoticeService.java b/src/main/java/_11/asktpk/artisanconnectbackend/service/NoticeService.java index 493245c..c5fd8be 100644 --- a/src/main/java/_11/asktpk/artisanconnectbackend/service/NoticeService.java +++ b/src/main/java/_11/asktpk/artisanconnectbackend/service/NoticeService.java @@ -5,8 +5,10 @@ import _11.asktpk.artisanconnectbackend.entities.Notice; import _11.asktpk.artisanconnectbackend.repository.ClientRepository; import _11.asktpk.artisanconnectbackend.repository.NoticeRepository; import _11.asktpk.artisanconnectbackend.dto.NoticeDTO; -//import _11.asktpk.artisanconnectbackend.service.WishlistService; import jakarta.persistence.EntityNotFoundException; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import java.time.LocalDateTime; @@ -16,15 +18,21 @@ import java.util.Optional; @Service public class NoticeService { + private static final Logger logger = LogManager.getLogger(NoticeService.class); + + @Value("${file.upload-dir}") + private String uploadDir; private final NoticeRepository noticeRepository; private final ClientRepository clientRepository; private final WishlistService wishlistService; + private final ImageService imageService; - public NoticeService(NoticeRepository noticeRepository, ClientRepository clientRepository, WishlistService wishlistService) { + public NoticeService(NoticeRepository noticeRepository, ClientRepository clientRepository, WishlistService wishlistService, ImageService imageService) { this.noticeRepository = noticeRepository; this.clientRepository = clientRepository; this.wishlistService = wishlistService; + this.imageService = imageService; } public Notice fromDTO(NoticeDTO dto) { @@ -116,6 +124,22 @@ public class NoticeService { public void deleteNotice(Long id) { if (noticeExists(id)) { noticeRepository.deleteById(id); + + List imagesList = new ArrayList<>(); + + try { + imagesList = imageService.getImagesList(id); + } catch (Exception e) { + logger.info("There weren't any images for notice with ID: " + id + ". Skipping deletion of images. Message: " + e.getMessage()); + } + + try { + for (String imageName : imagesList) { + imageService.deleteImage(uploadDir, imageName); + } + } catch (Exception e) { + logger.info("There were some issues while deleting images for notice with ID: " + id + ". Message: " + e.getMessage()); + } } else { throw new EntityNotFoundException("Nie znaleziono ogłoszenia o ID: " + id); }