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

<?php
// Set up error reporting for debugging
error_reporting(E_ALL);
ini_set('display_errors', 1);

// Manual database connection
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "popularcomputer";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);

// Check connection
if ($conn->connect_error) {
    die("<h1>Connection failed: " . $conn->connect_error . "</h1>");
}

echo "<h1>Fixing Enrollment Numbers to Consistent Format</h1>";

// Include the enrollment functions file to use the proper generation function
require_once 'enroll/includes/enrollment_functions.php';

// Get enrollments with the old "CXXX-UID-YYYY-RANDOM" format
// We'll look for patterns that match C###-##-####-#### (old format) but not ####-C###-#### (new format)
$enrollments_query = $conn->query("SELECT e.id, e.user_id, e.course_id, e.enrollment_number, c.course_code 
                                  FROM enrollments e 
                                  LEFT JOIN courses c ON e.course_id = c.id
                                  WHERE e.enrollment_number IS NOT NULL 
                                  AND (
                                      e.enrollment_number REGEXP '^C[0-9]+-[0-9]+-[0-9]+-[A-Z0-9]+$'
                                      OR e.enrollment_number NOT REGEXP '^[0-9]{4}-[A-Z0-9]+-[0-9]{4}$'
                                  )");

if ($enrollments_query && $enrollments_query->num_rows > 0) {
    echo "<p>Found " . $enrollments_query->num_rows . " enrollment records to update</p>";
    
    $updated_count = 0;
    $year = date('Y');
    
    // Track sequence numbers by course code and year
    $sequence_tracker = [];
    
    while ($enrollment = $enrollments_query->fetch_assoc()) {
        $enrollment_id = $enrollment['id'];
        $course_id = $enrollment['course_id'];
        $old_number = $enrollment['enrollment_number'];
        
        echo "<p>Processing enrollment ID $enrollment_id with old number: $old_number</p>";
        
        // Generate a standardized enrollment number
        if (function_exists('generate_enrollment_number')) {
            // Use the existing function if available
            $enrollment_number = generate_enrollment_number($conn, $course_id);
        } else {
            // Fallback to manual generation
            // Get course code
            $course_code = !empty($enrollment['course_code']) ? $enrollment['course_code'] : 'C' . sprintf('%03d', $course_id);
            
            // Get or initialize sequence for this course code and year
            $course_year_key = $year . '-' . $course_code;
            if (!isset($sequence_tracker[$course_year_key])) {
                // Find the highest existing sequence number for this course code
                $seq_query = $conn->query("SELECT enrollment_number FROM enrollments 
                                         WHERE enrollment_number LIKE '$course_year_key-%' 
                                         ORDER BY enrollment_number DESC LIMIT 1");
                
                if ($seq_query && $seq_query->num_rows > 0) {
                    $seq_row = $seq_query->fetch_assoc();
                    $parts = explode('-', $seq_row['enrollment_number']);
                    $sequence_tracker[$course_year_key] = intval(end($parts)) + 1;
                } else {
                    $sequence_tracker[$course_year_key] = 1;
                }
            }
            
            // Format the enrollment number: YEAR-COURSE_CODE-SEQUENCE
            $enrollment_number = sprintf('%s-%s-%04d', $year, $course_code, $sequence_tracker[$course_year_key]);
            
            // Increment sequence for next use
            $sequence_tracker[$course_year_key]++;
        }
        
        // Update the enrollment with the fixed enrollment number
        if ($conn->query("UPDATE enrollments SET enrollment_number = '$enrollment_number' WHERE id = $enrollment_id")) {
            $updated_count++;
            echo "<p>Updated enrollment ID $enrollment_id from '$old_number' to '$enrollment_number'</p>";
        } else {
            echo "<p class='text-danger'>Error updating enrollment ID $enrollment_id: " . $conn->error . "</p>";
        }
    }
    
    if ($updated_count > 0) {
        echo "<h2>Successfully updated $updated_count enrollment records to the standard format.</h2>";
    }
} else {
    echo "<p>No enrollment records found that need updating.</p>";
}

// Show some sample enrollment numbers after update
$sample_query = $conn->query("SELECT id, enrollment_number FROM enrollments WHERE enrollment_number IS NOT NULL LIMIT 5");
if ($sample_query && $sample_query->num_rows > 0) {
    echo "<h3>Sample enrollment numbers after update:</h3>";
    echo "<ul>";
    while ($row = $sample_query->fetch_assoc()) {
        echo "<li>ID " . $row['id'] . ": " . $row['enrollment_number'] . "</li>";
    }
    echo "</ul>";
}

echo "<p>Process completed. <a href='enroll/enrollment_success.php?application_id=17'>Return to enrollment page</a></p>";

// Close the connection
$conn->close();
?>