<?php
/**
 * IBVTE Admin - Manage Homepage Sliders
 */
require_once __DIR__ . '/../config.php';
require_once __DIR__ . '/../includes/db.php';
require_once __DIR__ . '/../includes/auth.php';

if (!checkDBConnection()) exit;
Auth()->requireRole(['super_admin', 'admin']);

$db = DB();
$flash = getFlashMessage();

// Handle Add / Edit
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    // CSRF Protection
    if (!Auth()->verifyCSRFToken($_POST['csrf_token'] ?? '')) {
        redirectWithMessage('sliders.php', 'Security session expired. Please try again.', 'danger');
    }

    $action = $_POST['action'] ?? '';

    // Handle Delete (now via POST)
    if ($action === 'delete' && isset($_POST['id'])) {
        $db->delete('sliders', ['id' => intval($_POST['id'])]);
        redirectWithMessage('sliders.php', 'Slider deleted successfully', 'success');
    }
    
    if ($action === 'save') {
        $id = intval($_POST['id'] ?? 0);
        $title = cleanInput($_POST['title']);
        $description = cleanInput($_POST['description']);
        $button_text = cleanInput($_POST['button_text'] ?? '');
        $button_link = cleanInput($_POST['button_link'] ?? '');
        $status = $_POST['status'] ?? 'active';
        $display_order = intval($_POST['display_order'] ?? 0);
        
        $data = [
            'title' => $title,
            'description' => $description,
            'button_text' => $button_text,
            'button_link' => $button_link,
            'status' => $status,
            'display_order' => $display_order
        ];
        
        // Handle File Uploads (Image)
        $uploadDir = '../uploads/sliders/';
        if (!is_dir($uploadDir)) mkdir($uploadDir, 0777, true);
        
        if (isset($_FILES['image']) && $_FILES['image']['error'] === 0) {
            $allowed = ['jpg', 'jpeg', 'png', 'webp'];
            $ext = strtolower(pathinfo($_FILES['image']['name'], PATHINFO_EXTENSION));
            if (in_array($ext, $allowed)) {
                $imageName = time() . '_slider_' . bin2hex(random_bytes(8)) . '.' . $ext;
                if (move_uploaded_file($_FILES['image']['tmp_name'], $uploadDir . $imageName)) {
                    $data['image_path'] = 'uploads/sliders/' . $imageName;
                }
            }
        }
        
        if ($id > 0) {
            $db->update('sliders', $data, ['id' => $id]);
            redirectWithMessage('sliders.php', 'Slider updated successfully', 'success');
        } else {
            // Check image is required for new
            if (empty($data['image_path'])) {
                redirectWithMessage('sliders.php', 'Image is required for new slider.', 'danger');
            }
            $db->insert('sliders', $data);
            redirectWithMessage('sliders.php', 'Slider added successfully', 'success');
        }
    }
}


$sliders = $db->fetchAll("SELECT * FROM sliders ORDER BY display_order ASC, created_at DESC");
?>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Manage Sliders - <?= APP_SHORT_NAME ?></title>
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">
    <link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css" rel="stylesheet">
    <link href="../assets/css/admin-style.css" rel="stylesheet">
</head>
<body>
    <?php include __DIR__ . '/../includes/admin_header.php'; ?>
    <div class="container-fluid">
        <div class="row">
            <?php include __DIR__ . '/../includes/admin_sidebar.php'; ?>
            
            <main class="col-md-9 ms-sm-auto col-lg-10 px-md-4 py-4">
                <div class="d-flex justify-content-between align-items-center mb-4">
                    <h2 class="h3"><i class="fas fa-images me-2 text-primary"></i>Manage Homepage Sliders</h2>
                    <button class="btn btn-primary" data-bs-toggle="modal" data-bs-target="#addModal">
                        <i class="fas fa-plus me-1"></i> Add Slider
                    </button>
                </div>

                <?php if ($flash): ?>
                    <div class="alert alert-<?= $flash['type'] ?> alert-dismissible fade show shadow-sm">
                        <?= htmlspecialchars($flash['message']) ?>
                        <button type="button" class="btn-close" data-bs-dismiss="alert"></button>
                    </div>
                <?php endif; ?>

                <div class="card shadow-sm border-0" style="border-radius:15px;">
                    <div class="card-body p-0">
                        <div class="table-responsive">
                            <table class="table table-hover align-middle mb-0">
                                <thead class="bg-light">
                                    <tr>
                                        <th class="ps-4">Preview</th>
                                        <th>Slider Content</th>
                                        <th>Button</th>
                                        <th>Order</th>
                                        <th>Status</th>
                                        <th class="text-end pe-4">Actions</th>
                                    </tr>
                                </thead>
                                <tbody>
                                    <?php if(empty($sliders)): ?>
                                        <tr><td colspan="6" class="text-center py-5 text-muted">No sliders found. Default fallback images will show on homepage.</td></tr>
                                    <?php endif; ?>
                                    <?php foreach ($sliders as $s): ?>
                                    <tr>
                                        <td class="ps-4">
                                            <img src="../<?= $s['image_path'] ?>" alt="Slider" style="height: 60px; width: 120px; object-fit: cover; border-radius: 5px;">
                                        </td>
                                        <td>
                                            <div class="fw-bold"><?= htmlspecialchars($s['title']) ?></div>
                                            <div class="small text-muted text-truncate" style="max-width:250px;"><?= htmlspecialchars($s['description']) ?></div>
                                        </td>
                                        <td>
                                            <?php if($s['button_text']): ?>
                                                <span class="badge bg-primary"><?= htmlspecialchars($s['button_text']) ?></span>
                                            <?php else: ?>
                                                <span class="text-muted small">No Button</span>
                                            <?php endif; ?>
                                        </td>
                                        <td><?= $s['display_order'] ?></td>
                                        <td>
                                            <span class="badge <?= $s['status'] === 'active' ? 'bg-success' : 'bg-secondary' ?>"><?= ucfirst($s['status']) ?></span>
                                        </td>
                                        <td class="text-end pe-4">
                                            <button class="btn btn-sm btn-light border text-primary" data-bs-toggle="modal" data-bs-target="#editModal<?= $s['id'] ?>"><i class="fas fa-edit"></i></button>
                                            <form method="POST" class="d-inline" onsubmit="return confirm('Are you sure?')">
                                                <input type="hidden" name="csrf_token" value="<?= Auth()->generateCSRFToken() ?>">
                                                <input type="hidden" name="action" value="delete">
                                                <input type="hidden" name="id" value="<?= $s['id'] ?>">
                                                <button type="submit" class="btn btn-sm btn-light border text-danger"><i class="fas fa-trash"></i></button>
                                            </form>
                                        </td>
                                    </tr>

                                    <!-- Edit Modal -->
                                    <div class="modal fade" id="editModal<?= $s['id'] ?>" tabindex="-1">
                                        <div class="modal-dialog modal-lg">
                                            <div class="modal-content border-0 shadow">
                                                <div class="modal-header bg-light">
                                                    <h5 class="modal-title">Edit Slider</h5>
                                                    <button type="button" class="btn-close" data-bs-dismiss="modal"></button>
                                                </div>
                                                <form method="POST" enctype="multipart/form-data">
                                                    <input type="hidden" name="csrf_token" value="<?= Auth()->generateCSRFToken() ?>">
                                                    <div class="modal-body p-4">
                                                        <input type="hidden" name="action" value="save">
                                                        <input type="hidden" name="id" value="<?= $s['id'] ?>">
                                                        
                                                        <div class="mb-3">
                                                            <label class="form-label fw-bold">Heading Title *</label>
                                                            <input type="text" name="title" class="form-control" value="<?= htmlspecialchars($s['title']) ?>" required>
                                                        </div>
                                                        <div class="mb-3">
                                                            <label class="form-label fw-bold">Description Subtitle</label>
                                                            <textarea name="description" class="form-control" rows="3"><?= htmlspecialchars($s['description']) ?></textarea>
                                                        </div>
                                                        <div class="row">
                                                            <div class="col-md-6 mb-3">
                                                                <label class="form-label fw-bold">Button Text (Optional)</label>
                                                                <input type="text" name="button_text" class="form-control" value="<?= htmlspecialchars($s['button_text']) ?>" placeholder="e.g. Apply Now">
                                                            </div>
                                                            <div class="col-md-6 mb-3">
                                                                <label class="form-label fw-bold">Button Link URL (Optional)</label>
                                                                <input type="text" name="button_link" class="form-control" value="<?= htmlspecialchars($s['button_link']) ?>" placeholder="e.g. about.php">
                                                            </div>
                                                        </div>
                                                        <div class="row">
                                                            <div class="col-md-4 mb-3">
                                                                <label class="form-label fw-bold">Change Image</label>
                                                                <input type="file" name="image" class="form-control" accept="image/*">
                                                                <small class="text-muted">Leave empty to keep current.</small>
                                                            </div>
                                                            <div class="col-md-4 mb-3">
                                                                <label class="form-label fw-bold">Display Order</label>
                                                                <input type="number" name="display_order" class="form-control" value="<?= $s['display_order'] ?>">
                                                            </div>
                                                            <div class="col-md-4 mb-3">
                                                                <label class="form-label fw-bold">Status</label>
                                                                <select name="status" class="form-select">
                                                                    <option value="active" <?= $s['status']==='active'?'selected':'' ?>>Active</option>
                                                                    <option value="inactive" <?= $s['status']==='inactive'?'selected':'' ?>>Inactive</option>
                                                                </select>
                                                            </div>
                                                        </div>
                                                    </div>
                                                    <div class="modal-footer bg-light">
                                                        <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Cancel</button>
                                                        <button type="submit" class="btn btn-primary">Save Changes</button>
                                                    </div>
                                                </form>
                                            </div>
                                        </div>
                                    </div>
                                    <?php endforeach; ?>
                                </tbody>
                            </table>
                        </div>
                    </div>
                </div>
            </main>
        </div>
    </div>

    <!-- Add Modal -->
    <div class="modal fade" id="addModal" tabindex="-1">
        <div class="modal-dialog modal-lg">
            <div class="modal-content border-0 shadow">
                <div class="modal-header bg-light">
                    <h5 class="modal-title"><i class="fas fa-plus-circle text-primary me-2"></i>Add New Slider</h5>
                    <button type="button" class="btn-close" data-bs-dismiss="modal"></button>
                </div>
                <form method="POST" enctype="multipart/form-data">
                    <input type="hidden" name="csrf_token" value="<?= Auth()->generateCSRFToken() ?>">
                    <div class="modal-body p-4">
                        <input type="hidden" name="action" value="save">
                        
                        <div class="mb-3">
                            <label class="form-label fw-bold">Heading Title *</label>
                            <input type="text" name="title" class="form-control" required placeholder="Main slider text">
                        </div>
                        <div class="mb-3">
                            <label class="form-label fw-bold">Description Subtitle</label>
                            <textarea name="description" class="form-control" rows="3" placeholder="Supporting text under heading"></textarea>
                        </div>
                        <div class="row">
                            <div class="col-md-6 mb-3">
                                <label class="form-label fw-bold">Button Text (Optional)</label>
                                <input type="text" name="button_text" class="form-control" placeholder="e.g. Discover More">
                            </div>
                            <div class="col-md-6 mb-3">
                                <label class="form-label fw-bold">Button Link URL (Optional)</label>
                                <input type="text" name="button_link" class="form-control" placeholder="e.g. courses.php">
                            </div>
                        </div>
                        <div class="row">
                            <div class="col-md-4 mb-3">
                                <label class="form-label fw-bold">Slider Image *</label>
                                <input type="file" name="image" class="form-control" accept="image/*" required>
                                <small class="text-muted">Min width 1920px recommended.</small>
                            </div>
                            <div class="col-md-4 mb-3">
                                <label class="form-label fw-bold">Display Order</label>
                                <input type="number" name="display_order" class="form-control" value="0">
                            </div>
                            <div class="col-md-4 mb-3">
                                <label class="form-label fw-bold">Status</label>
                                <select name="status" class="form-select">
                                    <option value="active">Active</option>
                                    <option value="inactive">Inactive</option>
                                </select>
                            </div>
                        </div>
                    </div>
                    <div class="modal-footer bg-light">
                        <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Cancel</button>
                        <button type="submit" class="btn btn-primary">Add Slider</button>
                    </div>
                </form>
            </div>
        </div>
    </div>

    <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script>
</body>
</html>
