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

<?php
// Start session
session_start();

// Include database configuration
require_once '../config/database.php';

// Check if user is logged in and has admin or director role
if (!isset($_SESSION['user_id']) || ($_SESSION['role'] !== 'admin' && $_SESSION['role'] !== 'director')) {
    header('Location: login.php');
    exit;
}

// Handle adding new question bank
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['add_bank'])) {
    $title = trim($_POST['title']);
    $description = trim($_POST['description']);
    $course_id = !empty($_POST['course_id']) ? $_POST['course_id'] : null;
    
    if (empty($title)) {
        $_SESSION['error'] = "Bank title is required";
    } else {
        // Check if a bank with this title already exists
        $check_query = "SELECT id FROM question_banks WHERE title = ?";
        $stmt = $conn->prepare($check_query);
        $stmt->bind_param("s", $title);
        $stmt->execute();
        $result = $stmt->get_result();
        
        if ($result->num_rows > 0) {
            $_SESSION['error'] = "A question bank with this title already exists";
        } else {
            // Insert new bank
            $insert_query = "INSERT INTO question_banks (title, description, course_id, status) VALUES (?, ?, ?, 'active')";
            $stmt = $conn->prepare($insert_query);
            $stmt->bind_param("ssi", $title, $description, $course_id);
            
            if ($stmt->execute()) {
                $_SESSION['success'] = "Question bank added successfully";
                header("Location: " . $_SERVER['PHP_SELF']);
                exit;
            } else {
                $_SESSION['error'] = "Error adding question bank: " . $conn->error;
            }
        }
    }
}

// Handle updating question bank
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['update_bank'])) {
    $bank_id = $_POST['bank_id'];
    $title = trim($_POST['title']);
    $description = trim($_POST['description']);
    $course_id = !empty($_POST['course_id']) ? $_POST['course_id'] : null;
    $status = $_POST['status'];
    
    if (empty($title)) {
        $_SESSION['error'] = "Bank title is required";
    } else {
        // Check if another bank with this title exists (excluding current bank)
        $check_query = "SELECT id FROM question_banks WHERE title = ? AND id != ?";
        $stmt = $conn->prepare($check_query);
        $stmt->bind_param("si", $title, $bank_id);
        $stmt->execute();
        $result = $stmt->get_result();
        
        if ($result->num_rows > 0) {
            $_SESSION['error'] = "Another question bank with this title already exists";
        } else {
            // Update bank
            $update_query = "UPDATE question_banks SET title = ?, description = ?, course_id = ?, status = ? WHERE id = ?";
            $stmt = $conn->prepare($update_query);
            $stmt->bind_param("ssisi", $title, $description, $course_id, $status, $bank_id);
            
            if ($stmt->execute()) {
                $_SESSION['success'] = "Question bank updated successfully";
                header("Location: " . $_SERVER['PHP_SELF']);
                exit;
            } else {
                $_SESSION['error'] = "Error updating question bank: " . $conn->error;
            }
        }
    }
}

// Handle deleting question bank
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['delete_bank'])) {
    $bank_id = $_POST['bank_id'];
    
    // Check if there are questions in this bank
    $check_query = "SELECT COUNT(*) as count FROM questions WHERE question_bank_id = ?";
    $stmt = $conn->prepare($check_query);
    $stmt->bind_param("i", $bank_id);
    $stmt->execute();
    $count_result = $stmt->get_result()->fetch_assoc();
    
    if ($count_result['count'] > 0) {
        $_SESSION['error'] = "Cannot delete question bank that contains questions. Remove all questions first or reassign them to another bank.";
    } else {
        // Delete the question bank
        $delete_query = "DELETE FROM question_banks WHERE id = ?";
        $stmt = $conn->prepare($delete_query);
        $stmt->bind_param("i", $bank_id);
        
        if ($stmt->execute()) {
            $_SESSION['success'] = "Question bank deleted successfully";
            header("Location: " . $_SERVER['PHP_SELF']);
            exit;
        } else {
            $_SESSION['error'] = "Failed to delete question bank: " . $conn->error;
        }
    }
}

// Get list of all courses for dropdown
$courses_query = "SELECT id, title FROM courses ORDER BY title";
$courses_result = $conn->query($courses_query);
$courses = [];

if ($courses_result && $courses_result->num_rows > 0) {
    while ($course = $courses_result->fetch_assoc()) {
        $courses[$course['id']] = $course['title'];
    }
}

// Get list of question banks
$banks_query = "SELECT qb.*, 
               c.title as course_title,
               (SELECT COUNT(*) FROM questions WHERE question_bank_id = qb.id) as question_count 
               FROM question_banks qb 
               LEFT JOIN courses c ON qb.course_id = c.id
               ORDER BY qb.title";

$banks_result = $conn->query($banks_query);
$banks = [];

if ($banks_result && $banks_result->num_rows > 0) {
    while ($bank = $banks_result->fetch_assoc()) {
        $banks[] = $bank;
    }
}

// Include header
include_once 'includes/header.php';
?>

<div class="content-wrapper">
    <div class="content-header">
        <div class="container-fluid">
            <div class="row mb-2">
                <div class="col-sm-6">
                    <h1 class="m-0">Manage Question Banks</h1>
                </div>
                <div class="col-sm-6">
                    <ol class="breadcrumb float-sm-right">
                        <li class="breadcrumb-item"><a href="index.php">Home</a></li>
                        <li class="breadcrumb-item active">Question Banks</li>
                    </ol>
                </div>
            </div>
        </div>
    </div>

    <section class="content">
        <div class="container-fluid">
            <?php if (isset($_SESSION['error'])): ?>
                <div class="alert alert-danger alert-dismissible fade show">
                    <?php echo $_SESSION['error']; unset($_SESSION['error']); ?>
                    <button type="button" class="close" data-dismiss="alert" aria-label="Close">
                        <span aria-hidden="true">&times;</span>
                    </button>
                </div>
            <?php endif; ?>

            <?php if (isset($_SESSION['success'])): ?>
                <div class="alert alert-success alert-dismissible fade show">
                    <?php echo $_SESSION['success']; unset($_SESSION['success']); ?>
                    <button type="button" class="close" data-dismiss="alert" aria-label="Close">
                        <span aria-hidden="true">&times;</span>
                    </button>
                </div>
            <?php endif; ?>

            <div class="row">
                <div class="col-md-4">
                    <div class="card card-primary">
                        <div class="card-header">
                            <h3 class="card-title">Add New Question Bank</h3>
                        </div>
                        <div class="card-body">
                            <form action="" method="POST">
                                <div class="form-group">
                                    <label for="title">Bank Title <span class="text-danger">*</span></label>
                                    <input type="text" class="form-control" id="title" name="title" required>
                                </div>
                                <div class="form-group">
                                    <label for="course_id">Associated Course</label>
                                    <select class="form-control" id="course_id" name="course_id">
                                        <option value="">General (Not Associated with any Course)</option>
                                        <?php foreach ($courses as $id => $title): ?>
                                            <option value="<?php echo $id; ?>"><?php echo htmlspecialchars($title); ?></option>
                                        <?php endforeach; ?>
                                    </select>
                                    <small class="form-text text-muted">If this bank is specific to a course, select it here. Otherwise, leave as "General".</small>
                                </div>
                                <div class="form-group">
                                    <label for="description">Description</label>
                                    <textarea class="form-control" id="description" name="description" rows="3"></textarea>
                                </div>
                                <button type="submit" name="add_bank" class="btn btn-primary">Add Question Bank</button>
                            </form>
                        </div>
                    </div>
                </div>
                <div class="col-md-8">
                    <div class="card">
                        <div class="card-header">
                            <h3 class="card-title">Question Banks</h3>
                            <div class="card-tools">
                                <a href="database/fix_exam_tables.php" class="btn btn-warning btn-sm">
                                    <i class="fas fa-wrench"></i> Fix Database Tables
                                </a>
                            </div>
                        </div>
                        <div class="card-body">
                            <?php if (empty($banks)): ?>
                                <div class="alert alert-info">
                                    <i class="fas fa-info-circle"></i> No question banks found. Add your first question bank using the form.
                                </div>
                            <?php else: ?>
                                <div class="table-responsive">
                                    <table class="table table-bordered table-striped">
                                        <thead>
                                            <tr>
                                                <th>Title</th>
                                                <th>Course</th>
                                                <th>Questions</th>
                                                <th>Status</th>
                                                <th>Actions</th>
                                            </tr>
                                        </thead>
                                        <tbody>
                                            <?php foreach ($banks as $bank): ?>
                                                <tr>
                                                    <td><?php echo htmlspecialchars($bank['title']); ?></td>
                                                    <td>
                                                        <?php if ($bank['course_id']): ?>
                                                            <?php echo htmlspecialchars($bank['course_title']); ?>
                                                        <?php else: ?>
                                                            <span class="badge badge-info">General</span>
                                                        <?php endif; ?>
                                                    </td>
                                                    <td>
                                                        <span class="badge badge-primary"><?php echo $bank['question_count']; ?></span>
                                                        <?php if ($bank['question_count'] > 0): ?>
                                                            <a href="view_questions.php?bank_id=<?php echo $bank['id']; ?>" class="btn btn-xs btn-outline-primary ml-1">
                                                                <i class="fas fa-eye"></i> View
                                                            </a>
                                                        <?php endif; ?>
                                                        <a href="add_question.php?bank_id=<?php echo $bank['id']; ?>" class="btn btn-xs btn-outline-success ml-1">
                                                            <i class="fas fa-plus"></i> Add
                                                        </a>
                                                    </td>
                                                    <td>
                                                        <?php if ($bank['status'] === 'active'): ?>
                                                            <span class="badge badge-success">Active</span>
                                                        <?php else: ?>
                                                            <span class="badge badge-warning">Inactive</span>
                                                        <?php endif; ?>
                                                    </td>
                                                    <td>
                                                        <button type="button" class="btn btn-sm btn-info" data-toggle="modal" data-target="#editBankModal<?php echo $bank['id']; ?>">
                                                            <i class="fas fa-edit"></i>
                                                        </button>
                                                        <button type="button" class="btn btn-sm btn-danger" data-toggle="modal" data-target="#deleteBankModal<?php echo $bank['id']; ?>" <?php echo $bank['question_count'] > 0 ? 'disabled' : ''; ?>>
                                                            <i class="fas fa-trash"></i>
                                                        </button>
                                                    </td>
                                                </tr>
                                                
                                                <!-- Edit Bank Modal -->
                                                <div class="modal fade" id="editBankModal<?php echo $bank['id']; ?>" tabindex="-1" role="dialog" aria-labelledby="editBankModalLabel" aria-hidden="true">
                                                    <div class="modal-dialog" role="document">
                                                        <div class="modal-content">
                                                            <div class="modal-header bg-info">
                                                                <h5 class="modal-title" id="editBankModalLabel">Edit Question Bank</h5>
                                                                <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                                                                    <span aria-hidden="true">&times;</span>
                                                                </button>
                                                            </div>
                                                            <form action="" method="POST">
                                                                <div class="modal-body">
                                                                    <input type="hidden" name="bank_id" value="<?php echo $bank['id']; ?>">
                                                                    
                                                                    <div class="form-group">
                                                                        <label for="edit_title<?php echo $bank['id']; ?>">Bank Title <span class="text-danger">*</span></label>
                                                                        <input type="text" class="form-control" id="edit_title<?php echo $bank['id']; ?>" name="title" value="<?php echo htmlspecialchars($bank['title']); ?>" required>
                                                                    </div>
                                                                    
                                                                    <div class="form-group">
                                                                        <label for="edit_course<?php echo $bank['id']; ?>">Associated Course</label>
                                                                        <select class="form-control" id="edit_course<?php echo $bank['id']; ?>" name="course_id">
                                                                            <option value="">General (Not Associated with any Course)</option>
                                                                            <?php foreach ($courses as $id => $title): ?>
                                                                                <option value="<?php echo $id; ?>" <?php echo $bank['course_id'] == $id ? 'selected' : ''; ?>><?php echo htmlspecialchars($title); ?></option>
                                                                            <?php endforeach; ?>
                                                                        </select>
                                                                    </div>
                                                                    
                                                                    <div class="form-group">
                                                                        <label for="edit_description<?php echo $bank['id']; ?>">Description</label>
                                                                        <textarea class="form-control" id="edit_description<?php echo $bank['id']; ?>" name="description" rows="3"><?php echo htmlspecialchars($bank['description']); ?></textarea>
                                                                    </div>
                                                                    
                                                                    <div class="form-group">
                                                                        <label for="edit_status<?php echo $bank['id']; ?>">Status</label>
                                                                        <select class="form-control" id="edit_status<?php echo $bank['id']; ?>" name="status">
                                                                            <option value="active" <?php echo $bank['status'] === 'active' ? 'selected' : ''; ?>>Active</option>
                                                                            <option value="inactive" <?php echo $bank['status'] === 'inactive' ? 'selected' : ''; ?>>Inactive</option>
                                                                        </select>
                                                                    </div>
                                                                </div>
                                                                <div class="modal-footer">
                                                                    <button type="button" class="btn btn-secondary" data-dismiss="modal">Cancel</button>
                                                                    <button type="submit" name="update_bank" class="btn btn-primary">Save Changes</button>
                                                                </div>
                                                            </form>
                                                        </div>
                                                    </div>
                                                </div>
                                                
                                                <!-- Delete Bank Modal -->
                                                <div class="modal fade" id="deleteBankModal<?php echo $bank['id']; ?>" tabindex="-1" role="dialog" aria-labelledby="deleteBankModalLabel" aria-hidden="true">
                                                    <div class="modal-dialog" role="document">
                                                        <div class="modal-content">
                                                            <div class="modal-header bg-danger">
                                                                <h5 class="modal-title" id="deleteBankModalLabel">Delete Question Bank</h5>
                                                                <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                                                                    <span aria-hidden="true">&times;</span>
                                                                </button>
                                                            </div>
                                                            <div class="modal-body">
                                                                <p>Are you sure you want to delete the bank <strong><?php echo htmlspecialchars($bank['title']); ?></strong>?</p>
                                                                <?php if ($bank['question_count'] > 0): ?>
                                                                    <div class="alert alert-warning">
                                                                        <i class="fas fa-exclamation-triangle"></i> This bank contains <?php echo $bank['question_count']; ?> questions. You must first delete or reassign these questions before deleting the bank.
                                                                    </div>
                                                                <?php else: ?>
                                                                    <p class="text-danger">This action cannot be undone.</p>
                                                                <?php endif; ?>
                                                            </div>
                                                            <div class="modal-footer">
                                                                <button type="button" class="btn btn-secondary" data-dismiss="modal">Cancel</button>
                                                                <?php if ($bank['question_count'] === 0): ?>
                                                                    <form action="" method="POST">
                                                                        <input type="hidden" name="bank_id" value="<?php echo $bank['id']; ?>">
                                                                        <button type="submit" name="delete_bank" class="btn btn-danger">Delete Bank</button>
                                                                    </form>
                                                                <?php endif; ?>
                                                            </div>
                                                        </div>
                                                    </div>
                                                </div>
                                            <?php endforeach; ?>
                                        </tbody>
                                    </table>
                                </div>
                            <?php endif; ?>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </section>
</div>

<script>
$(document).ready(function() {
    $('.table').DataTable({
        "responsive": true,
        "lengthChange": false,
        "pageLength": 10,
        "searching": true,
        "ordering": true,
        "info": true,
        "autoWidth": false
    });
});
</script>

<?php include_once 'includes/footer.php'; ?>