From e68e760d8bf99f423657e180b026b5d30f5125f0 Mon Sep 17 00:00:00 2001 From: Nanak Date: Fri, 13 Oct 2023 17:06:44 +0530 Subject: [PATCH 1/2] Replaced attendance object with transaction --- .../backend/controllers/EventsController.java | 9 ++--- .../pecacm/backend/entities/Attendance.java | 36 ------------------- .../repository/AttendanceRepository.java | 13 ------- .../repository/TransactionRepository.java | 4 +++ .../pecacm/backend/services/EventService.java | 18 ++-------- 5 files changed, 12 insertions(+), 68 deletions(-) delete mode 100644 src/main/java/com/pecacm/backend/entities/Attendance.java delete mode 100644 src/main/java/com/pecacm/backend/repository/AttendanceRepository.java diff --git a/src/main/java/com/pecacm/backend/controllers/EventsController.java b/src/main/java/com/pecacm/backend/controllers/EventsController.java index fdeeaef..c3f79ed 100644 --- a/src/main/java/com/pecacm/backend/controllers/EventsController.java +++ b/src/main/java/com/pecacm/backend/controllers/EventsController.java @@ -3,6 +3,7 @@ import com.pecacm.backend.constants.Constants; import com.pecacm.backend.entities.Event; import com.pecacm.backend.enums.Branch; +import com.pecacm.backend.enums.EventRole; import com.pecacm.backend.exception.AcmException; import com.pecacm.backend.model.EndEventDetails; import com.pecacm.backend.services.EventService; @@ -76,11 +77,11 @@ public ResponseEntity> getEventsByBranch(@PathVariable Branch branch @GetMapping("/user/{userId}") @PreAuthorize(Constants.HAS_ROLE_MEMBER_AND_ABOVE) - public ResponseEntity> getUserEventsByRole(@PathVariable Integer userId, @RequestParam("role") @Nullable String role) { - if (role == null){ - return ResponseEntity.ok(eventService.getUserEvents(userId)); + public ResponseEntity> getUserEventsByRole(@PathVariable Integer userId, @RequestParam("role") @Nullable EventRole eventRole) { + if (eventRole == null){ + return ResponseEntity.ok(eventService.getUserEventsByRole(userId, EventRole.PARTICIPANT)); } - return ResponseEntity.ok(eventService.getUserEventsByRole(userId, role)); + return ResponseEntity.ok(eventService.getUserEventsByRole(userId, eventRole)); } @PostMapping diff --git a/src/main/java/com/pecacm/backend/entities/Attendance.java b/src/main/java/com/pecacm/backend/entities/Attendance.java deleted file mode 100644 index 1b3329f..0000000 --- a/src/main/java/com/pecacm/backend/entities/Attendance.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.pecacm.backend.entities; - -import jakarta.persistence.*; -import lombok.*; - -@Entity -@Getter -@Setter -@NoArgsConstructor -@AllArgsConstructor -@Table(name="attendance", schema = "public") -@Builder -public class Attendance { - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - @Column(name = "id", unique = true, nullable = false) - private Integer id; - - @ManyToOne - @JoinColumn(name = "eventId") - private Event event; - - @ManyToOne - @JoinColumn(name = "userId") - private User user; - - @Column(name = "role") - // TODO: Change name - private String role; - - @Column(name = "status") - private String status; - - @Column(name = "feedback") - private String feedback; -} \ No newline at end of file diff --git a/src/main/java/com/pecacm/backend/repository/AttendanceRepository.java b/src/main/java/com/pecacm/backend/repository/AttendanceRepository.java deleted file mode 100644 index 3a70d3b..0000000 --- a/src/main/java/com/pecacm/backend/repository/AttendanceRepository.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.pecacm.backend.repository; - -import com.pecacm.backend.entities.Attendance; -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.stereotype.Repository; - -import java.util.List; - -@Repository -public interface AttendanceRepository extends JpaRepository { - List findByUserId(Integer id); - List findByUserIdAndRole(Integer id, String role); -} \ No newline at end of file diff --git a/src/main/java/com/pecacm/backend/repository/TransactionRepository.java b/src/main/java/com/pecacm/backend/repository/TransactionRepository.java index 337d7a1..3209dca 100644 --- a/src/main/java/com/pecacm/backend/repository/TransactionRepository.java +++ b/src/main/java/com/pecacm/backend/repository/TransactionRepository.java @@ -1,9 +1,13 @@ package com.pecacm.backend.repository; import com.pecacm.backend.entities.Transaction; +import com.pecacm.backend.enums.EventRole; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; +import java.util.List; + @Repository public interface TransactionRepository extends JpaRepository { + List findByUserIdAndRole(Integer userId, EventRole role); } diff --git a/src/main/java/com/pecacm/backend/services/EventService.java b/src/main/java/com/pecacm/backend/services/EventService.java index 4459f07..38ac8b8 100644 --- a/src/main/java/com/pecacm/backend/services/EventService.java +++ b/src/main/java/com/pecacm/backend/services/EventService.java @@ -8,14 +8,10 @@ import com.pecacm.backend.enums.EventRole; import com.pecacm.backend.exception.AcmException; import com.pecacm.backend.model.EndEventDetails; -import com.pecacm.backend.repository.AttendanceRepository; import com.pecacm.backend.repository.EventRepository; import com.pecacm.backend.repository.TransactionRepository; import com.pecacm.backend.repository.UserRepository; import jakarta.transaction.Transactional; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.cglib.core.Local; -import org.springframework.cglib.core.Predicate; import org.springframework.data.util.Pair; import org.springframework.http.HttpStatus; import org.springframework.stereotype.Service; @@ -28,13 +24,11 @@ public class EventService { private final EventRepository eventRepository; - private final AttendanceRepository attendanceRepository; private final UserRepository userRepository; private final TransactionRepository transactionRepository; - public EventService(EventRepository eventRepository, AttendanceRepository attendanceRepository, UserRepository userRepository, TransactionRepository transactionRepository) { + public EventService(EventRepository eventRepository, UserRepository userRepository, TransactionRepository transactionRepository) { this.eventRepository = eventRepository; - this.attendanceRepository = attendanceRepository; this.userRepository = userRepository; this.transactionRepository = transactionRepository; } @@ -65,19 +59,13 @@ public List getEventsByBranch(Branch branch) { return eventRepository.findByBranch(branch); } - public List getUserEvents(Integer userId) { - List events = new ArrayList<>(); - attendanceRepository.findByUserId(userId).forEach(attendance -> events.add(attendance.getEvent())); - return events; - } - - public List getUserEventsByRole(Integer userId, String role) { + public List getUserEventsByRole(Integer userId, EventRole eventRole) { Optional user = userRepository.findById(userId); List events = new ArrayList<>(); if (user.isEmpty()) { throw new AcmException(ErrorConstants.USER_NOT_FOUND, HttpStatus.NOT_FOUND); } - attendanceRepository.findByUserIdAndRole(userId, role).forEach(attendance -> events.add(attendance.getEvent())); + transactionRepository.findByUserIdAndRole(userId, eventRole).forEach(transaction -> events.add(transaction.getEvent())); return events; } From 83fdd067b810a4acafcba3ba9478a161226c3072 Mon Sep 17 00:00:00 2001 From: Nanak Date: Fri, 13 Oct 2023 19:33:45 +0530 Subject: [PATCH 2/2] pr comments --- .../pecacm/backend/controllers/EventsController.java | 10 ++++++---- .../backend/repository/TransactionRepository.java | 1 + .../java/com/pecacm/backend/services/EventService.java | 10 +++++++--- 3 files changed, 14 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/pecacm/backend/controllers/EventsController.java b/src/main/java/com/pecacm/backend/controllers/EventsController.java index c3f79ed..cca67ce 100644 --- a/src/main/java/com/pecacm/backend/controllers/EventsController.java +++ b/src/main/java/com/pecacm/backend/controllers/EventsController.java @@ -14,6 +14,7 @@ import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.web.bind.annotation.*; import java.time.LocalDate; @@ -75,13 +76,14 @@ public ResponseEntity> getEventsByBranch(@PathVariable Branch branch return ResponseEntity.ok(events); } - @GetMapping("/user/{userId}") + @GetMapping("/user") @PreAuthorize(Constants.HAS_ROLE_MEMBER_AND_ABOVE) - public ResponseEntity> getUserEventsByRole(@PathVariable Integer userId, @RequestParam("role") @Nullable EventRole eventRole) { + public ResponseEntity> getUserEventsByRole(@RequestParam("role") @Nullable EventRole eventRole) { + String email = (String) SecurityContextHolder.getContext().getAuthentication().getPrincipal(); if (eventRole == null){ - return ResponseEntity.ok(eventService.getUserEventsByRole(userId, EventRole.PARTICIPANT)); + return ResponseEntity.ok(eventService.getUserEventsByRole(email, null)); } - return ResponseEntity.ok(eventService.getUserEventsByRole(userId, eventRole)); + return ResponseEntity.ok(eventService.getUserEventsByRole(email, eventRole)); } @PostMapping diff --git a/src/main/java/com/pecacm/backend/repository/TransactionRepository.java b/src/main/java/com/pecacm/backend/repository/TransactionRepository.java index 3209dca..1befd08 100644 --- a/src/main/java/com/pecacm/backend/repository/TransactionRepository.java +++ b/src/main/java/com/pecacm/backend/repository/TransactionRepository.java @@ -9,5 +9,6 @@ @Repository public interface TransactionRepository extends JpaRepository { + List findByUserId(Integer userId); List findByUserIdAndRole(Integer userId, EventRole role); } diff --git a/src/main/java/com/pecacm/backend/services/EventService.java b/src/main/java/com/pecacm/backend/services/EventService.java index 38ac8b8..6267d5e 100644 --- a/src/main/java/com/pecacm/backend/services/EventService.java +++ b/src/main/java/com/pecacm/backend/services/EventService.java @@ -59,13 +59,17 @@ public List getEventsByBranch(Branch branch) { return eventRepository.findByBranch(branch); } - public List getUserEventsByRole(Integer userId, EventRole eventRole) { - Optional user = userRepository.findById(userId); + public List getUserEventsByRole(String email, EventRole eventRole) { + Optional user = userRepository.findByEmail(email); List events = new ArrayList<>(); if (user.isEmpty()) { throw new AcmException(ErrorConstants.USER_NOT_FOUND, HttpStatus.NOT_FOUND); } - transactionRepository.findByUserIdAndRole(userId, eventRole).forEach(transaction -> events.add(transaction.getEvent())); + if (eventRole == null) { + transactionRepository.findByUserId(user.get().getId()).forEach(transaction -> events.add(transaction.getEvent())); + } else { + transactionRepository.findByUserIdAndRole(user.get().getId(), eventRole).forEach(transaction -> events.add(transaction.getEvent())); + } return events; }