diff --git a/src/main/java/com/sellbycar/marketplace/ad/AdvertisementServiceImpl.java b/src/main/java/com/sellbycar/marketplace/ad/AdvertisementServiceImpl.java index cabefbc..d96cbf0 100644 --- a/src/main/java/com/sellbycar/marketplace/ad/AdvertisementServiceImpl.java +++ b/src/main/java/com/sellbycar/marketplace/ad/AdvertisementServiceImpl.java @@ -5,6 +5,7 @@ import com.sellbycar.marketplace.image.ImageDAO; import com.sellbycar.marketplace.image.ImageService; import com.sellbycar.marketplace.user.UserDAO; +import com.sellbycar.marketplace.user.UserRepository; import com.sellbycar.marketplace.user.UserService; import com.sellbycar.marketplace.util.exception.RequestException; import jakarta.transaction.Transactional; @@ -32,6 +33,7 @@ public class AdvertisementServiceImpl implements AdvertisementService { private final UserService userService; private final AdvertisementMapper advertisementMapper; private final ImageService imageService; + private final UserRepository userRepository; @Override public List findAdvertisements(AdvertisementFilter filter, Sort sort, int page, int size) { @@ -114,7 +116,8 @@ public AdvertisementDAO addToFavoriteList(Long id) { UserDAO user = userService.getUserFromSecurityContextHolder(); AdvertisementDAO advertisement = advertisementRepository.findById(id) .orElseThrow(() -> RequestException.notFound("Advertisement does not exist.")); - user.getFavorites().add(advertisement); + user.addFavorite(advertisement); + userRepository.save(user); return advertisement; } @@ -123,7 +126,8 @@ public void removeFromFavoriteList(Long id) { UserDAO user = userService.getUserFromSecurityContextHolder(); AdvertisementDAO advertisement = advertisementRepository.findById(id) .orElseThrow(() -> RequestException.notFound("Advertisement does not exist.")); - user.getFavorites().remove(advertisement); + user.removeFavorite(advertisement); + userRepository.save(user); } @Transactional diff --git a/src/main/java/com/sellbycar/marketplace/user/UserDAO.java b/src/main/java/com/sellbycar/marketplace/user/UserDAO.java index f58b2af..f0bb1c0 100644 --- a/src/main/java/com/sellbycar/marketplace/user/UserDAO.java +++ b/src/main/java/com/sellbycar/marketplace/user/UserDAO.java @@ -71,4 +71,18 @@ public class UserDAO implements Serializable { @OneToMany(mappedBy = "user", cascade = CascadeType.ALL) private Set advertisements; + + public void addFavorite(AdvertisementDAO advertisement) { + if (favorites == null) { + favorites = Set.of(advertisement); + } else { + favorites.add(advertisement); + } + } + + public void removeFavorite(AdvertisementDAO advertisement) { + if (favorites != null) { + favorites.remove(advertisement); + } + } }