diff --git a/src/main/java/local/epul4a/fotosharing/controller/PhotoController.java b/src/main/java/local/epul4a/fotosharing/controller/PhotoController.java index a0dfabd..ca40266 100644 --- a/src/main/java/local/epul4a/fotosharing/controller/PhotoController.java +++ b/src/main/java/local/epul4a/fotosharing/controller/PhotoController.java @@ -20,6 +20,8 @@ import org.springframework.web.multipart.MultipartFile; import java.net.URLEncoder; import java.nio.charset.StandardCharsets; +import java.util.HashMap; +import java.util.Map; @Controller public class PhotoController { @@ -84,7 +86,6 @@ public class PhotoController { /* ========================== MES PHOTOS ========================== */ - @GetMapping("/mes-photos") public String mesPhotos( @RequestParam(defaultValue = "0") int pagePrivees, @@ -92,30 +93,32 @@ public class PhotoController { @RequestParam(defaultValue = "0") int pagePartagees, @RequestParam(defaultValue = "0") int pageMesPartagees, Authentication auth, Model model) { - String email = auth.getName(); - - model.addAttribute("photosPrivees", - photoService.listPrivatePhotos(email, pagePrivees, 12)); - - model.addAttribute("photosPubliques", - photoService.listPublicPhotos(email, pagePubliques, 12)); - - model.addAttribute("photosPartagees", - photoService.listSharedWith(email, pagePartagees, 12)); - - model.addAttribute("mesPhotosPartagees", - photoService.listSharedPhotos(email, pageMesPartagees, 12)); - + // Récupération des pages + Page photosPrivees = photoService.listPrivatePhotos(email, pagePrivees, 12); + Page photosPubliques = photoService.listPublicPhotos(email, pagePubliques, 12); + Page photosPartagees = photoService.listSharedWith(email, pagePartagees, 12); + Page mesPhotosPartagees = photoService.listSharedPhotos(email, pageMesPartagees, 12); + // Calcul du nombre de partages pour TOUTES mes photos SHARED + Map shareCounts = new HashMap<>(); + mesPhotosPartagees.getContent().forEach(p -> { + shareCounts.put(p.getId(), partageService.countShares(p.getId())); + }); + // Envoi au model + model.addAttribute("photosPrivees", photosPrivees); + model.addAttribute("photosPubliques", photosPubliques); + model.addAttribute("photosPartagees", photosPartagees); + model.addAttribute("mesPhotosPartagees", mesPhotosPartagees); + model.addAttribute("shareCounts", shareCounts); model.addAttribute("pagePrivees", pagePrivees); model.addAttribute("pagePubliques", pagePubliques); model.addAttribute("pagePartagees", pagePartagees); model.addAttribute("pageMesPartagees", pageMesPartagees); - return "mes-photos"; } + /* ========================== GALERIE ========================== */ @GetMapping("/galerie") diff --git a/src/main/java/local/epul4a/fotosharing/repository/PartageRepository.java b/src/main/java/local/epul4a/fotosharing/repository/PartageRepository.java index 9c3a998..215ed96 100644 --- a/src/main/java/local/epul4a/fotosharing/repository/PartageRepository.java +++ b/src/main/java/local/epul4a/fotosharing/repository/PartageRepository.java @@ -12,4 +12,5 @@ public interface PartageRepository extends JpaRepository { boolean existsByPhoto_IdAndUtilisateur_Email(Long photoId, String email); List findByUtilisateur_Email(String email); Optional findByPhoto_IdAndUtilisateur_Email(Long photoId, String email); + int countByPhoto_Id(Long photoId); } diff --git a/src/main/java/local/epul4a/fotosharing/service/PartageService.java b/src/main/java/local/epul4a/fotosharing/service/PartageService.java index 1e36711..640cee8 100644 --- a/src/main/java/local/epul4a/fotosharing/service/PartageService.java +++ b/src/main/java/local/epul4a/fotosharing/service/PartageService.java @@ -14,4 +14,6 @@ public interface PartageService { boolean canComment(Long photoId, String email); boolean canAdmin(Long photoId, String email); void updatePermission(Long photoId, String targetEmail, String newPermission, String ownerEmail); + int countShares(Long photoId); + } diff --git a/src/main/java/local/epul4a/fotosharing/service/impl/PartageServiceImpl.java b/src/main/java/local/epul4a/fotosharing/service/impl/PartageServiceImpl.java index c4bad8d..6c432fb 100644 --- a/src/main/java/local/epul4a/fotosharing/service/impl/PartageServiceImpl.java +++ b/src/main/java/local/epul4a/fotosharing/service/impl/PartageServiceImpl.java @@ -140,5 +140,9 @@ public class PartageServiceImpl implements PartageService { partageRepository.save(partage); } + @Override + public int countShares(Long photoId) { + return partageRepository.countByPhoto_Id(photoId); + } } diff --git a/src/main/resources/templates/mes-photos.html b/src/main/resources/templates/mes-photos.html index 11329f4..569bc48 100644 --- a/src/main/resources/templates/mes-photos.html +++ b/src/main/resources/templates/mes-photos.html @@ -41,11 +41,17 @@

Mes photos partagées

-