41 Zeilen
1,9 KiB
PHP
41 Zeilen
1,9 KiB
PHP
|
|
<?php
|
||
|
|
$user_id = require_auth();
|
||
|
|
if (get_method() !== 'GET') json_error('Methode nicht erlaubt', 405);
|
||
|
|
|
||
|
|
$stmt = $pdo->prepare("SELECT COUNT(*) FROM card_progress WHERE user_id = :uid AND last_reviewed_at IS NOT NULL");
|
||
|
|
$stmt->execute([':uid' => $user_id]);
|
||
|
|
$cards_learned = (int) $stmt->fetchColumn();
|
||
|
|
|
||
|
|
$stmt = $pdo->prepare("SELECT COUNT(*) FROM card_progress WHERE user_id = :uid AND next_review <= CURRENT_DATE");
|
||
|
|
$stmt->execute([':uid' => $user_id]);
|
||
|
|
$cards_due = (int) $stmt->fetchColumn();
|
||
|
|
|
||
|
|
$stmt = $pdo->prepare("
|
||
|
|
SELECT COUNT(*) FILTER (WHERE last_rating IN ('easy','medium')) AS correct, COUNT(*) AS total
|
||
|
|
FROM card_progress WHERE user_id = :uid AND last_reviewed_at IS NOT NULL
|
||
|
|
");
|
||
|
|
$stmt->execute([':uid' => $user_id]);
|
||
|
|
$acc = $stmt->fetch();
|
||
|
|
$correct_pct = ($acc['total'] > 0) ? round(($acc['correct'] / $acc['total']) * 100) : 0;
|
||
|
|
|
||
|
|
$total_cards = (int) $pdo->query("SELECT COUNT(*) FROM cards")->fetchColumn();
|
||
|
|
|
||
|
|
$stmt = $pdo->prepare("SELECT COUNT(*) FROM tutorial_progress WHERE user_id = :uid AND completed = true");
|
||
|
|
$stmt->execute([':uid' => $user_id]);
|
||
|
|
$tutorials_done = (int) $stmt->fetchColumn();
|
||
|
|
$tutorials_total = (int) $pdo->query("SELECT COUNT(*) FROM tutorials")->fetchColumn();
|
||
|
|
|
||
|
|
$deck_count = (int) $pdo->query("SELECT COUNT(*) FROM decks")->fetchColumn();
|
||
|
|
$cheatsheet_count = (int) $pdo->query("SELECT COUNT(*) FROM cheatsheets")->fetchColumn();
|
||
|
|
|
||
|
|
$stmt = $pdo->prepare("SELECT score_percent FROM quiz_results WHERE user_id = :uid ORDER BY created_at DESC LIMIT 1");
|
||
|
|
$stmt->execute([':uid' => $user_id]);
|
||
|
|
$last_quiz = $stmt->fetchColumn();
|
||
|
|
|
||
|
|
json_ok([
|
||
|
|
'cards_learned' => $cards_learned, 'cards_due' => $cards_due, 'cards_total' => $total_cards,
|
||
|
|
'correct_pct' => $correct_pct, 'tutorials_done' => $tutorials_done, 'tutorials_total' => $tutorials_total,
|
||
|
|
'deck_count' => $deck_count, 'cheatsheet_count' => $cheatsheet_count,
|
||
|
|
'last_quiz_score' => $last_quiz !== false ? (int) $last_quiz : null
|
||
|
|
]);
|