fix of Kiedy usuwasz ogłoszenie, nie usuwają zdjęcia z bazy i z dysku
This commit is contained in:
@@ -3,6 +3,7 @@ package _11.asktpk.artisanconnectbackend.controller;
|
|||||||
import _11.asktpk.artisanconnectbackend.dto.RequestResponseDTO;
|
import _11.asktpk.artisanconnectbackend.dto.RequestResponseDTO;
|
||||||
import _11.asktpk.artisanconnectbackend.service.ImageService;
|
import _11.asktpk.artisanconnectbackend.service.ImageService;
|
||||||
import _11.asktpk.artisanconnectbackend.service.NoticeService;
|
import _11.asktpk.artisanconnectbackend.service.NoticeService;
|
||||||
|
import jakarta.persistence.EntityNotFoundException;
|
||||||
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
import org.springframework.core.io.Resource;
|
import org.springframework.core.io.Resource;
|
||||||
import org.springframework.http.HttpStatus;
|
import org.springframework.http.HttpStatus;
|
||||||
@@ -63,18 +64,17 @@ public class ImageController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/list/{id}")
|
@GetMapping("/list/{id}")
|
||||||
public ResponseEntity<List<String>> getImagesNamesList(@PathVariable("id") Long noticeId) {
|
public ResponseEntity<?> getImagesNamesList(@PathVariable("id") Long noticeId) {
|
||||||
if(noticeId == null) {
|
|
||||||
return ResponseEntity.badRequest().body(Collections.singletonList("Notice ID is invalid or does not exist."));
|
|
||||||
}
|
|
||||||
|
|
||||||
List<String> result;
|
List<String> result;
|
||||||
try {
|
try {
|
||||||
|
noticeService.getNoticeById(noticeId);
|
||||||
result = imageService.getImagesList(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) {
|
} 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}")
|
@DeleteMapping("/delete/{filename}")
|
||||||
|
|||||||
@@ -5,8 +5,10 @@ import _11.asktpk.artisanconnectbackend.entities.Notice;
|
|||||||
import _11.asktpk.artisanconnectbackend.repository.ClientRepository;
|
import _11.asktpk.artisanconnectbackend.repository.ClientRepository;
|
||||||
import _11.asktpk.artisanconnectbackend.repository.NoticeRepository;
|
import _11.asktpk.artisanconnectbackend.repository.NoticeRepository;
|
||||||
import _11.asktpk.artisanconnectbackend.dto.NoticeDTO;
|
import _11.asktpk.artisanconnectbackend.dto.NoticeDTO;
|
||||||
//import _11.asktpk.artisanconnectbackend.service.WishlistService;
|
|
||||||
import jakarta.persistence.EntityNotFoundException;
|
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 org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
@@ -16,15 +18,21 @@ import java.util.Optional;
|
|||||||
|
|
||||||
@Service
|
@Service
|
||||||
public class NoticeService {
|
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 NoticeRepository noticeRepository;
|
||||||
private final ClientRepository clientRepository;
|
private final ClientRepository clientRepository;
|
||||||
private final WishlistService wishlistService;
|
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.noticeRepository = noticeRepository;
|
||||||
this.clientRepository = clientRepository;
|
this.clientRepository = clientRepository;
|
||||||
this.wishlistService = wishlistService;
|
this.wishlistService = wishlistService;
|
||||||
|
this.imageService = imageService;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Notice fromDTO(NoticeDTO dto) {
|
public Notice fromDTO(NoticeDTO dto) {
|
||||||
@@ -116,6 +124,22 @@ public class NoticeService {
|
|||||||
public void deleteNotice(Long id) {
|
public void deleteNotice(Long id) {
|
||||||
if (noticeExists(id)) {
|
if (noticeExists(id)) {
|
||||||
noticeRepository.deleteById(id);
|
noticeRepository.deleteById(id);
|
||||||
|
|
||||||
|
List<String> 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 {
|
} else {
|
||||||
throw new EntityNotFoundException("Nie znaleziono ogłoszenia o ID: " + id);
|
throw new EntityNotFoundException("Nie znaleziono ogłoszenia o ID: " + id);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user