3 Commits

Author SHA1 Message Date
3d205df038 few cosmetic fixes 2025-05-14 08:35:33 +02:00
Patryk
5ccfc6ba2c change repository to service in wishlist, add @Lazy 2025-05-13 20:54:44 +02:00
Patryk
f0e3a129d0 change repository to service in wishlist, add @Lazy 2025-05-13 20:54:39 +02:00
5 changed files with 24 additions and 38 deletions

View File

@@ -48,7 +48,6 @@ public class NoticeController {
if (dto.getCategory() == null) { if (dto.getCategory() == null) {
return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(new NoticeAdditionDTO("Nie ma takiej kategorii")); return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(new NoticeAdditionDTO("Nie ma takiej kategorii"));
} }
dto.setPublishDate(java.time.LocalDateTime.now()); dto.setPublishDate(java.time.LocalDateTime.now());
Long newNoticeId = noticeService.addNotice(dto); Long newNoticeId = noticeService.addNotice(dto);
@@ -56,7 +55,6 @@ public class NoticeController {
return ResponseEntity.status(HttpStatus.CREATED).body(new NoticeAdditionDTO(newNoticeId ,"Dodano ogłoszenie.")); return ResponseEntity.status(HttpStatus.CREATED).body(new NoticeAdditionDTO(newNoticeId ,"Dodano ogłoszenie."));
} }
// TODO: zamiast dodawać tutaj pętlą, musi to robić NoticeService, trzeba zaimplementować odpowienią metodę // TODO: zamiast dodawać tutaj pętlą, musi to robić NoticeService, trzeba zaimplementować odpowienią metodę
@PostMapping("/bulk_add") @PostMapping("/bulk_add")
public ResponseEntity<String> addNotices(@RequestBody List<NoticeDTO> notices_list) { public ResponseEntity<String> addNotices(@RequestBody List<NoticeDTO> notices_list) {

View File

@@ -3,7 +3,6 @@ package _11.asktpk.artisanconnectbackend.controller;
import _11.asktpk.artisanconnectbackend.dto.NoticeDTO; import _11.asktpk.artisanconnectbackend.dto.NoticeDTO;
import _11.asktpk.artisanconnectbackend.dto.RequestResponseDTO; import _11.asktpk.artisanconnectbackend.dto.RequestResponseDTO;
import _11.asktpk.artisanconnectbackend.dto.WishlistDTO; import _11.asktpk.artisanconnectbackend.dto.WishlistDTO;
import _11.asktpk.artisanconnectbackend.entities.Wishlist;
import _11.asktpk.artisanconnectbackend.service.ClientService; import _11.asktpk.artisanconnectbackend.service.ClientService;
import _11.asktpk.artisanconnectbackend.service.NoticeService; import _11.asktpk.artisanconnectbackend.service.NoticeService;
import _11.asktpk.artisanconnectbackend.service.WishlistService; import _11.asktpk.artisanconnectbackend.service.WishlistService;
@@ -15,7 +14,6 @@ import java.util.List;
@RestController @RestController
@RequestMapping("/api/v1/wishlist") @RequestMapping("/api/v1/wishlist")
public class WishlistController { public class WishlistController {
private final WishlistService wishlistService; private final WishlistService wishlistService;
private final ClientService clientService; private final ClientService clientService;
private final NoticeService noticeService; private final NoticeService noticeService;
@@ -30,7 +28,6 @@ public class WishlistController {
public ResponseEntity<RequestResponseDTO> toggleWishlist(@RequestBody WishlistDTO wishlistDTO) { public ResponseEntity<RequestResponseDTO> toggleWishlist(@RequestBody WishlistDTO wishlistDTO) {
Long noticeId = wishlistDTO.getNoticeId(); Long noticeId = wishlistDTO.getNoticeId();
Long clientId = wishlistDTO.getClientId(); Long clientId = wishlistDTO.getClientId();
NoticeDTO noticeDTO = noticeService.getNoticeById(noticeId); NoticeDTO noticeDTO = noticeService.getNoticeById(noticeId);
if (noticeDTO == null) { if (noticeDTO == null) {
return ResponseEntity.badRequest().body(new RequestResponseDTO("Notice not found")); return ResponseEntity.badRequest().body(new RequestResponseDTO("Notice not found"));
@@ -47,21 +44,16 @@ public class WishlistController {
} }
} }
// @GetMapping("/{clientId}")
// public ResponseEntity<List<WishlistDTO>> getWishlist(@PathVariable Long clientId) {
@GetMapping("/{clientId}") // List<WishlistDTO> wishlist = wishlistService.getWishlistForClientId(clientId);
public ResponseEntity<List<WishlistDTO>> getWishlist(@PathVariable Long clientId) { // return ResponseEntity.ok(wishlist);
List<WishlistDTO> wishlist = wishlistService.getWishlistForClientId(clientId);
return ResponseEntity.ok(wishlist);
}
//
// @GetMapping("/get/all")
// public List<NoticeDTO> getAllNotices() {
// return noticeService.getAllNotices();
// } // }
@GetMapping("/")
public List<NoticeDTO> getWishlistForClient() { @GetMapping("/")
Long clientId =1L; public List<NoticeDTO> getWishlistForClient() {
return wishlistService.getNoticesInWishlist(clientId); // TODO: Replace with actual client ID from authentication context
} Long clientId = 1L;
return wishlistService.getNoticesInWishlist(clientId);
}
} }

View File

@@ -13,6 +13,4 @@ public interface WishlistRepository extends JpaRepository<Wishlist, Long> {
List<Wishlist> findAllByClientId(Long clientId); List<Wishlist> findAllByClientId(Long clientId);
Optional<Wishlist> findByClientAndNotice(Client client, Notice notice); Optional<Wishlist> findByClientAndNotice(Client client, Notice notice);
Boolean existsByClientAndNotice(Client client, Notice notice);
} }

View File

@@ -5,7 +5,7 @@ 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.repository.WishlistRepository; //import _11.asktpk.artisanconnectbackend.service.WishlistService;
import jakarta.persistence.EntityNotFoundException; import jakarta.persistence.EntityNotFoundException;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@@ -18,12 +18,12 @@ public class NoticeService {
private final NoticeRepository noticeRepository; private final NoticeRepository noticeRepository;
private final ClientRepository clientRepository; private final ClientRepository clientRepository;
private final WishlistRepository wishlistRepository; private final WishlistService wishlistService;
public NoticeService(NoticeRepository noticeRepository, ClientRepository clientRepository,WishlistRepository wishlistRepository) { public NoticeService(NoticeRepository noticeRepository, ClientRepository clientRepository, WishlistService wishlistService) {
this.noticeRepository = noticeRepository; this.noticeRepository = noticeRepository;
this.clientRepository = clientRepository; this.clientRepository = clientRepository;
this.wishlistRepository = wishlistRepository;//serwis zamiast repository this.wishlistService = wishlistService;
} }
public Notice fromDTO(NoticeDTO dto) { public Notice fromDTO(NoticeDTO dto) {
@@ -45,11 +45,12 @@ public class NoticeService {
private NoticeDTO toDTO(Notice notice) { private NoticeDTO toDTO(Notice notice) {
NoticeDTO dto = new NoticeDTO(); NoticeDTO dto = new NoticeDTO();
// TODO: To be updated using AuthService after implementing authentication.
Optional<Client> client = clientRepository.findById(1L); Optional<Client> client = clientRepository.findById(1L);
boolean isWishlisted = false; boolean isWishlisted = false;
if (client.isPresent()) { if (client.isPresent()) {
Client c = client.get(); Client c = client.get();
isWishlisted = wishlistRepository.existsByClientAndNotice(c,notice); isWishlisted = wishlistService.isWishlisted(c, notice);
} }
dto.setNoticeId(notice.getIdNotice()); dto.setNoticeId(notice.getIdNotice());
dto.setTitle(notice.getTitle()); dto.setTitle(notice.getTitle());
@@ -77,10 +78,10 @@ public class NoticeService {
.orElseThrow(() -> new EntityNotFoundException("Nie znaleziono ogłoszenia o ID: " + id)); .orElseThrow(() -> new EntityNotFoundException("Nie znaleziono ogłoszenia o ID: " + id));
return toDTO(notice); return toDTO(notice);
} }
public Notice getNoticeByIdEntity(Long id) { public Notice getNoticeByIdEntity(Long id) {
Notice notice = noticeRepository.findById(id) return noticeRepository.findById(id)
.orElseThrow(() -> new EntityNotFoundException("Nie znaleziono ogłoszenia o ID: " + id)); .orElseThrow(() -> new EntityNotFoundException("Nie znaleziono ogłoszenia o ID: " + id));
return notice;
} }
public Long addNotice(NoticeDTO dto) { public Long addNotice(NoticeDTO dto) {

View File

@@ -2,25 +2,26 @@ package _11.asktpk.artisanconnectbackend.service;
import _11.asktpk.artisanconnectbackend.dto.WishlistDTO; import _11.asktpk.artisanconnectbackend.dto.WishlistDTO;
import _11.asktpk.artisanconnectbackend.dto.NoticeDTO; import _11.asktpk.artisanconnectbackend.dto.NoticeDTO;
import _11.asktpk.artisanconnectbackend.service.NoticeService;
import _11.asktpk.artisanconnectbackend.entities.Client; import _11.asktpk.artisanconnectbackend.entities.Client;
import _11.asktpk.artisanconnectbackend.entities.Notice; import _11.asktpk.artisanconnectbackend.entities.Notice;
import _11.asktpk.artisanconnectbackend.entities.Wishlist; import _11.asktpk.artisanconnectbackend.entities.Wishlist;
import _11.asktpk.artisanconnectbackend.repository.WishlistRepository; import _11.asktpk.artisanconnectbackend.repository.WishlistRepository;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.List; import java.util.List;
import java.util.Optional; import java.util.Optional;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@Service @Service
public class WishlistService { public class WishlistService {
private final WishlistRepository wishlistRepository; private final WishlistRepository wishlistRepository;
private final NoticeService noticeService; private final NoticeService noticeService;
public WishlistService(WishlistRepository wishlistRepository, NoticeService noticeService) { public WishlistService(WishlistRepository wishlistRepository, @Lazy NoticeService noticeService) {
this.wishlistRepository = wishlistRepository; this.wishlistRepository = wishlistRepository;
this.noticeService = noticeService;//tak robimy this.noticeService = noticeService;
} }
public List<WishlistDTO> getWishlistForClientId(Long clientId) { public List<WishlistDTO> getWishlistForClientId(Long clientId) {
@@ -33,11 +34,7 @@ public class WishlistService {
public boolean isWishlisted(Client client, Notice notice) { public boolean isWishlisted(Client client, Notice notice) {
Optional<Wishlist> existingEntry = wishlistRepository.findByClientAndNotice(client, notice); Optional<Wishlist> existingEntry = wishlistRepository.findByClientAndNotice(client, notice);
if (existingEntry.isPresent()) { return existingEntry.isEmpty();
return false;
} else {
return true;
}
} }
public boolean toggleWishlist(Client client, Notice notice) { public boolean toggleWishlist(Client client, Notice notice) {