<?php
session_start();
require_once '../../config/database.php';
// Check if user is logged in
if (!isset($_SESSION['user_id'])) {
echo json_encode(['success' => false, 'message' => 'You must be logged in to view documents']);
exit;
}
$userId = $_SESSION['user_id'];
try {
$pdo = new PDO("mysql:host=$host;dbname=$db", $user, $pass);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// Get all documents for this user
$stmt = $pdo->prepare("
SELECT
id,
document_type,
file_path,
status,
upload_date,
admin_notes
FROM student_documents
WHERE user_id = ?
ORDER BY upload_date DESC
");
$stmt->execute([$userId]);
$documents = $stmt->fetchAll(PDO::FETCH_ASSOC);
// Get application status if exists
$stmt = $pdo->prepare("
SELECT
id,
status,
application_date
FROM applications
WHERE user_id = ?
ORDER BY application_date DESC
LIMIT 1
");
$stmt->execute([$userId]);
$application = $stmt->fetch(PDO::FETCH_ASSOC);
// Document type labels
$documentLabels = [
'id_proof' => 'ID Proof',
'address_proof' => 'Address Proof',
'qualification_certificate' => 'Qualification Certificate',
'passport_photo' => 'Passport Size Photo'
];
// Status badges
$statusBadges = [
'pending' => 'warning',
'verified' => 'success',
'rejected' => 'danger'
];
// Format document data for display
$formattedDocuments = [];
foreach ($documents as $doc) {
$formattedDocuments[] = [
'id' => $doc['id'],
'document_type' => $doc['document_type'],
'document_label' => $documentLabels[$doc['document_type']] ?? ucfirst(str_replace('_', ' ', $doc['document_type'])),
'file_path' => $doc['file_path'],
'status' => $doc['status'],
'status_badge' => $statusBadges[$doc['status']] ?? 'secondary',
'upload_date' => date('M d, Y', strtotime($doc['upload_date'])),
'admin_notes' => $doc['admin_notes']
];
}
// Determine which documents are missing
$requiredDocuments = ['id_proof', 'address_proof', 'qualification_certificate', 'passport_photo'];
$uploadedDocumentTypes = array_column($documents, 'document_type');
$missingDocuments = [];
foreach ($requiredDocuments as $docType) {
if (!in_array($docType, $uploadedDocumentTypes)) {
$missingDocuments[] = [
'document_type' => $docType,
'document_label' => $documentLabels[$docType]
];
}
}
// Calculate verification status
$verifiedCount = 0;
$rejectedCount = 0;
foreach ($documents as $doc) {
if ($doc['status'] === 'verified') {
$verifiedCount++;
} elseif ($doc['status'] === 'rejected') {
$rejectedCount++;
}
}
$totalRequired = count($requiredDocuments);
$verificationProgress = $totalRequired > 0 ? round(($verifiedCount / $totalRequired) * 100) : 0;
echo json_encode([
'success' => true,
'documents' => $formattedDocuments,
'missing_documents' => $missingDocuments,
'application' => $application,
'verification_status' => [
'total_required' => $totalRequired,
'uploaded' => count($documents),
'verified' => $verifiedCount,
'rejected' => $rejectedCount,
'progress' => $verificationProgress
]
]);
} catch (Exception $e) {
echo json_encode(['success' => false, 'message' => 'Error: ' . $e->getMessage()]);
}
?>