<?php
// Enable error reporting for debugging
error_reporting(E_ALL);
ini_set('display_errors', 1);
// Set headers for JSON response
header('Content-Type: application/json');
// Start session
session_start();
// Include database configuration
require_once '../../admin/database/db_config.php';
// Ensure we have a valid database connection before proceeding
if (!isset($conn) || !($conn instanceof mysqli) || $conn->connect_error) {
// Try to connect manually if the include didn't set up $conn correctly
$db_host = $db_host ?? 'localhost';
$db_user = $db_user ?? 'root';
$db_pass = $db_pass ?? '';
$db_name = $db_name ?? 'popularcomputer';
$conn = new mysqli($db_host, $db_user, $db_pass, $db_name);
if ($conn->connect_error) {
echo json_encode([
'success' => false,
'message' => 'Database connection failed: ' . $conn->connect_error
]);
exit();
}
}
// Check if user is logged in
if (!isset($_SESSION['user_id'])) {
echo json_encode([
'success' => false,
'message' => 'Authentication required'
]);
exit;
}
$user_id = $_SESSION['user_id'];
$application_id = isset($_GET['application_id']) ? intval($_GET['application_id']) : 0;
$response = [
'success' => true,
'refresh_needed' => false,
'documents' => [],
'total_documents' => 0,
'verified_documents' => 0,
'pending_documents' => 0,
'rejected_documents' => 0,
'completion_percentage' => 0,
'application_status' => '',
'all_documents_uploaded' => false
];
// Get application status if application_id is provided
if ($application_id > 0) {
$app_query = "SELECT status FROM enrollment_applications WHERE id = ? AND user_id = ?";
$app_stmt = $conn->prepare($app_query);
$app_stmt->bind_param("ii", $application_id, $user_id);
$app_stmt->execute();
$app_result = $app_stmt->get_result();
if ($app_result && $app_result->num_rows > 0) {
$app_data = $app_result->fetch_assoc();
$response['application_status'] = $app_data['status'];
}
}
// Define required document types
$required_document_types = ['id_proof', 'educational_certificate', 'photograph'];
$total_required = count($required_document_types);
// Get document counts by status
$count_query = "SELECT
COUNT(*) as total,
SUM(CASE WHEN status = 'verified' THEN 1 ELSE 0 END) as verified,
SUM(CASE WHEN status = 'pending' THEN 1 ELSE 0 END) as pending,
SUM(CASE WHEN status = 'rejected' THEN 1 ELSE 0 END) as rejected
FROM student_documents
WHERE user_id = ?";
$count_stmt = $conn->prepare($count_query);
$count_stmt->bind_param("i", $user_id);
$count_stmt->execute();
$count_result = $count_stmt->get_result()->fetch_assoc();
$response['total_documents'] = $count_result['total'] ?? 0;
$response['verified_documents'] = $count_result['verified'] ?? 0;
$response['pending_documents'] = $count_result['pending'] ?? 0;
$response['rejected_documents'] = $count_result['rejected'] ?? 0;
// Get all documents
$documents_query = "SELECT * FROM student_documents WHERE user_id = ? ORDER BY upload_date DESC";
$doc_stmt = $conn->prepare($documents_query);
$doc_stmt->bind_param("i", $user_id);
$doc_stmt->execute();
$documents_result = $doc_stmt->get_result();
// Count uploaded documents by type
$uploaded_documents = [];
$uploaded_required = 0;
if ($documents_result && $documents_result->num_rows > 0) {
while ($doc = $documents_result->fetch_assoc()) {
// Store document in response
$response['documents'][] = [
'id' => $doc['id'],
'type' => $doc['document_type'],
'path' => $doc['document_path'],
'upload_date' => date('M d, Y h:i A', strtotime($doc['upload_date'])),
'status' => $doc['status']
];
// Track document types
$uploaded_documents[$doc['document_type']] = $doc;
// Count required documents
if (in_array($doc['document_type'], $required_document_types)) {
$uploaded_required++;
}
}
}
// Calculate document completion percentage
$response['completion_percentage'] = ($total_required > 0) ? round(($uploaded_required / $total_required) * 100) : 0;
$response['all_documents_uploaded'] = ($uploaded_required == $total_required);
// Check missing required documents
$missing_documents = [];
foreach ($required_document_types as $type) {
if (!isset($uploaded_documents[$type])) {
$missing_documents[] = $type;
}
}
$response['missing_documents'] = $missing_documents;
// Generate HTML for the document list
$document_html = '';
if (count($response['documents']) > 0) {
$document_html .= '<div class="table-responsive">';
$document_html .= '<table class="table table-hover" style="color: white; border-color: rgba(255,255,255,0.1);">';
$document_html .= '<thead><tr><th>Document Type</th><th>Upload Date</th><th>Status</th><th>File</th></tr></thead>';
$document_html .= '<tbody>';
foreach ($response['documents'] as $doc) {
$status_class = ($doc['status'] === 'verified') ? 'bg-success' : (($doc['status'] === 'rejected') ? 'bg-danger' : 'bg-warning');
$document_html .= '<tr>';
$document_html .= '<td>' . ucfirst(str_replace('_', ' ', $doc['type'])) . '</td>';
$document_html .= '<td>' . $doc['upload_date'] . '</td>';
$document_html .= '<td><span class="badge ' . $status_class . '">' . ucfirst($doc['status']) . '</span></td>';
$document_html .= '<td><a href="' . $doc['path'] . '" target="_blank" class="btn btn-sm btn-primary"><i class="fas fa-eye me-1"></i> View</a></td>';
$document_html .= '</tr>';
}
$document_html .= '</tbody></table></div>';
} else {
$document_html = '<div class="alert" style="background: rgba(255, 255, 255, 0.1); color: white;">';
$document_html .= '<i class="fas fa-info-circle me-2"></i>No documents uploaded yet. Please upload the required documents above.';
$document_html .= '</div>';
}
$response['document_html'] = $document_html;
echo json_encode($response);
?>