0) ? mysqli_fetch_assoc($result) : null; } $row = get_current_meeting($conn); // --- TEILNAHME-LOGIK & TERMINVERSCHIEBUNG --- if ($row) { $meeting_id = $row['id']; // Aktionen verarbeiten (Zusagen / Absagen / Vielleicht) if (isset($_GET['action']) && isset($_GET['meeting_id']) && $_GET['meeting_id'] == $meeting_id) { $action = $_GET['action']; $rsvp_status_value = null; $attended_value = 0; if ($action === 'accept') { $rsvp_status_value = 'accepted'; $attended_value = 1; } elseif ($action === 'decline') { $rsvp_status_value = 'declined'; $attended_value = 0; } elseif ($action === 'maybe') { $rsvp_status_value = 'maybe'; $attended_value = 0; } if ($rsvp_status_value !== null) { $check_sql = "SELECT rsvp_status FROM meeting_teilnehmer WHERE meeting_id = ? AND user_id = ?"; $check_stmt = mysqli_prepare($conn, $check_sql); $existing = null; if ($check_stmt) { mysqli_stmt_bind_param($check_stmt, "ii", $meeting_id, $logged_in_user_id); mysqli_stmt_execute($check_stmt); $existing = mysqli_fetch_assoc(mysqli_stmt_get_result($check_stmt)); mysqli_stmt_close($check_stmt); } if ($existing) { $update_sql = "UPDATE meeting_teilnehmer SET rsvp_status = ?, attended = ? WHERE meeting_id = ? AND user_id = ?"; $update_stmt = mysqli_prepare($conn, $update_sql); if ($update_stmt) { mysqli_stmt_bind_param($update_stmt, "siii", $rsvp_status_value, $attended_value, $meeting_id, $logged_in_user_id); mysqli_stmt_execute($update_stmt); mysqli_stmt_close($update_stmt); } } else { $insert_sql = "INSERT INTO meeting_teilnehmer (meeting_id, user_id, attended, rsvp_status) VALUES (?, ?, ?, ?)"; $insert_stmt = mysqli_prepare($conn, $insert_sql); if ($insert_stmt) { mysqli_stmt_bind_param($insert_stmt, "iiis", $meeting_id, $logged_in_user_id, $attended_value, $rsvp_status_value); mysqli_stmt_execute($insert_stmt); mysqli_stmt_close($insert_stmt); } } header("Location: index.php"); exit; } } // 🔥 Automatisch ablehnen, wenn im Abwesenheitsmodus $auto_declined = auto_decline_if_on_vacation($conn, $meeting_id, $logged_in_user_id, $row['meeting_date']); // Status abrufen $user_attendance_status = null; $user_status_sql = "SELECT rsvp_status FROM meeting_teilnehmer WHERE meeting_id = ? AND user_id = ?"; $user_status_stmt = mysqli_prepare($conn, $user_status_sql); if ($user_status_stmt) { mysqli_stmt_bind_param($user_status_stmt, "ii", $meeting_id, $logged_in_user_id); mysqli_stmt_execute($user_status_stmt); $user_status_result = mysqli_stmt_get_result($user_status_stmt); $user_status_row = mysqli_fetch_assoc($user_status_result); if ($user_status_row) { $user_attendance_status = $user_status_row['rsvp_status']; } mysqli_stmt_close($user_status_stmt); } // Teilnehmerlisten laden $attendees_sql = "SELECT t.rsvp_status, u.username FROM meeting_teilnehmer AS t LEFT JOIN users AS u ON t.user_id = u.id WHERE t.meeting_id = ?"; $attendees_stmt = mysqli_prepare($conn, $attendees_sql); $accepted_users = []; $declined_users = []; $maybe_users = []; $total_accepted = 0; $total_declined = 0; $total_maybe = 0; if ($attendees_stmt) { mysqli_stmt_bind_param($attendees_stmt, "i", $meeting_id); mysqli_stmt_execute($attendees_stmt); $attendees_result = mysqli_stmt_get_result($attendees_stmt); while ($row_user = mysqli_fetch_assoc($attendees_result)) { switch ($row_user['rsvp_status']) { case 'accepted': $accepted_users[] = htmlspecialchars($row_user['username']); $total_accepted++; break; case 'declined': $declined_users[] = htmlspecialchars($row_user['username']); $total_declined++; break; case 'maybe': $maybe_users[] = htmlspecialchars($row_user['username']); $total_maybe++; break; } } mysqli_stmt_close($attendees_stmt); } // --- ZAHLENDE PERSON BESTIMMEN --- $next_payer_username = null; if ($total_accepted > 0) { $sql_next_payer = " SELECT u.username, (SELECT COUNT(*) FROM meeting_teilnehmer WHERE user_id = u.id AND paid = 1) AS paid_count FROM meeting_teilnehmer mt JOIN users u ON mt.user_id = u.id WHERE mt.meeting_id = ? AND mt.rsvp_status = 'accepted' ORDER BY paid_count ASC "; $stmt_next_payer = mysqli_prepare($conn, $sql_next_payer); mysqli_stmt_bind_param($stmt_next_payer, "i", $meeting_id); mysqli_stmt_execute($stmt_next_payer); $result_next_payer = mysqli_stmt_get_result($stmt_next_payer); $payer_candidates = []; $min_paid_count = -1; while ($row_payer = mysqli_fetch_assoc($result_next_payer)) { if ($min_paid_count == -1 || $row_payer['paid_count'] < $min_paid_count) { $min_paid_count = $row_payer['paid_count']; $payer_candidates = [$row_payer['username']]; } elseif ($row_payer['paid_count'] == $min_paid_count) { $payer_candidates[] = $row_payer['username']; } } mysqli_stmt_close($stmt_next_payer); if (!empty($payer_candidates)) { sort($payer_candidates); $next_payer_username = $payer_candidates[0]; } } // --- TERMINVERSCHIEBUNG: Logik einbinden UND ausführen --- include('verschiebung.php'); handle_reschedule_actions($conn, $meeting_id, $logged_in_user_id); $reschedule_data = load_reschedule_data($conn, $meeting_id, $logged_in_user_id); $active_proposals = $reschedule_data['active_proposals']; $user_votes = $reschedule_data['user_votes']; $yes_voters = $reschedule_data['yes_voters']; $no_voters = $reschedule_data['no_voters']; } include('inc/header.php'); $german_weekdays = [ 'Mon' => 'Mo.', 'Tue' => 'Di.', 'Wed' => 'Mi.', 'Thu' => 'Do.', 'Fri' => 'Fr.', 'Sat' => 'Sa.', 'Sun' => 'So.' ]; ?>

Farbe des nächsten Treffens

nächster Termin:

Anderen Termin vorschlagen

Du hast zugesagt!

Du hast abgesagt!

Vielleicht dabei!

Bist du dabei?

Rechnung wird bezahlt von:

Aktive Verschiebungsvorschläge
(von )

✅ Ja: ()
❌ Nein: ()
Bereits abgestimmt:
Keine anstehenden Termine gefunden.