<?php
/*
Plugin Name: IHM Admissions Portal
Description: Online admission system for IHM Aurangabad. Handles application forms and admin management.
Version: 1.0
Author: Rushi Lokhande
*/

if (!defined('ABSPATH')) {
    exit; // Exit if accessed directly
}

// 1. CREATE DATABASE TABLES ON ACTIVATION
register_activation_hook(__FILE__, 'ihm_create_tables');

function ihm_create_tables() {
    global $wpdb;
    $charset_collate = $wpdb->get_charset_collate();

    // Table: Applications
    $table_apps = $wpdb->prefix . 'ihm_applications';
    $sql_apps = "CREATE TABLE $table_apps (
        id mediumint(9) NOT NULL AUTO_INCREMENT,
        application_no varchar(50) UNIQUE,
        academic_year varchar(20) NOT NULL,
        course_name varchar(100) NOT NULL,
        center_name varchar(100) NOT NULL,
        first_name varchar(100) NOT NULL,
        last_name varchar(100) NOT NULL,
        dob date NOT NULL,
        email varchar(150) NOT NULL,
        phone_mobile varchar(20) NOT NULL,
        status varchar(20) DEFAULT 'submitted',
        created_at datetime DEFAULT CURRENT_TIMESTAMP,
        PRIMARY KEY  (id)
    ) $charset_collate;";

    require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
    dbDelta($sql_apps);
}

// 2. SHORTCODE FOR FRONTEND FORM [ihm_apply_form]
add_shortcode('ihm_apply_form', 'ihm_render_application_form');

function ihm_render_application_form() {
    // Check if form was just submitted
    if (isset($_GET['ihm_success']) && $_GET['ihm_success'] == '1') {
        return '<div class="ihm-success-box" style="background:#d4edda;color:#155724;padding:20px;border:1px solid #c3e6cb;margin-bottom:20px;">
                    <h3>Application Submitted Successfully!</h3>
                    <p>Your Application Number is: <strong>' . esc_html($_GET['app_no']) . '</strong></p>
                    <p>Please save this number for future reference.</p>
                </div>';
    }

    ob_start(); 
    ?>
    <div class="ihm-form-container">
        <style>
            .ihm-form-container { background: #f9f9f9; padding: 30px; border-radius: 8px; border: 1px solid #ddd; }
            .ihm-form-group { margin-bottom: 15px; }
            .ihm-form-group label { display: block; font-weight: bold; margin-bottom: 5px; }
            .ihm-form-group input, .ihm-form-group select { width: 100%; padding: 8px; border: 1px solid #ccc; border-radius: 4px; }
            .ihm-btn { background: #0073aa; color: #fff; padding: 10px 20px; border: none; cursor: pointer; font-size: 16px; border-radius: 4px; }
            .ihm-btn:hover { background: #005177; }
        </style>

        <form action="<?php echo esc_url(admin_url('admin-post.php')); ?>" method="POST">
            <input type="hidden" name="action" value="ihm_submit_application">
            <?php wp_nonce_field('ihm_admission_nonce', 'ihm_nonce'); ?>

            <h3>Step 1: Course Selection</h3>
            <div class="ihm-form-group">
                <label>Academic Year</label>
                <select name="academic_year">
                    <option value="2025-2026">2025-2026</option>
                </select>
            </div>
            <div class="ihm-form-group">
                <label>Course</label>
                <select name="course_name" required>
                    <option value="BA (Hons) Hotel Management">BA (Hons) Hotel Management</option>
                    <option value="BA (Hons) Culinary Arts">BA (Hons) Culinary Arts</option>
                </select>
            </div>
            <div class="ihm-form-group">
                <label>Center</label>
                <select name="center_name" required>
                    <option value="Aurangabad">Aurangabad</option>
                </select>
            </div>

            <hr>

            <h3>Step 2: Personal Details</h3>
            <div class="ihm-form-group">
                <label>First Name</label>
                <input type="text" name="first_name" required>
            </div>
            <div class="ihm-form-group">
                <label>Last Name</label>
                <input type="text" name="last_name" required>
            </div>
            <div class="ihm-form-group">
                <label>Date of Birth</label>
                <input type="date" name="dob" required>
            </div>
            <div class="ihm-form-group">
                <label>Mobile Number</label>
                <input type="text" name="phone_mobile" required>
            </div>
            <div class="ihm-form-group">
                <label>Email</label>
                <input type="email" name="email" required>
            </div>

            <button type="submit" class="ihm-btn">Submit Application</button>
        </form>
    </div>
    <?php
    return ob_get_clean();
}

// 3. HANDLE FORM SUBMISSION (BACKEND)
add_action('admin_post_ihm_submit_application', 'ihm_handle_form_submission');
add_action('admin_post_nopriv_ihm_submit_application', 'ihm_handle_form_submission'); // For logged-out users

function ihm_handle_form_submission() {
    global $wpdb;

    // Verify Nonce & Permissions
    if (!isset($_POST['ihm_nonce']) || !wp_verify_nonce($_POST['ihm_nonce'], 'ihm_admission_nonce')) {
        wp_die('Security check failed');
    }

    // Sanitize Inputs
    $data = array(
        'academic_year' => sanitize_text_field($_POST['academic_year']),
        'course_name'   => sanitize_text_field($_POST['course_name']),
        'center_name'   => sanitize_text_field($_POST['center_name']),
        'first_name'    => sanitize_text_field($_POST['first_name']),
        'last_name'     => sanitize_text_field($_POST['last_name']),
        'dob'           => sanitize_text_field($_POST['dob']),
        'phone_mobile'  => sanitize_text_field($_POST['phone_mobile']),
        'email'         => sanitize_email($_POST['email']),
        'status'        => 'submitted'
    );

    $table_name = $wpdb->prefix . 'ihm_applications';
    
    // Insert Data
    $wpdb->insert($table_name, $data);
    
    // Generate Application ID (IHMA + Year + ID)
    $insert_id = $wpdb->insert_id;
    $year = date('Y');
    $app_no = "IHMA" . $year . str_pad($insert_id, 4, '0', STR_PAD_LEFT);

    // Update with Application No
    $wpdb->update(
        $table_name,
        array('application_no' => $app_no),
        array('id' => $insert_id)
    );

    // Redirect back to page with success message
    $redirect_url = add_query_arg(array('ihm_success' => '1', 'app_no' => $app_no), wp_get_referer());
    wp_redirect($redirect_url);
    exit;
}

// 4. ADD ADMIN MENU
add_action('admin_menu', 'ihm_admission_menu');

function ihm_admission_menu() {
    add_menu_page(
        'IHM Admissions',      // Page Title
        'Admissions',          // Menu Title
        'manage_options',      // Capability
        'ihm-admissions',      // Menu Slug
        'ihm_admin_dashboard', // Function
        'dashicons-welcome-learn-more', // Icon
        6
    );
}

// 5. RENDER ADMIN DASHBOARD (LIST APPLICATIONS)
function ihm_admin_dashboard() {
    global $wpdb;
    $table_name = $wpdb->prefix . 'ihm_applications';
    $results = $wpdb->get_results("SELECT * FROM $table_name ORDER BY id DESC");
    ?>
    <div class="wrap">
        <h1>IHM Admission Applications</h1>
        <table class="wp-list-table widefat fixed striped">
            <thead>
                <tr>
                    <th>App No</th>
                    <th>Name</th>
                    <th>Course</th>
                    <th>Mobile</th>
                    <th>Email</th>
                    <th>Status</th>
                    <th>Date</th>
                </tr>
            </thead>
            <tbody>
                <?php if ($results) : ?>
                    <?php foreach ($results as $row) : ?>
                        <tr>
                            <td><strong><?php echo esc_html($row->application_no); ?></strong></td>
                            <td><?php echo esc_html($row->first_name . ' ' . $row->last_name); ?></td>
                            <td><?php echo esc_html($row->course_name); ?></td>
                            <td><?php echo esc_html($row->phone_mobile); ?></td>
                            <td><a href="mailto:<?php echo esc_attr($row->email); ?>"><?php echo esc_html($row->email); ?></a></td>
                            <td><span class="badge"><?php echo esc_html($row->status); ?></span></td>
                            <td><?php echo date('d M Y', strtotime($row->created_at)); ?></td>
                        </tr>
                    <?php endforeach; ?>
                <?php else : ?>
                    <tr><td colspan="7">No applications received yet.</td></tr>
                <?php endif; ?>
            </tbody>
        </table>
    </div>
    <?php
}