Add some QOL to EventCommand and EventRescheduleCommand #520
@ -34,6 +34,7 @@ import java.sql.Timestamp;
|
|||||||
import java.time.Instant;
|
import java.time.Instant;
|
||||||
import java.time.format.DateTimeFormatter;
|
import java.time.format.DateTimeFormatter;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
import java.util.function.Function;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
public class EventCommand extends SWCommand {
|
public class EventCommand extends SWCommand {
|
||||||
@ -117,8 +118,7 @@ public class EventCommand extends SWCommand {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ClassMapper(Team.class)
|
protected static TypeMapper<Team> eventTeam(Function<EventFight, List<Integer>> teamMapper) {
|
||||||
public TypeMapper<Team> eventTeams() {
|
|
||||||
return new TypeMapper<>() {
|
return new TypeMapper<>() {
|
||||||
@Override
|
@Override
|
||||||
public Team map(Chatter sender, PreviousArguments previousArguments, String s) {
|
public Team map(Chatter sender, PreviousArguments previousArguments, String s) {
|
||||||
@ -134,16 +134,22 @@ public class EventCommand extends SWCommand {
|
|||||||
Event currentEvent = Event.get();
|
Event currentEvent = Event.get();
|
||||||
for (EventFight fight : EventFight.getEvent(currentEvent.getEventID())) {
|
for (EventFight fight : EventFight.getEvent(currentEvent.getEventID())) {
|
||||||
if (fight.hasFinished()) continue;
|
if (fight.hasFinished()) continue;
|
||||||
if (fight.getStartTime().after(new Timestamp(System.currentTimeMillis()))) continue;
|
teamMapper.apply(fight).forEach(integer -> {
|
||||||
Team red = Team.get(fight.getTeamRed());
|
Team team = Team.get(integer);
|
||||||
teams.add(red.getTeamName());
|
teams.add(team.getTeamName());
|
||||||
teams.add(red.getTeamKuerzel());
|
teams.add(team.getTeamKuerzel());
|
||||||
Team blue = Team.get(fight.getTeamBlue());
|
});
|
||||||
teams.add(blue.getTeamName());
|
|
||||||
teams.add(blue.getTeamKuerzel());
|
|
||||||
}
|
}
|
||||||
return teams;
|
return teams;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ClassMapper(Team.class)
|
||||||
|
public TypeMapper<Team> eventTeams() {
|
||||||
YoyoNow markierte diese Unterhaltung als gelöst
|
|||||||
|
return eventTeam(eventFight -> {
|
||||||
|
if (eventFight.getStartTime().after(new Timestamp(System.currentTimeMillis()))) return Collections.emptyList();
|
||||||
YoyoNow markierte diese Unterhaltung als gelöst
Lixfel
hat
Funktioniert das so mit dem Timestamp? Ansonsten über Instant.now().toTimestamp() konstruieren. Funktioniert das so mit dem Timestamp?
Ansonsten über Instant.now().toTimestamp() konstruieren.
YoyoNow
hat
So hast du es schon beim EventStarter gemacht, deswegen so übernommen So hast du es schon beim EventStarter gemacht, deswegen so übernommen
|
|||||||
|
return List.of(eventFight.getTeamBlue(), eventFight.getTeamRed());
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -19,7 +19,6 @@
|
|||||||
|
|
||||||
package de.steamwar.velocitycore.commands;
|
package de.steamwar.velocitycore.commands;
|
||||||
|
|
||||||
import de.steamwar.command.PreviousArguments;
|
|
||||||
import de.steamwar.command.SWCommand;
|
import de.steamwar.command.SWCommand;
|
||||||
import de.steamwar.command.TypeMapper;
|
import de.steamwar.command.TypeMapper;
|
||||||
import de.steamwar.messages.Chatter;
|
import de.steamwar.messages.Chatter;
|
||||||
@ -29,8 +28,9 @@ import de.steamwar.sql.Team;
|
|||||||
import de.steamwar.sql.UserPerm;
|
import de.steamwar.sql.UserPerm;
|
||||||
|
|
||||||
import java.sql.Timestamp;
|
import java.sql.Timestamp;
|
||||||
import java.util.*;
|
import java.util.Date;
|
||||||
import java.util.function.Function;
|
import java.util.List;
|
||||||
|
import java.util.ListIterator;
|
||||||
|
|
||||||
public class EventRescheduleCommand extends SWCommand {
|
public class EventRescheduleCommand extends SWCommand {
|
||||||
|
|
||||||
@ -65,41 +65,13 @@ public class EventRescheduleCommand extends SWCommand {
|
|||||||
sender.system("EVENTRESCHEDULE_NO_FIGHT");
|
sender.system("EVENTRESCHEDULE_NO_FIGHT");
|
||||||
}
|
}
|
||||||
|
|
||||||
private TypeMapper<Team> eventTeam(Function<EventFight, Integer> teamMapper) {
|
|
||||||
return new TypeMapper<>() {
|
|
||||||
@Override
|
|
||||||
public Team map(Chatter sender, PreviousArguments previousArguments, String s) {
|
|
||||||
if ("PUB".equalsIgnoreCase(s) || "public".equalsIgnoreCase(s)) {
|
|
||||||
return Team.get(0);
|
|
||||||
}
|
|
||||||
return Team.get(s);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Collection<String> tabCompletes(Chatter sender, PreviousArguments previousArguments, String s) {
|
|
||||||
Event currentEvent = Event.get();
|
|
||||||
if(currentEvent == null){
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
Set<String> teams = new HashSet<>();
|
|
||||||
for (EventFight fight : EventFight.getEvent(currentEvent.getEventID())) {
|
|
||||||
if (fight.hasFinished()) continue;
|
|
||||||
Team team = Team.get(teamMapper.apply(fight));
|
|
||||||
teams.add(team.getTeamName());
|
|
||||||
teams.add(team.getTeamKuerzel());
|
|
||||||
}
|
|
||||||
return teams;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
@Mapper("BLUE_TEAM")
|
@Mapper("BLUE_TEAM")
|
||||||
public TypeMapper<Team> eventBlueTeams() {
|
public TypeMapper<Team> eventBlueTeams() {
|
||||||
return eventTeam(EventFight::getTeamBlue);
|
return EventCommand.eventTeam(eventFight -> List.of(eventFight.getTeamBlue()));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Mapper("RED_TEAM")
|
@Mapper("RED_TEAM")
|
||||||
public TypeMapper<Team> eventRedTeams() {
|
public TypeMapper<Team> eventRedTeams() {
|
||||||
return eventTeam(EventFight::getTeamRed);
|
return EventCommand.eventTeam(eventFight -> List.of(eventFight.getTeamRed()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
In neuem Issue referenzieren
Einen Benutzer sperren
Müsste der nicht local sein oder geht das auch ohne?
Guter Punkt ändere ich