query('SELECT setting_key, setting_value FROM settings'); $settings = $settings_stmt->fetchAll(PDO::FETCH_KEY_PAIR); $coach_mode = $settings['coach_mode'] ?? 'multi'; if (!isset($_SESSION['user_id'])) { header('Location: login.php'); exit; } $user_id = $_SESSION['user_id']; $user_role = $_SESSION['user_role']; $bookings = []; $existing_reviews = []; $subscription = null; // Update status of past bookings to 'completed' $update_stmt = db()->prepare("UPDATE bookings SET status = 'completed' WHERE status = 'confirmed' AND booking_time < NOW()"); $update_stmt->execute(); if ($user_role === 'client') { $stmt = db()->prepare("SELECT b.*, c.name as coach_name FROM bookings b JOIN coaches c ON b.coach_id = c.id WHERE b.client_id = ? ORDER BY b.booking_time DESC"); $stmt->execute([$user_id]); $bookings = $stmt->fetchAll(); $review_stmt = db()->prepare("SELECT booking_id FROM reviews WHERE client_id = ?"); $review_stmt->execute([$user_id]); $existing_reviews = $review_stmt->fetchAll(PDO::FETCH_COLUMN); $sub_stmt = db()->prepare("SELECT * FROM client_subscriptions WHERE client_id = ? AND (status = 'active' OR status = 'trialing') ORDER BY created_at DESC LIMIT 1"); $sub_stmt->execute([$user_id]); $subscription = $sub_stmt->fetch(); $client_stmt = db()->prepare("SELECT timezone FROM clients WHERE id = ?"); $client_stmt->execute([$user_id]); $client = $client_stmt->fetch(); } elseif ($user_role === 'coach') { $stmt = db()->prepare("SELECT b.*, c.name as client_name FROM bookings b JOIN clients c ON b.client_id = c.id WHERE b.coach_id = ? ORDER BY b.booking_time DESC"); $stmt->execute([$user_id]); $bookings = $stmt->fetchAll(); $coach_stmt = db()->prepare("SELECT buffer_time, timezone FROM coaches WHERE id = ?"); $coach_stmt->execute([$user_id]); $coach = $coach_stmt->fetch(); } ?> Dashboard - CoachConnect

Manage Your One-Off Availability

Manage Your Recurring Weekly Availability

Manage Your Settings

Manage Service Packages

Create, view, and manage your coaching packages.

Manage Packages

Manage Your Portfolio

Update your bio, specialties, and upload media to showcase your work.

Edit Portfolio

Admin Settings

Configure site-wide settings and modes.

Go to Settings

Manage Your Settings

Your Packages

prepare("SELECT cp.sessions_remaining, sp.name FROM client_packages cp JOIN service_packages sp ON cp.package_id = sp.id WHERE cp.client_id = ?"); $packages_stmt->execute([$user_id]); $client_packages = $packages_stmt->fetchAll(); ?>

You have not purchased any packages yet.

Browse Packages

Your Subscriptions

prepare("SELECT cs.*, sp.name FROM client_subscriptions cs JOIN service_packages sp ON cs.package_id = sp.id WHERE cs.client_id = ? ORDER BY cs.created_at DESC"); $subs_stmt->execute([$user_id]); $subscriptions = $subs_stmt->fetchAll(); ?> Manage Subscriptions

You do not have any active subscriptions.

Your Bookings

prepare("SELECT * FROM coach_availability WHERE coach_id = ? ORDER BY start_time DESC"); $stmt->execute([$user_id]); $availability = $stmt->fetchAll(); } if (empty($availability)): ?>
Start Time End Time
No availability set.

Delete

Your Recurring Weekly Availability

prepare("SELECT * FROM coach_recurring_availability WHERE coach_id = ? ORDER BY day_of_week, start_time"); $stmt->execute([$user_id]); $recurring_availability = $stmt->fetchAll(); $days_of_week = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']; } if (empty($recurring_availability)): ?>
Day of Week Start Time End Time
No recurring availability set.

Delete
Booking Time Status
No bookings found.

Approve Decline Cancel Review Refund