<?php
// add_puzzle_points.php
header("Cache-Control: no-store, no-cache, must-revalidate, max-age=0");
header("Pragma: no-cache");
header('Content-Type: application/json');
require 'db.php';

$input = json_decode(file_get_contents('php://input'), true);
$guestId = (int) ($input['guest_id'] ?? 0);
$puzzleId = (int) ($input['puzzle_id'] ?? 0);
$points = (int) ($input['points'] ?? 5);

if ($guestId <= 0 || $puzzleId <= 0) {
    echo json_encode(['status' => 'error', 'message' => 'Niepoprawne dane']);
    exit;
}

try {
    // 1. Sprawdź czy już nie rozwiązano
    $stmt = $pdo->prepare("SELECT id FROM solved_puzzles WHERE guest_id = ? AND puzzle_id = ?");
    $stmt->execute([$guestId, $puzzleId]);
    if ($stmt->fetch()) {
        echo json_encode(['status' => 'error', 'message' => 'Zagadka została już rozwiązana']);
        exit;
    }

    // 2. Rozpocznij transakcję
    $pdo->beginTransaction();

    // Dodaj punkty
    $stmt = $pdo->prepare("UPDATE guests SET points = points + ? WHERE id = ?");
    $stmt->execute([$points, $guestId]);

    // Zaloguj rozwiązanie
    $stmt = $pdo->prepare("INSERT INTO solved_puzzles (guest_id, puzzle_id) VALUES (?, ?)");
    $stmt->execute([$guestId, $puzzleId]);

    $pdo->commit();

    echo json_encode(['status' => 'success', 'message' => 'Wynik został zapisany']);

} catch (Exception $e) {
    if ($pdo->inTransaction()) {
        $pdo->rollBack();
    }
    echo json_encode(['status' => 'error', 'message' => 'Błąd serwera: ' . $e->getMessage()]);
}
?>