diff --git a/src/main/java/_11/asktpk/artisanconnectbackend/controller/NoticeController.java b/src/main/java/_11/asktpk/artisanconnectbackend/controller/NoticeController.java index eb204f4..fcafd7c 100644 --- a/src/main/java/_11/asktpk/artisanconnectbackend/controller/NoticeController.java +++ b/src/main/java/_11/asktpk/artisanconnectbackend/controller/NoticeController.java @@ -106,4 +106,15 @@ public class NoticeController { return new ResponseEntity<>(HttpStatus.NOT_FOUND); } } + + @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."); + } + noticeService.boostNotice(id); + + return ResponseEntity.ok("Ogłoszenie zostało pomyślnie wypromowane."); + } } diff --git a/src/main/java/_11/asktpk/artisanconnectbackend/repository/NoticeRepository.java b/src/main/java/_11/asktpk/artisanconnectbackend/repository/NoticeRepository.java index 6490053..d2b3387 100644 --- a/src/main/java/_11/asktpk/artisanconnectbackend/repository/NoticeRepository.java +++ b/src/main/java/_11/asktpk/artisanconnectbackend/repository/NoticeRepository.java @@ -5,4 +5,7 @@ import _11.asktpk.artisanconnectbackend.entities.Notice; import org.springframework.data.jpa.repository.JpaRepository; public interface NoticeRepository extends JpaRepository { + + boolean existsByIdNoticeAndClientId(long noticeId, long clientId); + } diff --git a/src/main/java/_11/asktpk/artisanconnectbackend/service/NoticeService.java b/src/main/java/_11/asktpk/artisanconnectbackend/service/NoticeService.java index 46d6058..493245c 100644 --- a/src/main/java/_11/asktpk/artisanconnectbackend/service/NoticeService.java +++ b/src/main/java/_11/asktpk/artisanconnectbackend/service/NoticeService.java @@ -9,6 +9,7 @@ import _11.asktpk.artisanconnectbackend.dto.NoticeDTO; import jakarta.persistence.EntityNotFoundException; import org.springframework.stereotype.Service; +import java.time.LocalDateTime; import java.util.ArrayList; import java.util.List; import java.util.Optional; @@ -119,4 +120,20 @@ public class NoticeService { throw new EntityNotFoundException("Nie znaleziono ogłoszenia o ID: " + id); } } + + public boolean isNoticeOwnedByClient(long noticeId, long clientId) { + return noticeRepository.existsByIdNoticeAndClientId(noticeId, clientId); + } + + public void boostNotice(long noticeId) { + Notice notice = noticeRepository.findById(noticeId) + .orElseThrow(() -> new EntityNotFoundException("Ogłoszenie o ID " + noticeId + " nie istnieje.")); + + notice.setPublishDate(LocalDateTime.now()); + + noticeRepository.save(notice); + + } + + }