Raid Instances showing up on calendar

This commit is contained in:
2025-03-15 18:37:47 -04:00
parent 2778740cef
commit 1b31144f44
4 changed files with 51 additions and 1 deletions

View File

@@ -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<GameCalendarEvent> 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<RaidInstanceCalendarEvent> 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();
}
}

View File

@@ -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();
}
}

View File

@@ -18,6 +18,7 @@ public interface RaidInstanceRepository extends RaidInstanceCustomRepository, Jp
public void deleteAllByRaidLayoutIdIn(Iterable<UUID> raidLayoutIds);
public List<RaidInstance> findAllByRaidGroupId(UUID raidGroupId);
public List<RaidInstance> findAllByRaidGroupId(UUID raidGroupId, PageRequest pageRequest);
public List<RaidInstance> findAllByRaidGroupIdAndRaidInstanceNameContainingIgnoreCase(UUID raidGroupId, String searchTerm, PageRequest pageRequest);
public List<RaidInstance> findAllByRaidGroupIdAndRaidEndDateAfter(UUID raidGroupId, ZonedDateTime raidEndDate, PageRequest pageRequest);

View File

@@ -58,6 +58,10 @@ public class RaidInstanceService{
return raidInstanceRepository.findById(raidInstanceId).orElse(null);
}
public List<RaidInstance> findAllByRaidGroupId(UUID raidGroupId){
return raidInstanceRepository.findAllByRaidGroupId(raidGroupId);
}
public List<RaidInstance> findAllByRaidGroupId(UUID raidGroupId, int page, int pageSize){
return raidInstanceRepository.findAllByRaidGroupId(raidGroupId, PageRequest.of(page, pageSize, Sort.by("raidInstanceName").ascending()));
}