File: /home/imensosw/demo.imensosoftware.com/matrix/admin/report_code.php
<?php
require_once '../config.php';
$start_date = $_POST['filter']['start_date'] ?? null;
$end_date = $_POST['filter']['end_date'] ?? null;
// ✅ Default date fallback
if (empty($start_date) || empty($end_date)) {
$end_date = date('Y-m-d');
$start_date = date('Y-m-d', strtotime('-7 days'));
}
// ✅ Prepared Statement (SECURE)
$stmt = $conn->prepare("
SELECT
users.id as user_id,
users.name as user_name,
assignments.submit_date,
SUM(assignments.no_of_record) as total
FROM assignments
INNER JOIN users ON users.id = assignments.user_id
INNER JOIN role_user ON role_user.user_id = users.id
WHERE
role_user.role_id = 3
AND assignments.assignment_status_id = 2
AND assignments.submit_date BETWEEN ? AND ?
GROUP BY users.id, assignments.submit_date
ORDER BY assignments.submit_date ASC
");
$stmt->bind_param("ss", $start_date, $end_date);
$stmt->execute();
$result = $stmt->get_result();
// ✅ Dynamic data structure
$data = [];
while ($row = $result->fetch_assoc()) {
$userKey = "data" . preg_replace('/\s+/', '', $row['user_name']);
if (!isset($data[$userKey])) {
$data[$userKey] = [];
}
$data[$userKey][] = [
"y" => (int)$row['total'],
"label" => $row['submit_date'],
"user_name" => $row['user_name'],
"user_id" => (int)$row['user_id']
];
}
// ✅ Ensure empty users exist (important for frontend)
$usersResult = $conn->query("
SELECT users.name
FROM users
INNER JOIN role_user ON users.id = role_user.user_id
WHERE role_user.role_id = 3
");
while ($u = $usersResult->fetch_assoc()) {
$key = "data" . preg_replace('/\s+/', '', $u['name']);
if (!isset($data[$key])) {
$data[$key] = [];
}
}
// ✅ Response
echo json_encode($data, JSON_NUMERIC_CHECK);
?>