From 89ffab9f41e37f7189a45c553fa3a2390e7d3e29 Mon Sep 17 00:00:00 2001
From: evilimkova <evilimkova@onpointserv.com>
Date: Tue, 4 Apr 2023 16:32:45 +0200
Subject: [PATCH] findCertificateByUserIdAndCourseId

---
 .../modulecertificate/service/CertificateController.java  | 8 ++++----
 .../modulecertificate/service/CertificateFacade.java      | 7 +++++++
 .../modulecertificate/service/CertificateRepository.java  | 4 ++++
 .../modulecertificate/service/CertificateService.java     | 5 +++++
 4 files changed, 20 insertions(+), 4 deletions(-)

diff --git a/application/module-certificate/src/main/java/org/fuseri/modulecertificate/service/CertificateController.java b/application/module-certificate/src/main/java/org/fuseri/modulecertificate/service/CertificateController.java
index c31cd05a..1fedbb67 100644
--- a/application/module-certificate/src/main/java/org/fuseri/modulecertificate/service/CertificateController.java
+++ b/application/module-certificate/src/main/java/org/fuseri/modulecertificate/service/CertificateController.java
@@ -67,11 +67,11 @@ public class CertificateController {
      * @param userId   ID of user to retrieve certificates for.
      * @param courseId ID of course to retrieve certificates for.
      * @return List of CertificateDto objects with previously generated certificates
-     * for specified User.
+     * for specified User and Course.
      */
-    @GetMapping("/getId")
-    public String getId(@RequestParam String userId, @RequestParam String courseId) {
-        return "0";
+    @GetMapping("/findForUserAndCourse")
+    public List<CertificateSimpleDto> findForUserAndCourse(@RequestParam Long userId, @RequestParam Long courseId) {
+        return certificateFacade.findByUserIdAndCourseId(userId, courseId);
     }
 
     /**
diff --git a/application/module-certificate/src/main/java/org/fuseri/modulecertificate/service/CertificateFacade.java b/application/module-certificate/src/main/java/org/fuseri/modulecertificate/service/CertificateFacade.java
index fe2084cc..0403330a 100644
--- a/application/module-certificate/src/main/java/org/fuseri/modulecertificate/service/CertificateFacade.java
+++ b/application/module-certificate/src/main/java/org/fuseri/modulecertificate/service/CertificateFacade.java
@@ -42,6 +42,13 @@ public class CertificateFacade {
     public List<CertificateSimpleDto> findByUserId(Long userId) {
         return certificateMapper.mapToList(certificateService.findByUserId(userId));
     }
+
+    @Cacheable(cacheNames = "certificates", key = "#userId")
+    @Transactional(readOnly = true)
+    public List<CertificateSimpleDto> findByUserIdAndCourseId(Long userId, Long courseId) {
+        return certificateMapper.mapToList(certificateService.findByUserIdAndCourseId(userId, courseId));
+    }
+
     //@Transactional(readOnly = true)
     //public Page<CertificateDto> findAll(Pageable pageable) {
         //return certificateMapper.mapToPageDto(certificateService.findAll(pageable));
diff --git a/application/module-certificate/src/main/java/org/fuseri/modulecertificate/service/CertificateRepository.java b/application/module-certificate/src/main/java/org/fuseri/modulecertificate/service/CertificateRepository.java
index 14c6fbd7..832d2d22 100644
--- a/application/module-certificate/src/main/java/org/fuseri/modulecertificate/service/CertificateRepository.java
+++ b/application/module-certificate/src/main/java/org/fuseri/modulecertificate/service/CertificateRepository.java
@@ -13,5 +13,9 @@ public interface CertificateRepository extends JpaRepository<Certificate, Long>
 
     @Query("SELECT c FROM Certificate c WHERE c.userId = ?1")
     List<Certificate> findCertificateByUserId(Long userId);
+
+    @Query("SELECT c FROM Certificate c WHERE c.userId = ?1 and c.courseId = ?2")
+    List<Certificate> findCertificateByUserIdAndCourseId(Long userId, Long courseId);
+
 }
 
diff --git a/application/module-certificate/src/main/java/org/fuseri/modulecertificate/service/CertificateService.java b/application/module-certificate/src/main/java/org/fuseri/modulecertificate/service/CertificateService.java
index baf8828b..4725dcda 100644
--- a/application/module-certificate/src/main/java/org/fuseri/modulecertificate/service/CertificateService.java
+++ b/application/module-certificate/src/main/java/org/fuseri/modulecertificate/service/CertificateService.java
@@ -30,6 +30,11 @@ public class CertificateService {
         return certificateRepository.findCertificateByUserId(userId);
     }
 
+    @Transactional(readOnly = true)
+    public List<Certificate> findByUserIdAndCourseId(Long userId, Long courseId) {
+        return certificateRepository.findCertificateByUserIdAndCourseId(userId, courseId);
+    }
+
     @Transactional(readOnly = true)
     public Certificate save(Certificate certificate) {
         return certificateRepository.save(certificate);
-- 
GitLab