Path : /home/vishqocm/pcib.in/admin/
File Upload :
Current File : /home/vishqocm/pcib.in/admin/team-management.php

<?php
// Start the session
session_start();

// Include database configuration
require_once 'database/db_config.php';

// Check if user is logged in and is an admin
if (!isset($_SESSION['user_id']) || !isset($_SESSION['role']) || ($_SESSION['role'] != 'admin' && $_SESSION['role'] != 'director')) {
    header('Location: login.php');
    exit;
}

// Handle team member toggle
if (isset($_POST['toggle_team_member'])) {
    $user_id = (int) $_POST['user_id'];
    $is_team_member = (int) $_POST['is_team_member'];
    
    $update_query = "UPDATE users SET is_team_member = ? WHERE id = ?";
    $stmt = $conn->prepare($update_query);
    $stmt->bind_param("ii", $is_team_member, $user_id);
    
    if ($stmt->execute()) {
        $_SESSION['success_message'] = "Team member status updated successfully!";
    } else {
        $_SESSION['error_message'] = "Error updating team member status: " . $conn->error;
    }
    
    header('Location: team-management.php');
    exit;
}

// Check for success or error messages
$success_message = '';
$error_message = '';

if (isset($_SESSION['success_message'])) {
    $success_message = $_SESSION['success_message'];
    unset($_SESSION['success_message']);
}

if (isset($_SESSION['error_message'])) {
    $error_message = $_SESSION['error_message'];
    unset($_SESSION['error_message']);
}

// Get all instructors, directors, and developers
$role_filter = isset($_GET['role']) ? $_GET['role'] : 'all';
$team_filter = isset($_GET['team']) ? $_GET['team'] : 'all';
$search = isset($_GET['search']) ? $_GET['search'] : '';

$sql = "SELECT * FROM users WHERE 
        (role = 'instructor' OR role = 'director' OR role = 'developer')";

if ($role_filter != 'all') {
    $role = $conn->real_escape_string($role_filter);
    $sql .= " AND role = '$role'";
}

if ($team_filter != 'all') {
    $is_team = ($team_filter == 'team') ? 1 : 0;
    $sql .= " AND is_team_member = $is_team";
}

if (!empty($search)) {
    $search_term = $conn->real_escape_string($search);
    $sql .= " AND (first_name LIKE '%$search_term%' OR last_name LIKE '%$search_term%' OR email LIKE '%$search_term%')";
}

$sql .= " ORDER BY 
            CASE 
                WHEN role = 'director' THEN 1
                WHEN role = 'developer' THEN 2
                ELSE 3
            END, 
            first_name";

$team_members_result = $conn->query($sql);

// Include header
include 'includes/header.php';
?>

<!-- Begin Page Content -->
<div class="container-fluid">

    <!-- Page Heading -->
    <div class="d-sm-flex align-items-center justify-content-between mb-4">
        <h1 class="h3 mb-0 text-gray-800">Team Management</h1>
        <a href="user-add.php" class="d-none d-sm-inline-block btn btn-sm btn-primary shadow-sm">
            <i class="fas fa-plus fa-sm text-white-50"></i> Add New User
        </a>
    </div>

    <?php if (!empty($success_message)): ?>
    <div class="alert alert-success alert-dismissible fade show" role="alert">
        <?php echo $success_message; ?>
        <button type="button" class="close" data-dismiss="alert" aria-label="Close">
            <span aria-hidden="true">&times;</span>
        </button>
    </div>
    <?php endif; ?>

    <?php if (!empty($error_message)): ?>
    <div class="alert alert-danger alert-dismissible fade show" role="alert">
        <?php echo $error_message; ?>
        <button type="button" class="close" data-dismiss="alert" aria-label="Close">
            <span aria-hidden="true">&times;</span>
        </button>
    </div>
    <?php endif; ?>

    <!-- Content Row -->
    <div class="row">
        <div class="col-xl-3 col-md-6 mb-4">
            <div class="card border-left-primary shadow h-100 py-2">
                <div class="card-body">
                    <div class="row no-gutters align-items-center">
                        <div class="col mr-2">
                            <div class="text-xs font-weight-bold text-primary text-uppercase mb-1">
                                Total Team Members</div>
                            <div class="h5 mb-0 font-weight-bold text-gray-800">
                                <?php
                                $query = "SELECT COUNT(*) as count FROM users WHERE (role = 'instructor' OR role = 'director' OR role = 'developer') AND is_team_member = 1";
                                $result = $conn->query($query);
                                $row = $result->fetch_assoc();
                                echo $row['count'];
                                ?>
                            </div>
                        </div>
                        <div class="col-auto">
                            <i class="fas fa-users fa-2x text-gray-300"></i>
                        </div>
                    </div>
                </div>
            </div>
        </div>

        <div class="col-xl-3 col-md-6 mb-4">
            <div class="card border-left-success shadow h-100 py-2">
                <div class="card-body">
                    <div class="row no-gutters align-items-center">
                        <div class="col mr-2">
                            <div class="text-xs font-weight-bold text-success text-uppercase mb-1">
                                Directors</div>
                            <div class="h5 mb-0 font-weight-bold text-gray-800">
                                <?php
                                $query = "SELECT COUNT(*) as count FROM users WHERE role = 'director' AND is_team_member = 1";
                                $result = $conn->query($query);
                                $row = $result->fetch_assoc();
                                echo $row['count'];
                                ?>
                            </div>
                        </div>
                        <div class="col-auto">
                            <i class="fas fa-user-tie fa-2x text-gray-300"></i>
                        </div>
                    </div>
                </div>
            </div>
        </div>

        <div class="col-xl-3 col-md-6 mb-4">
            <div class="card border-left-info shadow h-100 py-2">
                <div class="card-body">
                    <div class="row no-gutters align-items-center">
                        <div class="col mr-2">
                            <div class="text-xs font-weight-bold text-info text-uppercase mb-1">
                                Developers</div>
                            <div class="h5 mb-0 font-weight-bold text-gray-800">
                                <?php
                                $query = "SELECT COUNT(*) as count FROM users WHERE role = 'developer' AND is_team_member = 1";
                                $result = $conn->query($query);
                                $row = $result->fetch_assoc();
                                echo $row['count'];
                                ?>
                            </div>
                        </div>
                        <div class="col-auto">
                            <i class="fas fa-code fa-2x text-gray-300"></i>
                        </div>
                    </div>
                </div>
            </div>
        </div>

        <div class="col-xl-3 col-md-6 mb-4">
            <div class="card border-left-warning shadow h-100 py-2">
                <div class="card-body">
                    <div class="row no-gutters align-items-center">
                        <div class="col mr-2">
                            <div class="text-xs font-weight-bold text-warning text-uppercase mb-1">
                                Instructors</div>
                            <div class="h5 mb-0 font-weight-bold text-gray-800">
                                <?php
                                $query = "SELECT COUNT(*) as count FROM users WHERE role = 'instructor' AND is_team_member = 1";
                                $result = $conn->query($query);
                                $row = $result->fetch_assoc();
                                echo $row['count'];
                                ?>
                            </div>
                        </div>
                        <div class="col-auto">
                            <i class="fas fa-chalkboard-teacher fa-2x text-gray-300"></i>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>

    <!-- Team Management Filter Options -->
    <div class="card shadow mb-4">
        <div class="card-header py-3 d-flex flex-row align-items-center justify-content-between">
            <h6 class="m-0 font-weight-bold text-primary">Filter Team Members</h6>
        </div>
        <div class="card-body">
            <form action="" method="GET" class="mb-3">
                <div class="row">
                    <div class="col-md-3 mb-3">
                        <select name="role" class="form-control">
                            <option value="all" <?php echo $role_filter == 'all' ? 'selected' : ''; ?>>All Roles</option>
                            <option value="director" <?php echo $role_filter == 'director' ? 'selected' : ''; ?>>Directors</option>
                            <option value="developer" <?php echo $role_filter == 'developer' ? 'selected' : ''; ?>>Developers</option>
                            <option value="instructor" <?php echo $role_filter == 'instructor' ? 'selected' : ''; ?>>Instructors</option>
                        </select>
                    </div>
                    <div class="col-md-3 mb-3">
                        <select name="team" class="form-control">
                            <option value="all" <?php echo $team_filter == 'all' ? 'selected' : ''; ?>>All Users</option>
                            <option value="team" <?php echo $team_filter == 'team' ? 'selected' : ''; ?>>Team Members Only</option>
                            <option value="non-team" <?php echo $team_filter == 'non-team' ? 'selected' : ''; ?>>Non-Team Members</option>
                        </select>
                    </div>
                    <div class="col-md-4 mb-3">
                        <input type="text" name="search" class="form-control" placeholder="Search by name or email..." 
                            value="<?php echo htmlspecialchars($search); ?>">
                    </div>
                    <div class="col-md-2 mb-3">
                        <button type="submit" class="btn btn-primary btn-block">Filter</button>
                    </div>
                </div>
            </form>
        </div>
    </div>

    <!-- Team Members List -->
    <div class="card shadow mb-4">
        <div class="card-header py-3">
            <h6 class="m-0 font-weight-bold text-primary">Team Members</h6>
        </div>
        <div class="card-body">
            <div class="table-responsive">
                <table class="table table-bordered" id="teamTable" width="100%" cellspacing="0">
                    <thead>
                        <tr>
                            <th>Name</th>
                            <th>Email</th>
                            <th>Role</th>
                            <th>Phone</th>
                            <th>Status</th>
                            <th>Team Member</th>
                            <th>Actions</th>
                        </tr>
                    </thead>
                    <tbody>
                        <?php
                        if ($team_members_result && $team_members_result->num_rows > 0) {
                            while ($row = $team_members_result->fetch_assoc()) {
                        ?>
                        <tr>
                            <td>
                                <div class="d-flex align-items-center">
                                    <img src="<?php echo !empty($row['profile_image']) ? '../' . $row['profile_image'] : '../assets/img/defaults/default-avatar.png'; ?>" 
                                        alt="<?php echo htmlspecialchars($row['first_name'] . ' ' . $row['last_name']); ?>" 
                                        class="img-profile rounded-circle mr-2" style="width: 40px; height: 40px; object-fit: cover;">
                                    <div>
                                        <?php echo htmlspecialchars($row['first_name'] . ' ' . $row['last_name']); ?>
                                    </div>
                                </div>
                            </td>
                            <td><?php echo htmlspecialchars($row['email']); ?></td>
                            <td>
                                <?php 
                                $role_badge = '';
                                switch ($row['role']) {
                                    case 'director':
                                        $role_badge = 'badge-warning';
                                        break;
                                    case 'developer':
                                        $role_badge = 'badge-info';
                                        break;
                                    case 'instructor':
                                        $role_badge = 'badge-success';
                                        break;
                                    default:
                                        $role_badge = 'badge-secondary';
                                }
                                ?>
                                <span class="badge <?php echo $role_badge; ?>"><?php echo ucfirst($row['role']); ?></span>
                            </td>
                            <td><?php echo htmlspecialchars($row['phone'] ?? 'N/A'); ?></td>
                            <td>
                                <?php 
                                $status_badge = $row['status'] == 'active' ? 'badge-success' : 'badge-danger';
                                ?>
                                <span class="badge <?php echo $status_badge; ?>"><?php echo ucfirst($row['status']); ?></span>
                            </td>
                            <td class="text-center">
                                <form action="team-management.php" method="POST">
                                    <input type="hidden" name="user_id" value="<?php echo $row['id']; ?>">
                                    <input type="hidden" name="is_team_member" value="<?php echo $row['is_team_member'] ? '0' : '1'; ?>">
                                    <button type="submit" name="toggle_team_member" class="btn btn-sm <?php echo $row['is_team_member'] ? 'btn-success active' : 'btn-secondary'; ?>">
                                        <i class="fas <?php echo $row['is_team_member'] ? 'fa-toggle-on' : 'fa-toggle-off'; ?>"></i>
                                        <?php echo $row['is_team_member'] ? 'Yes' : 'No'; ?>
                                    </button>
                                </form>
                            </td>
                            <td>
                                <a href="user-edit.php?id=<?php echo $row['id']; ?>" class="btn btn-sm btn-primary">
                                    <i class="fas fa-edit"></i> Edit
                                </a>
                                <a href="../instructor-details.php?id=<?php echo $row['id']; ?>" class="btn btn-sm btn-info" target="_blank">
                                    <i class="fas fa-eye"></i> View
                                </a>
                            </td>
                        </tr>
                        <?php
                            }
                        } else {
                        ?>
                        <tr>
                            <td colspan="7" class="text-center">No team members found</td>
                        </tr>
                        <?php
                        }
                        ?>
                    </tbody>
                </table>
            </div>
        </div>
    </div>

    <!-- Team Management Guide -->
    <div class="card shadow mb-4">
        <div class="card-header py-3">
            <h6 class="m-0 font-weight-bold text-primary">Team Management Guide</h6>
        </div>
        <div class="card-body">
            <div class="row">
                <div class="col-md-6">
                    <h5>What are Team Members?</h5>
                    <p>Team members are users who will be displayed on the public-facing "Our Team" page. Only users with the role of Director, Developer, or Instructor can be team members.</p>
                    
                    <h5>How to Manage Team Members:</h5>
                    <ol>
                        <li>Toggle the "Team Member" switch to add or remove users from the public team page.</li>
                        <li>Edit a user's profile to update their information, expertise, and biography.</li>
                        <li>Set a user's status to "Inactive" to temporarily hide them without removing them from the team.</li>
                    </ol>
                </div>
                <div class="col-md-6">
                    <h5>User Roles Explained:</h5>
                    <ul>
                        <li><span class="badge badge-warning">Director</span> - Leadership roles, displayed at the top of the team page.</li>
                        <li><span class="badge badge-info">Developer</span> - Technical team members, displayed after directors.</li>
                        <li><span class="badge badge-success">Instructor</span> - Teaching staff, displayed after developers.</li>
                    </ul>
                    
                    <h5>Best Practices:</h5>
                    <ul>
                        <li>Ensure all team members have complete profiles with professional photos.</li>
                        <li>Include areas of expertise and contact information for each team member.</li>
                        <li>Keep biographies concise but informative, highlighting key qualifications.</li>
                    </ul>
                </div>
            </div>
        </div>
    </div>

</div>
<!-- /.container-fluid -->

<script>
// Initialize DataTables
$(document).ready(function() {
    $('#teamTable').DataTable({
        "order": [[ 2, "asc" ], [ 0, "asc" ]],
        "pageLength": 25
    });
});
</script>

<?php
// Include footer
include 'includes/footer.php';
?>