GL Hot Fix

This commit is contained in:
jeffcheasey88 2023-04-22 14:34:24 +02:00
parent c4de049e58
commit 326016a93a
10 changed files with 87 additions and 45 deletions

View file

@ -40,8 +40,8 @@ public class Bot extends Thread{
List<Group> groups = this.repo.getAllGroups(); List<Group> groups = this.repo.getAllGroups();
for(Group group : groups){ for(Group group : groups){
Integer chapter = group.getLinkToChapter(); Integer chapter = group.getLinkToChapter();
Integer puzzle = group.getLinkToPuzzle(); // Integer puzzle = group.getLinkToPuzzle();
if((chapter == null || chapter == 0) && (puzzle == null || puzzle == 0)) continue; if((chapter == null || chapter == 0)) continue;
boolean contains = false; boolean contains = false;
for(VoiceChannel channel : event.getVoiceChannels()){ for(VoiceChannel channel : event.getVoiceChannels()){
if(channel.getName().equalsIgnoreCase(group.getName())){ if(channel.getName().equalsIgnoreCase(group.getName())){
@ -57,8 +57,8 @@ public class Bot extends Thread{
locker.lock(key); locker.lock(key);
Group group = locker.getValue(key); Group group = locker.getValue(key);
Integer chapter = group.getLinkToChapter(); Integer chapter = group.getLinkToChapter();
Integer puzzle = group.getLinkToPuzzle(); // Integer puzzle = group.getLinkToPuzzle();
if((chapter == null || chapter == 0) && (puzzle == null || puzzle == 0)) continue; if((chapter == null || chapter == 0)) continue;
boolean contains = false; boolean contains = false;
for(VoiceChannel channel : event.getVoiceChannels()){ for(VoiceChannel channel : event.getVoiceChannels()){
if(channel.getName().equalsIgnoreCase(group.getName())){ if(channel.getName().equalsIgnoreCase(group.getName())){

View file

@ -47,7 +47,7 @@ public class Completion {
} }
public void addTry(Puzzle currentPuzzle, byte[] response) { public void addTry(Puzzle currentPuzzle, byte[] response) {
if (score <= 0) { if (score <= 0){
tries++; tries++;
if (response != null && Arrays.equals(currentPuzzle.getSoluce(), response)) { if (response != null && Arrays.equals(currentPuzzle.getSoluce(), response)) {
if (tries > 1) { // Loose 5% each try with a minimum of 1 for score if (tries > 1) { // Loose 5% each try with a minimum of 1 for score

View file

@ -10,21 +10,26 @@ import org.json.simple.JSONObject;
public class Group implements Comparable<Group> { public class Group implements Comparable<Group> {
private String name; private String name;
private Integer linkToChapter; private Integer linkToChapter;
private Integer linkToPuzzle; // private Integer linkToPuzzle;
private List<Player> players; private List<Player> players;
@Override
public String toString(){
return "Group[name="+name+", chapter="+linkToChapter+"]";
}
public Group(JSONObject json) { public Group(JSONObject json) {
this.name = (String) json.get("name"); this.name = (String) json.get("name");
if (json.containsKey("chapter")) if (json.containsKey("chapter"))
this.linkToChapter = ((Number) json.get("chapter")).intValue(); this.linkToChapter = ((Number) json.get("chapter")).intValue();
if (json.containsKey("puzzle")) // if (json.containsKey("puzzle"))
this.linkToPuzzle = ((Number) json.get("puzzle")).intValue(); // this.linkToPuzzle = ((Number) json.get("puzzle")).intValue();
} }
public Group(String name, Integer initChap, Integer initPuzz) { public Group(String name, Integer initChap, Integer initPuzz) {
this.name = name; this.name = name;
this.linkToChapter = initChap; this.linkToChapter = initChap;
this.linkToPuzzle = initPuzz; // this.linkToPuzzle = initPuzz;
} }
public void addPlayer(Player newPlayer) { public void addPlayer(Player newPlayer) {
@ -71,9 +76,9 @@ public class Group implements Comparable<Group> {
return linkToChapter; return linkToChapter;
} }
public Integer getLinkToPuzzle() { // public Integer getLinkToPuzzle() {
return linkToPuzzle; // return linkToPuzzle;
} // }
public JSONObject toJson() { public JSONObject toJson() {
return this.toJson(null); return this.toJson(null);
@ -86,8 +91,8 @@ public class Group implements Comparable<Group> {
groupJSON.put("rank", rank); groupJSON.put("rank", rank);
else if (linkToChapter != null) else if (linkToChapter != null)
groupJSON.put("chapter", linkToChapter); groupJSON.put("chapter", linkToChapter);
else if (linkToPuzzle != null) // else if (linkToPuzzle != null)
groupJSON.put("puzzle", linkToPuzzle); // groupJSON.put("puzzle", linkToPuzzle);
if (players != null) { if (players != null) {
JSONArray groupsPlayerJSON = new JSONArray(); JSONArray groupsPlayerJSON = new JSONArray();
for (Player p : players) { for (Player p : players) {
@ -124,12 +129,12 @@ public class Group implements Comparable<Group> {
} }
@Override @Override
public boolean equals(Object obj) { public boolean equals(Object obj){
if(obj == this) return true; if(obj == this) return true;
if(obj == null) return false; if(obj == null) return false;
if(!(obj instanceof Group)) return false; if(!(obj instanceof Group)) return false;
Group other = (Group) obj; Group other = (Group) obj;
return this.name.equals(other.name) && integerEquals(this.linkToChapter, other.linkToChapter) && integerEquals(this.linkToPuzzle, other.linkToPuzzle); return this.name.equals(other.name) && integerEquals(this.linkToChapter, other.linkToChapter); // && integerEquals(this.linkToPuzzle, other.linkToPuzzle);
} }
private boolean integerEquals(Integer a, Integer b){ private boolean integerEquals(Integer a, Integer b){

View file

@ -21,15 +21,15 @@ public enum DatabaseQuery {
// GROUPS // GROUPS
ALL_GROUPS("SELECT * FROM groups"), ALL_GROUPS("SELECT * FROM groups"),
GET_GROUP_FOR_PLAYER("SELECT g.* FROM groups g JOIN containsGroups cg ON cg.fk_group = g.id_group WHERE cg.fk_player = ? AND g.fk_chapter = ? AND g.fk_puzzle = ?"), GET_GROUP_FOR_PLAYER("SELECT g.* FROM groups g JOIN containsGroups cg ON cg.fk_group = g.id_group WHERE cg.fk_player = ? AND g.fk_chapter = ?"), // AND g.fk_puzzle = ?
GET_GROUP_ID_BY_DATA("SELECT id_group FROM groups WHERE name = ? AND (fk_chapter = ? OR fk_puzzle = ?)"), GET_GROUP_ID_BY_DATA("SELECT id_group FROM groups WHERE name = ? AND (fk_chapter = ?)"), // OR fk_puzzle = ?
INSERT_GROUP("INSERT INTO groups (name, fk_chapter, fk_puzzle) VALUES (?,?,?)"), INSERT_GROUP("INSERT INTO groups (name, fk_chapter) VALUES (?,?)"),
INSERT_PLAYER_IN_GROUP("INSERT INTO containsGroups (fk_player, fk_group) VALUES (?,?)"), INSERT_PLAYER_IN_GROUP("INSERT INTO containsGroups (fk_player, fk_group) VALUES (?,?)"),
LEAVE_GROUP("DELETE FROM containsGroups WHERE fk_player = ? AND fk_group = ?"), LEAVE_GROUP("DELETE FROM containsGroups WHERE fk_player = ? AND fk_group = ?"),
// LEADERBOARD // LEADERBOARD
ALL_PLAYERS_FOR_LEADERBOARD( ALL_PLAYERS_FOR_LEADERBOARD(
"select p.*, scores.*, g.* from players p ,(SELECT fk_player, SUM(c.score) AS score, COUNT(c.id_completion) AS completions, SUM(c.tries) AS tries, rank() over(ORDER BY score DESC) AS rank FROM completions c GROUP BY c.fk_player) AS scores LEFT JOIN containsGroups cg ON scores.fk_player = cg.fk_player LEFT JOIN groups g ON cg.fk_group = g.id_group WHERE p.id_player = scores.fk_player ORDER BY g.fk_chapter, g.fk_puzzle"), "select p.*, scores.*, g.* from players p ,(SELECT fk_player, SUM(c.score) AS score, COUNT(c.id_completion) AS completions, SUM(c.tries) AS tries, rank() over(ORDER BY score DESC) AS rank FROM completions c GROUP BY c.fk_player) AS scores LEFT JOIN containsGroups cg ON scores.fk_player = cg.fk_player LEFT JOIN groups g ON cg.fk_group = g.id_group WHERE p.id_player = scores.fk_player ORDER BY g.fk_chapter"),
ALL_GROUP_FOR_CHAPTER_LEADERBOARD( ALL_GROUP_FOR_CHAPTER_LEADERBOARD(
"SELECT g.*, pl.pseudo, co.score, co.tries FROM groups g LEFT JOIN containsGroups cg ON g.id_group = cg.fk_group LEFT JOIN players pl ON cg.fk_player = pl.id_player LEFT JOIN completions co ON pl.id_player = co.fk_player WHERE fk_chapter = ? AND (co.fk_puzzle IN (SELECT id_puzzle FROM puzzles puz WHERE puz.fk_chapter = g.fk_chapter) OR co.score IS NULL);"), "SELECT g.*, pl.pseudo, co.score, co.tries FROM groups g LEFT JOIN containsGroups cg ON g.id_group = cg.fk_group LEFT JOIN players pl ON cg.fk_player = pl.id_player LEFT JOIN completions co ON pl.id_player = co.fk_player WHERE fk_chapter = ? AND (co.fk_puzzle IN (SELECT id_puzzle FROM puzzles puz WHERE puz.fk_chapter = g.fk_chapter) OR co.score IS NULL);"),
@ -46,8 +46,8 @@ public enum DatabaseQuery {
// COMPLETIONS // COMPLETIONS
GET_COMPLETION( GET_COMPLETION(
"SELECT id_completion, tries, fileName, score FROM completions WHERE fk_puzzle = ? AND fk_player = ?"), "SELECT * FROM completions WHERE fk_puzzle = ? AND fk_player = ?"),
GET_COMPLETION_GROUP("SELECT c.tries, c.score\r\n" GET_COMPLETION_GROUP("SELECT c.*\r\n"
+ "FROM completions c\r\n" + "FROM completions c\r\n"
+ "JOIN containsGroups cG on c.fk_player = cG.fk_player\r\n" + "JOIN containsGroups cG on c.fk_player = cG.fk_player\r\n"
+ "JOIN containsGroups cGs on cGs.fk_group = cG.fk_group\r\n" + "JOIN containsGroups cGs on cGs.fk_group = cG.fk_group\r\n"

View file

@ -115,12 +115,12 @@ public class DatabaseRepository {
chapterResult.getTimestamp("start_date"), chapterResult.getTimestamp("end_date")); chapterResult.getTimestamp("start_date"), chapterResult.getTimestamp("end_date"));
} }
private Completion makeCompletion(int playerId, int puzzleId, ResultSet completionResult) throws SQLException { private Completion makeCompletion(ResultSet completionResult) throws SQLException {
String name = null; String name = null;
if (hasColumn(completionResult, "fileName")) if (hasColumn(completionResult, "fileName"))
name = completionResult.getString("fileName"); name = completionResult.getString("fileName");
return new Completion(playerId, puzzleId, completionResult.getInt("tries"), return new Completion(completionResult.getInt("fk_player"), completionResult.getInt("fk_puzzle"), completionResult.getInt("tries"),
name, completionResult.getInt("score")); name, completionResult.getInt("score"));
} }
@ -232,7 +232,7 @@ public class DatabaseRepository {
stmt.setInt(2, puzzle); stmt.setInt(2, puzzle);
ResultSet result = stmt.executeQuery(); ResultSet result = stmt.executeQuery();
if (result.next()) if (result.next())
return makeCompletion(user, puzzle, result); return makeCompletion(result);
} catch (SQLException e) { } catch (SQLException e) {
e.printStackTrace(); e.printStackTrace();
} }
@ -246,7 +246,7 @@ public class DatabaseRepository {
completionsStmt.setInt(2, playerId); completionsStmt.setInt(2, playerId);
ResultSet result = completionsStmt.executeQuery(); ResultSet result = completionsStmt.executeQuery();
if (result.next()) { if (result.next()) {
return makeCompletion(playerId, puzzleId, result); return makeCompletion(result);
} }
} catch (SQLException e) { } catch (SQLException e) {
e.printStackTrace(); e.printStackTrace();
@ -570,8 +570,8 @@ public class DatabaseRepository {
byte[] response, Puzzle currentPuzzle) { byte[] response, Puzzle currentPuzzle) {
try { try {
ensureConnection(); ensureConnection();
Completion completion = getCompletion(userId, puzzleId); Completion completion = getCompletionGroup(userId, puzzleId);
if (completion == null) { if (completion == null){
completion = new Completion(userId, puzzleId, fileName, code, response, currentPuzzle); completion = new Completion(userId, puzzleId, fileName, code, response, currentPuzzle);
insertCompletion(completion); insertCompletion(completion);
} else { } else {
@ -603,18 +603,18 @@ public class DatabaseRepository {
PreparedStatement statement = DatabaseQuery.INSERT_GROUP.prepare(this.con); PreparedStatement statement = DatabaseQuery.INSERT_GROUP.prepare(this.con);
statement.setString(1, group.getName()); statement.setString(1, group.getName());
statement.setObject(2, group.getLinkToChapter()); statement.setObject(2, group.getLinkToChapter());
statement.setObject(3, group.getLinkToPuzzle()); // statement.setObject(3, group.getLinkToPuzzle());
if (statement.executeUpdate() >= 0) if (statement.executeUpdate() >= 0)
return insertUserInGroup(group, creator); return insertUserInGroup(group, creator);
return false; return false;
} }
public Group getPlayerGroup(int user, Integer chapter, Integer puzzle) throws SQLException { public Group getPlayerGroup(int user, Integer chapter) throws SQLException {
ensureConnection(); ensureConnection();
PreparedStatement stmt = DatabaseQuery.GET_GROUP_FOR_PLAYER.prepare(this.con); PreparedStatement stmt = DatabaseQuery.GET_GROUP_FOR_PLAYER.prepare(this.con);
stmt.setInt(1, user); stmt.setInt(1, user);
stmt.setObject(2, chapter); stmt.setObject(2, chapter);
stmt.setObject(3, puzzle); // stmt.setObject(3, puzzle);
ResultSet result = stmt.executeQuery(); ResultSet result = stmt.executeQuery();
if (result.next()) if (result.next())
@ -627,17 +627,17 @@ public class DatabaseRepository {
PreparedStatement stmt = DatabaseQuery.GET_GROUP_ID_BY_DATA.prepare(this.con); PreparedStatement stmt = DatabaseQuery.GET_GROUP_ID_BY_DATA.prepare(this.con);
stmt.setString(1, group.getName()); stmt.setString(1, group.getName());
stmt.setObject(2, group.getLinkToChapter()); stmt.setObject(2, group.getLinkToChapter());
stmt.setObject(3, group.getLinkToPuzzle()); // stmt.setObject(3, group.getLinkToPuzzle());
ResultSet result = stmt.executeQuery(); ResultSet result = stmt.executeQuery();
if (result.next()) if (result.next())
return result.getInt("id_group"); return result.getInt("id_group");
throw null; return null;
} }
public boolean insertUserInGroup(Group group, User user) throws SQLException { public boolean insertUserInGroup(Group group, User user) throws SQLException {
Integer id = getGroupId(group); Integer id = getGroupId(group);
Group alreadyInGroup = getPlayerGroup(user.getId(), group.getLinkToChapter(), group.getLinkToPuzzle()); Group alreadyInGroup = getPlayerGroup(user.getId(), group.getLinkToChapter());
if (id != null && alreadyInGroup == null) { if (id != null && alreadyInGroup == null) {
PreparedStatement stmt = DatabaseQuery.INSERT_PLAYER_IN_GROUP.prepare(this.con); PreparedStatement stmt = DatabaseQuery.INSERT_PLAYER_IN_GROUP.prepare(this.con);

View file

@ -1,5 +1,6 @@
package be.jeffcheasey88.peeratcode.routes; package be.jeffcheasey88.peeratcode.routes;
import java.time.LocalDateTime;
import java.util.regex.Matcher; import java.util.regex.Matcher;
import org.json.simple.JSONObject; import org.json.simple.JSONObject;
@ -11,6 +12,7 @@ import be.jeffcheasey88.peeratcode.framework.HttpWriter;
import be.jeffcheasey88.peeratcode.framework.Response; import be.jeffcheasey88.peeratcode.framework.Response;
import be.jeffcheasey88.peeratcode.framework.Route; import be.jeffcheasey88.peeratcode.framework.Route;
import be.jeffcheasey88.peeratcode.framework.User; import be.jeffcheasey88.peeratcode.framework.User;
import be.jeffcheasey88.peeratcode.model.Chapter;
import be.jeffcheasey88.peeratcode.model.Completion; import be.jeffcheasey88.peeratcode.model.Completion;
import be.jeffcheasey88.peeratcode.model.Puzzle; import be.jeffcheasey88.peeratcode.model.Puzzle;
import be.jeffcheasey88.peeratcode.repository.DatabaseRepository; import be.jeffcheasey88.peeratcode.repository.DatabaseRepository;
@ -25,11 +27,26 @@ public class PuzzleElement implements Response {
@RouteDoc(path = "/puzzle/<id>", responseCode = 200, responseDescription = "JSON contenant les informations du puzzle") @RouteDoc(path = "/puzzle/<id>", responseCode = 200, responseDescription = "JSON contenant les informations du puzzle")
@RouteDoc(responseCode = 400, responseDescription = "puzzle introuvable dans la base de donnée") @RouteDoc(responseCode = 400, responseDescription = "puzzle introuvable dans la base de donnée")
@RouteDoc(responseCode = 423, responseDescription = "L'utilisateur essaye de voir le puzzle en dehors de l'event")
@Route(path = "^\\/puzzle\\/([0-9]+)$", needLogin = true) @Route(path = "^\\/puzzle\\/([0-9]+)$", needLogin = true)
public void exec(Matcher matcher, User user, HttpReader reader, HttpWriter writer) throws Exception { public void exec(Matcher matcher, User user, HttpReader reader, HttpWriter writer) throws Exception {
Puzzle puzzle = databaseRepo.getPuzzle(extractId(matcher)); Puzzle puzzle = databaseRepo.getPuzzle(extractId(matcher));
if (puzzle != null) { if (puzzle != null){
Chapter chapter = this.databaseRepo.getChapter(puzzle);
if(chapter.getStartDate() != null){
if(LocalDateTime.now().isBefore(chapter.getStartDate().toLocalDateTime())){
HttpUtil.responseHeaders(writer, 423, "Access-Control-Allow-Origin: *");
return;
}
}
// if(chapter.getEndDate() != null){
// if(LocalDateTime.now().isAfter(chapter.getEndDate().toLocalDateTime())){
// HttpUtil.responseHeaders(writer, 423, "Access-Control-Allow-Origin: *");
// return;
// }
// }
JSONObject puzzleJSON = new JSONObject(); JSONObject puzzleJSON = new JSONObject();
puzzleJSON.put("id", puzzle.getId()); puzzleJSON.put("id", puzzle.getId());
puzzleJSON.put("name", puzzle.getName()); puzzleJSON.put("name", puzzle.getName());

View file

@ -7,6 +7,7 @@ import java.nio.file.Files;
import java.nio.file.Path; import java.nio.file.Path;
import java.nio.file.Paths; import java.nio.file.Paths;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.regex.Matcher; import java.util.regex.Matcher;
@ -43,7 +44,7 @@ public class PuzzleResponse implements Response {
@RouteDoc(responseCode = 400, responseDescription = "Pas de réponse") @RouteDoc(responseCode = 400, responseDescription = "Pas de réponse")
@RouteDoc(responseCode = 403, responseDescription = "Déjà répondu") @RouteDoc(responseCode = 403, responseDescription = "Déjà répondu")
@RouteDoc(responseCode = 406, responseDescription = "Mauvaise réponse") @RouteDoc(responseCode = 406, responseDescription = "Mauvaise réponse")
@RouteDoc(responseCode = 423, responseDescription = "L'utilisateur essaye de répondre après la fin de l'event") @RouteDoc(responseCode = 423, responseDescription = "L'utilisateur essaye de répondre en dehors de l'event")
@Route(path = "^\\/puzzleResponse\\/([0-9]+)$", type = POST, needLogin = true) @Route(path = "^\\/puzzleResponse\\/([0-9]+)$", type = POST, needLogin = true)
public void exec(Matcher matcher, User user, HttpReader reader, HttpWriter writer) throws Exception{ public void exec(Matcher matcher, User user, HttpReader reader, HttpWriter writer) throws Exception{
@ -61,12 +62,31 @@ public class PuzzleResponse implements Response {
Puzzle currentPuzzle = databaseRepo.getPuzzle(received.getPuzzleId()); Puzzle currentPuzzle = databaseRepo.getPuzzle(received.getPuzzleId());
Chapter chapter = this.databaseRepo.getChapter(currentPuzzle); Chapter chapter = this.databaseRepo.getChapter(currentPuzzle);
if(chapter.getEndDate() != null){ if(chapter.getStartDate() != null){
if(LocalDateTime.now().isAfter(chapter.getEndDate().toLocalDateTime())){ if(LocalDateTime.now().isBefore(chapter.getStartDate().toLocalDateTime())){
HttpUtil.responseHeaders(writer, 423, "Access-Control-Allow-Origin: *"); HttpUtil.responseHeaders(writer, 423, "Access-Control-Allow-Origin: *");
return; return;
} }
} }
if(chapter.getEndDate() != null){
if(LocalDateTime.now().isAfter(chapter.getEndDate().toLocalDateTime())){
if(Arrays.equals(currentPuzzle.getSoluce(), received.getResponse())){
HttpUtil.responseHeaders(writer, 200, "Access-Control-Allow-Origin: *", "Content-Type: application/json");
JSONObject theoSaisPasJusteRecevoir200 = new JSONObject();
theoSaisPasJusteRecevoir200.put("success", true);
writer.write(theoSaisPasJusteRecevoir200.toJSONString());
return;
}
HttpUtil.responseHeaders(writer, 423, "Access-Control-Allow-Origin: *");
return;
}
Group group = this.databaseRepo.getPlayerGroup(user.getId(), chapter.getId());
if(group == null){
HttpUtil.responseHeaders(writer, 423, "Access-Control-Allow-Origin: *");
return;
}
}
Completion completion = databaseRepo.insertOrUpdatePuzzleResponse(received.getPuzzleId(), user.getId(), Completion completion = databaseRepo.insertOrUpdatePuzzleResponse(received.getPuzzleId(), user.getId(),
received.getFileName(), received.getSourceCode(), received.getResponse(), currentPuzzle); received.getFileName(), received.getSourceCode(), received.getResponse(), currentPuzzle);

View file

@ -39,7 +39,7 @@ public class GroupCreate implements Response {
public void exec(Matcher matcher, User user, HttpReader reader, HttpWriter writer) throws Exception{ public void exec(Matcher matcher, User user, HttpReader reader, HttpWriter writer) throws Exception{
Group newGroup = new Group((JSONObject) HttpUtil.readJson(reader)); Group newGroup = new Group((JSONObject) HttpUtil.readJson(reader));
if (this.repo.getPlayerGroup(user.getId(), newGroup.getLinkToChapter(), newGroup.getLinkToPuzzle()) == null) { if (this.repo.getPlayerGroup(user.getId(), newGroup.getLinkToChapter()) == null) {
try { try {
if(this.repo.getGroupId(newGroup) == null) throw new NullPointerException(); if(this.repo.getGroupId(newGroup) == null) throw new NullPointerException();
HttpUtil.responseHeaders(writer, 403, "Access-Control-Allow-Origin: *"); HttpUtil.responseHeaders(writer, 403, "Access-Control-Allow-Origin: *");
@ -49,7 +49,7 @@ public class GroupCreate implements Response {
Chapter chapter = this.repo.getChapter(newGroup.getLinkToChapter()); Chapter chapter = this.repo.getChapter(newGroup.getLinkToChapter());
if(chapter.getStartDate() != null){ if(chapter.getStartDate() != null){
LocalDateTime start = chapter.getStartDate().toLocalDateTime().plusMinutes(this.groupDelay); LocalDateTime start = chapter.getStartDate().toLocalDateTime().plusMinutes(this.groupDelay);
if(start.isAfter(LocalDateTime.now())){ if(LocalDateTime.now().isAfter(start)){
HttpUtil.responseHeaders(writer, 423, "Access-Control-Allow-Origin: *"); HttpUtil.responseHeaders(writer, 423, "Access-Control-Allow-Origin: *");
return; return;
} }

View file

@ -39,13 +39,13 @@ public class GroupJoin implements Response{
public void exec(Matcher matcher, User user, HttpReader reader, HttpWriter writer) throws Exception{ public void exec(Matcher matcher, User user, HttpReader reader, HttpWriter writer) throws Exception{
Group group = new Group((JSONObject) HttpUtil.readJson(reader)); Group group = new Group((JSONObject) HttpUtil.readJson(reader));
Group userGroup = this.repo.getPlayerGroup(user.getId(), group.getLinkToChapter(), group.getLinkToPuzzle()); Group userGroup = this.repo.getPlayerGroup(user.getId(), group.getLinkToChapter());
if(group.equals(userGroup)){ if(group.equals(userGroup)){
HttpUtil.responseHeaders(writer, 403, "Access-Control-Allow-Origin: *"); HttpUtil.responseHeaders(writer, 403, "Access-Control-Allow-Origin: *");
return; return;
} }
if(group.getLinkToChapter() == null && group.getLinkToPuzzle() == null){ if(group.getLinkToChapter() == null){
HttpUtil.responseHeaders(writer, 409, "Access-Control-Allow-Origin: *"); HttpUtil.responseHeaders(writer, 409, "Access-Control-Allow-Origin: *");
writer.write(waitTime); writer.write(waitTime);
return; return;
@ -55,7 +55,7 @@ public class GroupJoin implements Response{
Chapter chapter = this.repo.getChapter(group.getLinkToChapter()); Chapter chapter = this.repo.getChapter(group.getLinkToChapter());
if(chapter.getStartDate() != null){ if(chapter.getStartDate() != null){
LocalDateTime start = chapter.getStartDate().toLocalDateTime().plusMinutes(this.groupDelay); LocalDateTime start = chapter.getStartDate().toLocalDateTime().plusMinutes(this.groupDelay);
if(start.isAfter(LocalDateTime.now())){ if(LocalDateTime.now().isAfter(start)){
HttpUtil.responseHeaders(writer, 423, "Access-Control-Allow-Origin: *"); HttpUtil.responseHeaders(writer, 423, "Access-Control-Allow-Origin: *");
return; return;
} }

View file

@ -36,7 +36,7 @@ public class GroupQuit implements Response{
public void exec(Matcher matcher, User user, HttpReader reader, HttpWriter writer) throws Exception{ public void exec(Matcher matcher, User user, HttpReader reader, HttpWriter writer) throws Exception{
Group group = new Group((JSONObject) HttpUtil.readJson(reader)); Group group = new Group((JSONObject) HttpUtil.readJson(reader));
Group userGroup = this.repo.getPlayerGroup(user.getId(), group.getLinkToChapter(), group.getLinkToPuzzle()); Group userGroup = this.repo.getPlayerGroup(user.getId(), group.getLinkToChapter());
if(!group.equals(userGroup)){ if(!group.equals(userGroup)){
HttpUtil.responseHeaders(writer, 403, "Access-Control-Allow-Origin: *"); HttpUtil.responseHeaders(writer, 403, "Access-Control-Allow-Origin: *");
return; return;
@ -46,7 +46,7 @@ public class GroupQuit implements Response{
Chapter chapter = this.repo.getChapter(group.getLinkToChapter()); Chapter chapter = this.repo.getChapter(group.getLinkToChapter());
if(chapter.getStartDate() != null){ if(chapter.getStartDate() != null){
LocalDateTime start = chapter.getStartDate().toLocalDateTime().plusMinutes(this.groupDelay); LocalDateTime start = chapter.getStartDate().toLocalDateTime().plusMinutes(this.groupDelay);
if(start.isAfter(LocalDateTime.now())){ if(LocalDateTime.now().isAfter(start)){
HttpUtil.responseHeaders(writer, 423, "Access-Control-Allow-Origin: *"); HttpUtil.responseHeaders(writer, 423, "Access-Control-Allow-Origin: *");
return; return;
} }