Skip to content

Commit

Permalink
Merge pull request #87 from PEC-CSS/event-controller-pageable
Browse files Browse the repository at this point in the history
Made event controller get reqs pageable
  • Loading branch information
harasees-singh authored Oct 21, 2023
2 parents 77a9198 + 1b15a5a commit 2dc119f
Show file tree
Hide file tree
Showing 3 changed files with 33 additions and 18 deletions.
31 changes: 22 additions & 9 deletions src/main/java/com/pecacm/backend/controllers/EventsController.java
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,12 @@ public EventsController(EventService eventService) {

@GetMapping
@PreAuthorize(Constants.HAS_ANY_ROLE)
public ResponseEntity<List<Event>> getAllEvents(@RequestParam @Nullable LocalDate eventsFrom, @RequestParam @Nullable LocalDate eventsTill) {
public ResponseEntity<List<Event>> getAllEvents(@RequestParam @Nullable LocalDate eventsFrom, @RequestParam @Nullable LocalDate eventsTill, @RequestParam @Nullable Integer offset, @RequestParam @Nullable Integer pageSize) {
if (offset == null) offset = 0;
if (pageSize == null) pageSize = 20; // returning first 20 users

if (offset < 0) throw new AcmException("offset cannot be < 0", HttpStatus.BAD_REQUEST);
if (pageSize <= 0) throw new AcmException("pageSize must be >= 0", HttpStatus.BAD_REQUEST);

if (eventsFrom==null){
eventsFrom = LocalDate.now().minusYears(99);
Expand All @@ -48,32 +53,40 @@ public ResponseEntity<List<Event>> getAllEvents(@RequestParam @Nullable LocalDat
if (eventsFrom.isAfter(eventsTill)) {
throw new AcmException("eventsFrom Date must be <= eventsTill Date", HttpStatus.BAD_REQUEST);
}
// TODO : Return pageable response

List<Event> events = eventService.getEventsBetweenTwoTimestamps(eventsFrom, eventsTill);
List<Event> events = eventService.getEventsBetweenTwoTimestamps(eventsFrom, eventsTill,offset, pageSize);

return ResponseEntity.ok(events);
}

@GetMapping("/ongoing")
@PreAuthorize(Constants.HAS_ANY_ROLE)
public ResponseEntity<List<Event>> getOngoingEvents() {
return ResponseEntity.ok(eventService.getOngoingEvents());
public ResponseEntity<List<Event>> getOngoingEvents(@RequestParam @Nullable Integer offset, @RequestParam @Nullable Integer pageSize) {
if (offset == null) offset = 0;
if (pageSize == null) pageSize = 20; // returning first 20 users

if (offset < 0) throw new AcmException("offset cannot be < 0", HttpStatus.BAD_REQUEST);
if (pageSize <= 0) throw new AcmException("pageSize must be >= 0", HttpStatus.BAD_REQUEST);
return ResponseEntity.ok(eventService.getOngoingEvents(offset, pageSize));
}

@GetMapping("/{eventId}")
@PreAuthorize(Constants.HAS_ANY_ROLE)
public ResponseEntity<Event> getSingleEvent(@PathVariable Integer eventId){
// TODO : Return pageable response
Event event = eventService.getSingleEvent(eventId);
return ResponseEntity.ok(event);
}

@GetMapping("/branches/{branch}")
@PreAuthorize(Constants.HAS_ANY_ROLE)
public ResponseEntity<List<Event>> getEventsByBranch(@PathVariable Branch branch){
// TODO : Return pageable response
List<Event> events = eventService.getEventsByBranch(branch);
public ResponseEntity<List<Event>> getEventsByBranch(@PathVariable Branch branch, @RequestParam @Nullable Integer offset, @RequestParam @Nullable Integer pageSize){
if (offset == null) offset = 0;
if (pageSize == null) pageSize = 20; // returning first 20 users

if (offset < 0) throw new AcmException("offset cannot be < 0", HttpStatus.BAD_REQUEST);
if (pageSize <= 0) throw new AcmException("pageSize must be >= 0", HttpStatus.BAD_REQUEST);

List<Event> events = eventService.getEventsByBranch(branch,offset, pageSize);
return ResponseEntity.ok(events);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import com.pecacm.backend.entities.Event;
import com.pecacm.backend.enums.Branch;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
Expand All @@ -11,9 +12,9 @@

@Repository
public interface EventRepository extends JpaRepository<Event, Integer> {
List<Event> findByBranch(Branch branch);
List<Event> findAllByEndedFalse();
List<Event> findByBranch(Branch branch,PageRequest pageRequest);
List<Event> findAllByEndedFalse(PageRequest pageRequest);
@Query("SELECT e from Event e WHERE e.startDate > :currDateTime ORDER BY e.startDate ASC LIMIT 1")
Event getNearestEvent(@Param("currDateTime") LocalDateTime currDate);
List<Event> findAllByStartDateGreaterThanEqualAndEndDateLessThanEqual(LocalDateTime startDate, LocalDateTime endDate);
List<Event> findAllByStartDateGreaterThanEqualAndEndDateLessThanEqual(LocalDateTime startDate, LocalDateTime endDate, PageRequest pageRequest);
}
13 changes: 7 additions & 6 deletions src/main/java/com/pecacm/backend/services/EventService.java
Original file line number Diff line number Diff line change
Expand Up @@ -39,16 +39,17 @@ public EventService(EventRepository eventRepository, UserRepository userReposito

// TODO : change all GET events to pageable repositories

public List<Event> getEventsBetweenTwoTimestamps(LocalDate eventsFrom, LocalDate eventsTill) {
public List<Event> getEventsBetweenTwoTimestamps(LocalDate eventsFrom, LocalDate eventsTill, Integer offset, Integer pageSize) {
return eventRepository
.findAllByStartDateGreaterThanEqualAndEndDateLessThanEqual(
eventsFrom.atStartOfDay(),
eventsTill.plusDays(1).atStartOfDay()
eventsTill.plusDays(1).atStartOfDay(),
PageRequest.of(offset, pageSize)
);
}

public List<Event> getOngoingEvents() {
return eventRepository.findAllByEndedFalse();
public List<Event> getOngoingEvents(Integer offset, Integer pageSize) {
return eventRepository.findAllByEndedFalse(PageRequest.of(offset, pageSize));
}

public Event getSingleEvent(Integer eventId) {
Expand All @@ -59,8 +60,8 @@ public Event getSingleEvent(Integer eventId) {
return event.get();
}

public List<Event> getEventsByBranch(Branch branch) {
return eventRepository.findByBranch(branch);
public List<Event> getEventsByBranch(Branch branch, Integer offset, Integer pageSize) {
return eventRepository.findByBranch(branch,PageRequest.of(offset,pageSize));
}

public EventAttendeesResponse getEventUsersByRole(Integer eventId, EventRole eventRole, PageRequest pageRequest) {
Expand Down

0 comments on commit 2dc119f

Please sign in to comment.