diff --git a/src/main/java/com/mattrixwv/raidbuilder/controller/CalendarController.java b/src/main/java/com/mattrixwv/raidbuilder/controller/CalendarController.java index ce2478b..c51c219 100644 --- a/src/main/java/com/mattrixwv/raidbuilder/controller/CalendarController.java +++ b/src/main/java/com/mattrixwv/raidbuilder/controller/CalendarController.java @@ -20,8 +20,10 @@ import com.mattrixwv.raidbuilder.annotation.GameAuthorization; import com.mattrixwv.raidbuilder.annotation.RaidGroupAuthorization; import com.mattrixwv.raidbuilder.entity.GameCalendarEvent; import com.mattrixwv.raidbuilder.entity.RaidGroupCalendarEvent; +import com.mattrixwv.raidbuilder.entity.RaidInstanceCalendarEvent; import com.mattrixwv.raidbuilder.service.GameCalendarEventService; import com.mattrixwv.raidbuilder.service.RaidGroupCalendarEventService; +import com.mattrixwv.raidbuilder.service.RaidInstanceService; import com.mattrixwv.raidbuilder.util.DatabaseTypeUtil.AccountPermissionType; import com.mattrixwv.raidbuilder.util.DatabaseTypeUtil.GamePermissionType; import com.mattrixwv.raidbuilder.util.DatabaseTypeUtil.RaidGroupPermissionType; @@ -38,8 +40,10 @@ public class CalendarController{ private final ObjectMapper mapper; private final GameCalendarEventService gceService; private final RaidGroupCalendarEventService rgceService; + private final RaidInstanceService raidInstanceService; + //! Game @GetMapping("/game/{gameId}") @AccountAuthorization(permissions = {AccountPermissionType.ADMIN, AccountPermissionType.USER}) public List getGameCalendarEvents(@PathVariable("gameId") UUID gameId){ @@ -97,7 +101,7 @@ public class CalendarController{ } - //!Calendar + //! Raid Group @GetMapping("/raidGroup/{raidGroupId}") @AccountAuthorization(permissions = {AccountPermissionType.ADMIN, AccountPermissionType.USER}) @RaidGroupAuthorization(permissions = {RaidGroupPermissionType.ADMIN, RaidGroupPermissionType.LEADER, RaidGroupPermissionType.RAIDER}) @@ -154,4 +158,15 @@ public class CalendarController{ return returnNode; } + + //! Raid Instance + @GetMapping("/raidGroup/{raidGroupId}/raidInstance") + @AccountAuthorization(permissions = {AccountPermissionType.ADMIN, AccountPermissionType.USER}) + @RaidGroupAuthorization(permissions = {RaidGroupPermissionType.ADMIN, RaidGroupPermissionType.LEADER, RaidGroupPermissionType.RAIDER}) + public List getGameCalendarEventsByRaidInstance(@PathVariable("raidGroupId") UUID raidGroupId){ + log.info("Getting calendar events for raid group {}", raidGroupId); + + + return raidInstanceService.findAllByRaidGroupId(raidGroupId).stream().map(instance -> new RaidInstanceCalendarEvent(instance)).toList(); + } } diff --git a/src/main/java/com/mattrixwv/raidbuilder/entity/RaidInstanceCalendarEvent.java b/src/main/java/com/mattrixwv/raidbuilder/entity/RaidInstanceCalendarEvent.java new file mode 100644 index 0000000..30988d0 --- /dev/null +++ b/src/main/java/com/mattrixwv/raidbuilder/entity/RaidInstanceCalendarEvent.java @@ -0,0 +1,30 @@ +package com.mattrixwv.raidbuilder.entity; + + +import java.time.ZonedDateTime; +import java.util.UUID; + +import lombok.Data; +import lombok.NoArgsConstructor; + + +@Data +@NoArgsConstructor +public class RaidInstanceCalendarEvent{ + private UUID calendarEventId; + private UUID raidInstanceId; + private String eventName; + private String eventDescription; + private ZonedDateTime eventStartDate; + private ZonedDateTime eventEndDate; + + + public RaidInstanceCalendarEvent(RaidInstance raidInstance){ + this.calendarEventId = raidInstance.getRaidInstanceId(); + this.raidInstanceId = raidInstance.getRaidInstanceId(); + this.eventName = raidInstance.getRaidInstanceName(); + this.eventDescription = "Raid Instance " + raidInstance.getRaidInstanceName(); + this.eventStartDate = raidInstance.getRaidStartDate(); + this.eventEndDate = raidInstance.getRaidEndDate(); + } +} diff --git a/src/main/java/com/mattrixwv/raidbuilder/repository/raid_instance/RaidInstanceRepository.java b/src/main/java/com/mattrixwv/raidbuilder/repository/raid_instance/RaidInstanceRepository.java index a73f45c..1a76aa4 100644 --- a/src/main/java/com/mattrixwv/raidbuilder/repository/raid_instance/RaidInstanceRepository.java +++ b/src/main/java/com/mattrixwv/raidbuilder/repository/raid_instance/RaidInstanceRepository.java @@ -18,6 +18,7 @@ public interface RaidInstanceRepository extends RaidInstanceCustomRepository, Jp public void deleteAllByRaidLayoutIdIn(Iterable raidLayoutIds); + public List findAllByRaidGroupId(UUID raidGroupId); public List findAllByRaidGroupId(UUID raidGroupId, PageRequest pageRequest); public List findAllByRaidGroupIdAndRaidInstanceNameContainingIgnoreCase(UUID raidGroupId, String searchTerm, PageRequest pageRequest); public List findAllByRaidGroupIdAndRaidEndDateAfter(UUID raidGroupId, ZonedDateTime raidEndDate, PageRequest pageRequest); diff --git a/src/main/java/com/mattrixwv/raidbuilder/service/RaidInstanceService.java b/src/main/java/com/mattrixwv/raidbuilder/service/RaidInstanceService.java index 2e70ead..506aac1 100644 --- a/src/main/java/com/mattrixwv/raidbuilder/service/RaidInstanceService.java +++ b/src/main/java/com/mattrixwv/raidbuilder/service/RaidInstanceService.java @@ -58,6 +58,10 @@ public class RaidInstanceService{ return raidInstanceRepository.findById(raidInstanceId).orElse(null); } + public List findAllByRaidGroupId(UUID raidGroupId){ + return raidInstanceRepository.findAllByRaidGroupId(raidGroupId); + } + public List findAllByRaidGroupId(UUID raidGroupId, int page, int pageSize){ return raidInstanceRepository.findAllByRaidGroupId(raidGroupId, PageRequest.of(page, pageSize, Sort.by("raidInstanceName").ascending())); }