From fdf99a1b5a97973119fbd826c0122ac7717cbda0 Mon Sep 17 00:00:00 2001 From: Djawad0 Date: Mon, 16 Jun 2025 12:24:01 +0200 Subject: [PATCH] correction calculateRewards --- .../tourguide/service/RewardsService.java | 28 +++++++++---------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/TourGuide/src/main/java/com/openclassrooms/tourguide/service/RewardsService.java b/TourGuide/src/main/java/com/openclassrooms/tourguide/service/RewardsService.java index 885f4b2299..5718efd632 100644 --- a/TourGuide/src/main/java/com/openclassrooms/tourguide/service/RewardsService.java +++ b/TourGuide/src/main/java/com/openclassrooms/tourguide/service/RewardsService.java @@ -1,9 +1,14 @@ package com.openclassrooms.tourguide.service; import java.util.ArrayList; +import java.util.HashSet; +import java.util.Iterator; import java.util.List; +import java.util.Set; import java.util.concurrent.CompletableFuture; +import java.util.concurrent.CopyOnWriteArrayList; import java.util.concurrent.ExecutorService; +import java.util.stream.Collectors; import org.springframework.stereotype.Service; @@ -44,21 +49,16 @@ public CompletableFuture calculateRewardsAsync(User user, ExecutorService } public void calculateRewards(User user) { - List userLocations = user.getVisitedLocations(); List attractions = gpsUtil.getAttractions(); - - for(int i = 0; i < userLocations.size(); i++) { - for(int j = 0; j < attractions.size(); j++) { - Attraction attraction = attractions.get(j); - VisitedLocation visitedLocation = userLocations.get(i); - - if(user.getUserRewards().stream().filter(r -> r.attraction.attractionName.equals(attraction.attractionName)).count() == 0) { - if(nearAttraction(visitedLocation, attraction)) { - user.addUserReward(new UserReward(visitedLocation, attraction, getRewardPoints(attraction, user))); - } - } - } - } + + for(VisitedLocation visitedLocation : new ArrayList<>(user.getVisitedLocations())) { + for(Attraction attraction : attractions) { + if(user.getUserRewards().stream().filter(r -> r.attraction.attractionName.equals(attraction.attractionName)).count() == 0 + && nearAttraction(visitedLocation, attraction)) { + user.addUserReward(new UserReward(visitedLocation, attraction, getRewardPoints(attraction, user))); + } + } + } } public boolean isWithinAttractionProximity(Attraction attraction, Location location) {