diff --git a/admin.php b/admin.php new file mode 100644 index 0000000..61a9293 --- /dev/null +++ b/admin.php @@ -0,0 +1,165 @@ +beginTransaction(); + + $stmt = $pdo->prepare("INSERT INTO lootjes_rondes (naam) VALUES (?)"); + $stmt->execute([$rondeNaam]); + $ronde_id = $pdo->lastInsertId(); + + // Shuffle algoritme: geen enkel persoon mag zichzelf trekken + $gevers = $members; + $ontvangers = $members; + $maxRetries = 1000; + $retry = 0; + do { + shuffle($ontvangers); + $valid = true; + for ($i = 0; $i < count($gevers); $i++) { + if ($gevers[$i] === $ontvangers[$i]) { + $valid = false; + break; + } + } + $retry++; + if ($retry > $maxRetries) { + throw new Exception("Kan geen geldige lootjes toewijzen na $maxRetries pogingen."); + } + } while (!$valid); + + // Opslaan in database + $stmtInsert = $pdo->prepare("INSERT INTO lootjes (ronde_id, gever, ontvanger) VALUES (?, ?, ?)"); + for ($i = 0; $i < count($gevers); $i++) { + $stmtInsert->execute([$ronde_id, $gevers[$i], $ontvangers[$i]]); + } + + $pdo->commit(); + + log_action($pdo, $_SESSION['user']['username'], "Nieuwe ronde gestart: $rondeNaam", "Admin pagina"); + $message = "Nieuwe ronde '$rondeNaam' succesvol gestart!"; + } catch (Exception $e) { + $pdo->rollBack(); + $message = "Fout bij starten van nieuwe ronde: " . $e->getMessage(); + } + } +} + +// Ronde afronden +if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['close_round'])) { + $ronde_id = $_POST['round_id'] ?? 0; + if ($ronde_id) { + $stmt = $pdo->prepare("UPDATE lootjes_rondes SET status='afgerond' WHERE id=?"); + $stmt->execute([$ronde_id]); + log_action($pdo, $_SESSION['user']['username'], "Ronde $ronde_id afgerond", "Admin pagina"); + $message = "Ronde afgerond!"; + } +} + +// Huidige rondes ophalen (nieuwste eerst) +try { + $stmt = $pdo->query("SELECT * FROM lootjes_rondes ORDER BY created_at DESC"); + $rondes = $stmt->fetchAll(); +} catch (PDOException $e) { + die("Fout bij ophalen van rondes: " . $e->getMessage()); +} +?> + + + +
+ +| ID | Naam | Status | Acties | Lootjes |
|---|---|---|---|---|
| = $r['id'] ?> | += htmlspecialchars($r['naam']) ?> | += $r['status'] ?> | ++ + + + Afgerond + + | +
+ prepare("SELECT gever, ontvanger FROM lootjes WHERE ronde_id=?");
+ $stmtLootjes->execute([$r['id']]);
+ $lootjes = $stmtLootjes->fetchAll();
+ if ($lootjes):
+ ?>
+
|
+