Path : /home/vishqocm/pcib.in/enroll/
File Upload :
Current File : /home/vishqocm//pcib.in/enroll/document_upload.php

<?php
require_once '../config/db.php';
require_once '../includes/functions.php';
session_start();

// Redirect if not logged in
if (!isset($_SESSION['user_id'])) {
    header("Location: ../login.php?redirect=enroll/document_upload.php");
    exit();
}

$user_id = $_SESSION['user_id'];

// Get required documents from the system
$required_documents = [
    'id_proof' => 'Government Issued ID',
    'address_proof' => 'Proof of Address',
    'qualification_certificate' => 'Qualification Certificate',
    'passport_photo' => 'Passport Size Photo'
];

// Get user's uploaded documents
$stmt = $conn->prepare("SELECT document_type, file_path, status, upload_date, admin_notes FROM student_documents WHERE user_id = ?");
$stmt->bind_param("i", $user_id);
$stmt->execute();
$result = $stmt->get_result();

$uploaded_documents = [];
while ($row = $result->fetch_assoc()) {
    $uploaded_documents[$row['document_type']] = $row;
}

// Get application status
$stmt = $conn->prepare("SELECT id, status FROM enrollment_applications WHERE user_id = ? ORDER BY application_date DESC LIMIT 1");
$stmt->bind_param("i", $user_id);
$stmt->execute();
$application_result = $stmt->get_result();
$application = $application_result->fetch_assoc();

$application_id = $application ? $application['id'] : null;
$application_status = $application ? $application['status'] : 'not_started';

// Count document statistics
$total_documents = count($required_documents);
$verified_documents = 0;
$pending_documents = 0;
$rejected_documents = 0;

foreach ($required_documents as $doc_type => $doc_name) {
    if (isset($uploaded_documents[$doc_type])) {
        if ($uploaded_documents[$doc_type]['status'] == 'verified') {
            $verified_documents++;
        } elseif ($uploaded_documents[$doc_type]['status'] == 'pending') {
            $pending_documents++;
        } elseif ($uploaded_documents[$doc_type]['status'] == 'rejected') {
            $rejected_documents++;
        }
    }
}

$verification_progress = $total_documents > 0 ? ($verified_documents / $total_documents) * 100 : 0;

// Get the page title
$page_title = "Document Upload";
include '../includes/header.php';
include '../includes/navbar.php';
?>

<div class="container py-5 document-upload-section">
    <div class="row mb-4">
        <div class="col-md-8">
            <h1>Document Upload</h1>
            <p class="lead">Please upload all required documents for enrollment verification.</p>
        </div>
        <div class="col-md-4 text-end">
            <div class="card">
                <div class="card-body">
                    <h5 class="card-title">Application Status</h5>
                    <div class="text-center mb-3">
                        <span id="application-status-badge" class="badge fs-6 px-3 py-2 
                            <?php echo getStatusBadgeClass($application_status); ?>">
                            <?php echo getStatusLabel($application_status); ?>
                        </span>
                    </div>
                    
                    <div class="progress mb-2" style="height: 20px;">
                        <div id="documents-progress-bar" class="progress-bar bg-success progress-bar-striped" 
                            role="progressbar" style="width: <?php echo $verification_progress; ?>%;" 
                            aria-valuenow="<?php echo $verification_progress; ?>" aria-valuemin="0" 
                            aria-valuemax="100"><?php echo round($verification_progress); ?>%</div>
                    </div>
                    
                    <div class="d-flex justify-content-between small text-muted mb-3">
                        <span>Verified: <span id="verified-docs-count"><?php echo $verified_documents; ?></span>/
                                       <span id="total-docs-count"><?php echo $total_documents; ?></span></span>
                        <span>Pending: <?php echo $pending_documents; ?></span>
                        <span>Rejected: <?php echo $rejected_documents; ?></span>
                    </div>
                    
                    <?php if ($application_status == 'payment_pending'): ?>
                    <a href="payment.php" class="btn btn-primary btn-block">Proceed to Payment</a>
                    <?php endif; ?>
                </div>
            </div>
        </div>
    </div>
    
    <div class="row">
        <div class="col-md-12">
            <div class="alert alert-info">
                <i class="fas fa-info-circle"></i> 
                <strong>Important:</strong> All documents must be verified before proceeding to the next step.
                <ul class="mb-0 mt-2">
                    <li>Acceptable file formats: PDF, JPG, PNG</li>
                    <li>Maximum file size: 5MB per document</li>
                    <li>Documents must be clear and legible</li>
                    <li>All information must match your application details</li>
                </ul>
            </div>
        </div>
    </div>
    
    <div class="row mt-4">
        <?php foreach ($required_documents as $doc_type => $doc_name): ?>
            <div class="col-md-6 mb-4">
                <div class="card h-100">
                    <div class="card-header d-flex justify-content-between align-items-center">
                        <h5 class="mb-0"><?php echo $doc_name; ?></h5>
                        <?php if (isset($uploaded_documents[$doc_type])): ?>
                            <?php 
                                $status = $uploaded_documents[$doc_type]['status'];
                                $badge_class = '';
                                $badge_text = '';
                                
                                switch ($status) {
                                    case 'pending':
                                        $badge_class = 'bg-warning';
                                        $badge_text = 'Pending';
                                        break;
                                    case 'verified':
                                        $badge_class = 'bg-success';
                                        $badge_text = 'Verified';
                                        break;
                                    case 'rejected':
                                        $badge_class = 'bg-danger';
                                        $badge_text = 'Rejected';
                                        break;
                                }
                            ?>
                            <span id="<?php echo $doc_type; ?>-status" class="badge <?php echo $badge_class; ?>"><?php echo $badge_text; ?></span>
                        <?php else: ?>
                            <span id="<?php echo $doc_type; ?>-status" class="badge bg-secondary">Not Uploaded</span>
                        <?php endif; ?>
                    </div>
                    <div class="card-body">
                        <?php if (isset($uploaded_documents[$doc_type])): ?>
                            <p class="mb-1">Uploaded: <span id="<?php echo $doc_type; ?>-date"><?php echo date('M d, Y', strtotime($uploaded_documents[$doc_type]['upload_date'])); ?></span></p>
                            
                            <?php if ($uploaded_documents[$doc_type]['status'] == 'rejected' && !empty($uploaded_documents[$doc_type]['admin_notes'])): ?>
                                <div class="alert alert-danger mt-2">
                                    <strong>Rejection Reason:</strong> <?php echo htmlspecialchars($uploaded_documents[$doc_type]['admin_notes']); ?>
                                </div>
                            <?php endif; ?>
                            
                            <div class="mt-3 d-flex">
                                <button class="btn btn-sm btn-primary view-document-btn me-2" 
                                    data-document-url="<?php echo htmlspecialchars($uploaded_documents[$doc_type]['file_path']); ?>"
                                    data-document-type="<?php echo $doc_type; ?>">
                                    <i class="fas fa-eye"></i> View Document
                                </button>
                                
                                <?php if ($uploaded_documents[$doc_type]['status'] != 'verified'): ?>
                                    <button class="btn btn-sm btn-outline-secondary" 
                                        data-bs-toggle="collapse" 
                                        data-bs-target="#reupload-<?php echo $doc_type; ?>" 
                                        aria-expanded="false">
                                        <i class="fas fa-upload"></i> Re-upload
                                    </button>
                                <?php endif; ?>
                            </div>
                            
                            <?php if ($uploaded_documents[$doc_type]['status'] != 'verified'): ?>
                                <div class="collapse mt-3" id="reupload-<?php echo $doc_type; ?>">
                                    <form class="document-upload-form" action="ajax/upload_document.php" method="post" enctype="multipart/form-data">
                                        <input type="hidden" name="document_type" value="<?php echo $doc_type; ?>">
                                        <input type="hidden" name="application_id" value="<?php echo $application_id; ?>">
                                        
                                        <div class="mb-3">
                                            <input type="file" class="form-control form-control-sm" name="document_file" required>
                                        </div>
                                        
                                        <div class="upload-progress-container d-none">
                                            <div class="progress" style="height: 10px;">
                                                <div class="progress-bar progress-bar-striped progress-bar-animated" 
                                                    role="progressbar" style="width: 0%" aria-valuenow="0" 
                                                    aria-valuemin="0" aria-valuemax="100"></div>
                                            </div>
                                        </div>
                                        
                                        <button type="submit" class="btn btn-sm btn-primary">
                                            <i class="fas fa-upload"></i> Upload Document
                                        </button>
                                    </form>
                                    <div class="upload-message mt-2"></div>
                                </div>
                            <?php endif; ?>
                        <?php else: ?>
                            <p>Please upload your <?php echo strtolower($doc_name); ?> document.</p>
                            
                            <form class="document-upload-form" action="ajax/upload_document.php" method="post" enctype="multipart/form-data">
                                <input type="hidden" name="document_type" value="<?php echo $doc_type; ?>">
                                <input type="hidden" name="application_id" value="<?php echo $application_id; ?>">
                                
                                <div class="mb-3">
                                    <input type="file" class="form-control" name="document_file" required>
                                </div>
                                
                                <div class="upload-progress-container d-none">
                                    <div class="progress" style="height: 10px;">
                                        <div class="progress-bar progress-bar-striped progress-bar-animated" 
                                            role="progressbar" style="width: 0%" aria-valuenow="0" 
                                            aria-valuemin="0" aria-valuemax="100"></div>
                                    </div>
                                </div>
                                
                                <button type="submit" class="btn btn-primary">
                                    <i class="fas fa-upload"></i> Upload Document
                                </button>
                            </form>
                            <div class="upload-message mt-2"></div>
                        <?php endif; ?>
                    </div>
                </div>
            </div>
        <?php endforeach; ?>
    </div>
</div>

<!-- Document Preview Modal -->
<div class="modal fade" id="documentPreviewModal" tabindex="-1" aria-labelledby="documentPreviewModalLabel" aria-hidden="true">
    <div class="modal-dialog modal-lg">
        <div class="modal-content">
            <div class="modal-header">
                <h5 class="modal-title" id="documentPreviewModalLabel">Document Preview</h5>
                <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
            </div>
            <div class="modal-body" id="documentPreviewContent">
                <!-- Content will be loaded dynamically -->
            </div>
            <div class="modal-footer">
                <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Close</button>
            </div>
        </div>
    </div>
</div>

<?php
// Helper functions
function getStatusBadgeClass($status) {
    switch ($status) {
        case 'pending':
            return 'bg-warning';
        case 'document_review':
            return 'bg-info';
        case 'payment_pending':
            return 'bg-primary';
        case 'payment_verified':
            return 'bg-success';
        case 'rejected':
            return 'bg-danger';
        default:
            return 'bg-secondary';
    }
}

function getStatusLabel($status) {
    switch ($status) {
        case 'pending':
            return 'Documents Pending';
        case 'document_review':
            return 'Documents Under Review';
        case 'payment_pending':
            return 'Payment Pending';
        case 'payment_verified':
            return 'Enrollment Active';
        case 'rejected':
            return 'Application Rejected';
        case 'not_started':
            return 'Not Started';
        default:
            return 'Unknown Status';
    }
}

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

<script src="../assets/js/document-upload.js"></script>