diff --git a/pom.xml b/pom.xml
index 2194186..ae0b196 100644
--- a/pom.xml
+++ b/pom.xml
@@ -10,7 +10,7 @@
_11.asktpk
ArtisanConnectBackend
- 0.0.1-SNAPSHOT
+ 1.0.0
ArtisanConnectBackend
ArtisanConnectBackend
@@ -34,31 +34,16 @@
org.springframework.boot
spring-boot-starter-data-jpa
-
- org.springframework.boot
- spring-boot-starter-data-rest
-
-
-
-
-
org.springframework.boot
spring-boot-starter-web
-
org.springframework.boot
spring-boot-devtools
runtime
true
-
-
-
-
-
-
org.postgresql
postgresql
@@ -73,15 +58,10 @@
org.springframework.boot
spring-boot-starter-actuator
-
-
-
-
-
com.squareup.okhttp3
okhttp
- 4.9.3
+ 4.12.0
org.projectlombok
@@ -93,11 +73,6 @@
jakarta.validation-api
3.1.0
-
-
-
-
-
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/controller/NoticeController.java b/src/main/java/_11/asktpk/artisanconnectbackend/controller/NoticeController.java
index fcafd7c..63bea89 100644
--- a/src/main/java/_11/asktpk/artisanconnectbackend/controller/NoticeController.java
+++ b/src/main/java/_11/asktpk/artisanconnectbackend/controller/NoticeController.java
@@ -1,6 +1,8 @@
package _11.asktpk.artisanconnectbackend.controller;
import _11.asktpk.artisanconnectbackend.dto.NoticeAdditionDTO;
+import _11.asktpk.artisanconnectbackend.dto.NoticeBoostDTO;
+import _11.asktpk.artisanconnectbackend.dto.RequestResponseDTO;
import _11.asktpk.artisanconnectbackend.service.ClientService;
import _11.asktpk.artisanconnectbackend.service.NoticeService;
import _11.asktpk.artisanconnectbackend.dto.NoticeDTO;
@@ -29,7 +31,7 @@ public class NoticeController {
}
@GetMapping("/get/{id}")
- public ResponseEntity getNoticeById(@PathVariable long id) {
+ public ResponseEntity> getNoticeById(@PathVariable long id) {
if (noticeService.noticeExists(id)) {
return ResponseEntity.ok(noticeService.getNoticeById(id));
} else {
@@ -98,23 +100,22 @@ public class NoticeController {
}
@DeleteMapping("/delete/{id}")
- public ResponseEntity deleteNotice(@PathVariable("id") long id) {
+ public ResponseEntity deleteNotice(@PathVariable("id") long id) {
if (noticeService.noticeExists(id)) {
noticeService.deleteNotice(id);
- return new ResponseEntity<>(HttpStatus.OK);
+ return ResponseEntity.status(HttpStatus.OK).body(new RequestResponseDTO("Pomyślnie usunięto ogłoszenie o ID: " + id));
} else {
- return new ResponseEntity<>(HttpStatus.NOT_FOUND);
+ return ResponseEntity.status(HttpStatus.NOT_FOUND).body(new RequestResponseDTO("Nie znaleziono ogłoszenia o ID: " + id));
}
}
@PostMapping("/boost/{id}")
- public ResponseEntity boostNotice(@PathVariable("id") long id) {
- long clientId = 1L;
- if (!noticeService.isNoticeOwnedByClient(id, clientId)) {
- throw new EntityNotFoundException("Ogłoszenie nie istnieje lub nie należy do zalogowanego klienta.");
+ public ResponseEntity boostNotice(@PathVariable("id") long clientId, @RequestBody NoticeBoostDTO dto) {
+ if (!noticeService.isNoticeOwnedByClient(dto.getNoticeId(), clientId)) {
+ return ResponseEntity.status(HttpStatus.NOT_FOUND).body(new RequestResponseDTO("Ogłoszenie nie istnieje lub nie należy do zalogowanego klienta."));
}
- noticeService.boostNotice(id);
+ noticeService.boostNotice(dto.getNoticeId());
- return ResponseEntity.ok("Ogłoszenie zostało pomyślnie wypromowane.");
+ return ResponseEntity.status(HttpStatus.OK).body(new RequestResponseDTO("Ogłoszenie zostało pomyślnie wypromowane."));
}
}
diff --git a/src/main/java/_11/asktpk/artisanconnectbackend/dto/NoticeBoostDTO.java b/src/main/java/_11/asktpk/artisanconnectbackend/dto/NoticeBoostDTO.java
new file mode 100644
index 0000000..d008dcc
--- /dev/null
+++ b/src/main/java/_11/asktpk/artisanconnectbackend/dto/NoticeBoostDTO.java
@@ -0,0 +1,9 @@
+package _11.asktpk.artisanconnectbackend.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+@Getter @Setter
+public class NoticeBoostDTO {
+ private Long noticeId;
+}
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);
}