<?php

// Check if user is admin
if (empty($_SESSION['is_admin']) || $_SESSION['is_admin'] != 1) {
    
header('Location: index.php?page=home');
    exit;
}

// Initialize variables
$msg '';
$msgType 'success';
$editMode false;
$extraToEdit null;

// Handle form submissions
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    
// Create new extra
    
if (isset($_POST['action']) && $_POST['action'] === 'create') {
        
$name trim($_POST['name']);
        
$defaultTime = isset($_POST['defaultTime']) ? intval($_POST['defaultTime']) : 0;
        
        
// Validate input
        
if (empty($name)) {
            
$msg 'Activity name cannot be empty.';
            
$msgType 'error';
        } else {
            
// Insert new extra
            
$stmt $dbc->prepare("INSERT INTO CINE_Extra (name, defaultTime) VALUES (?, ?)");
            
$stmt->bind_param('si'$name$defaultTime);
            
            if (
$stmt->execute()) {
                
$msg 'Activity type created successfully!';
                
$msgType 'success';
            } else {
                
$msg 'Error creating activity type: ' $stmt->error;
                
$msgType 'error';
            }
            
$stmt->close();
        }
    }
    
    
// Update existing extra
    
if (isset($_POST['action']) && $_POST['action'] === 'update') {
        
$id intval($_POST['id']);
        
$name trim($_POST['name']);
        
$defaultTime = isset($_POST['defaultTime']) ? intval($_POST['defaultTime']) : 0;
        
        
// Validate input
        
if (empty($name)) {
            
$msg 'Activity name cannot be empty.';
            
$msgType 'error';
        } else {
            
// Update extra
            
$stmt $dbc->prepare("UPDATE CINE_Extra SET name = ?, defaultTime = ? WHERE pk_Extra = ?");
            
$stmt->bind_param('sii'$name$defaultTime$id);
            
            if (
$stmt->execute()) {
                
$msg 'Activity type updated successfully!';
                
$msgType 'success';
            } else {
                
$msg 'Error updating activity type: ' $stmt->error;
                
$msgType 'error';
            }
            
$stmt->close();
        }
    }
    
    
// Delete extra
    
if (isset($_POST['action']) && $_POST['action'] === 'delete') {
        
$id intval($_POST['id']);
        
        
// Check if this extra is used in any plages
        
$checkStmt $dbc->prepare("SELECT COUNT(*) as count FROM CINE_Plage WHERE fk_Extra = ?");
        
$checkStmt->bind_param('i'$id);
        
$checkStmt->execute();
        
$checkResult $checkStmt->get_result();
        
$usageCount $checkResult->fetch_assoc()['count'];
        
$checkStmt->close();
        
        if (
$usageCount 0) {
            
$msg 'Cannot delete: This activity type is used in ' $usageCount ' schedule entries.';
            
$msgType 'error';
        } else {
            
// Delete the extra
            
$deleteStmt $dbc->prepare("DELETE FROM CINE_Extra WHERE pk_Extra = ?");
            
$deleteStmt->bind_param('i'$id);
            
            if (
$deleteStmt->execute()) {
                
$msg 'Activity type deleted successfully!';
                
$msgType 'success';
            } else {
                
$msg 'Error deleting activity type: ' $deleteStmt->error;
                
$msgType 'error';
            }
            
$deleteStmt->close();
        }
    }
}

// Handle edit request (GET)
if (isset($_GET['edit']) && is_numeric($_GET['edit'])) {
    
$editId intval($_GET['edit']);
    
$stmt $dbc->prepare("SELECT * FROM CINE_Extra WHERE pk_Extra = ?");
    
$stmt->bind_param('i'$editId);
    
$stmt->execute();
    
$result $stmt->get_result();
    
    if (
$row $result->fetch_assoc()) {
        
$editMode true;
        
$extraToEdit $row;
    }
    
$stmt->close();
}

// Fetch all extras
$result $dbc->query("SELECT * FROM CINE_Extra ORDER BY name");
$extras = [];
while (
$row $result->fetch_assoc()) {
    
$extras[] = $row;
}

// Count usage of each extra
$usageCounts = [];
foreach (
$extras as $extra) {
    
$id $extra['pk_Extra'];
    
$countStmt $dbc->prepare("SELECT COUNT(*) as count FROM CINE_Plage WHERE fk_Extra = ?");
    
$countStmt->bind_param('i'$id);
    
$countStmt->execute();
    
$countResult $countStmt->get_result();
    
$usageCounts[$id] = $countResult->fetch_assoc()['count'];
    
$countStmt->close();
}
?>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Manage Activity Types - CinĂ© Le Paris</title>
    <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@24,400,0,0" />
    <link rel="stylesheet" href="assets/css/extras.css">
</head>
<body>
    <div class="extras-container">
        <!-- Header -->
        <div class="extras-header">
            <div class="extras-title-section">
                <h1 class="extras-title">Activity Types</h1>
                <p class="extras-subtitle">Manage activity types and their default extra times</p>
            </div>
            <div class="extras-actions">
                <?php if (!$editMode): ?>
                <button class="extras-btn extras-btn-primary" id="showFormBtn">
                    <span class="material-symbols-outlined">add</span> New Activity Type
                </button>
                <?php endif; ?>
            </div>
        </div>
        
        <!-- Success/Error Message (if any) -->
        <?php if ($msg): ?>
            <div class="extras-alert extras-alert-<?php echo $msgType?>">
                <div class="extras-alert-icon">
                    <span class="material-symbols-outlined">
                        <?php echo $msgType === 'success' 'check_circle' 'error'?>
                    </span>
                </div>
                <div class="extras-alert-content">
                    <?php echo htmlspecialchars($msg); ?>
                </div>
            </div>
        <?php endif; ?>
        
        <!-- Form Section (initially hidden if not in edit mode) -->
        <div class="extras-card" id="formCard" <?php echo (!$editMode && empty($msg)) ? 'style="display: none;"' ''?>>
            <div class="extras-card-header">
                <h2 class="extras-card-title"><?php echo $editMode 'Edit Activity Type' 'Create New Activity Type'?></h2>
                <?php if (!$editMode): ?>
                <button class="extras-btn-icon" id="closeFormBtn">
                    <span class="material-symbols-outlined">close</span>
                </button>
                <?php endif; ?>
            </div>
            <div class="extras-card-body">
                <form method="post" action="" class="extras-form">
                    <input type="hidden" name="action" value="<?php echo $editMode 'update' 'create'?>">
                    <?php if ($editMode): ?>
                    <input type="hidden" name="id" value="<?php echo $extraToEdit['pk_Extra']; ?>">
                    <?php endif; ?>
                    
                    <div class="extras-form-group">
                        <label for="name" class="extras-form-label">Activity Name</label>
                        <input type="text" id="name" name="name" class="extras-form-control" 
                               value="<?php echo $editMode htmlspecialchars($extraToEdit['name']) : ''?>" required>
                        <div class="extras-form-help">Enter a descriptive name for this activity type</div>
                    </div>
                    
                    <div class="extras-form-group">
                        <label for="defaultTime" class="extras-form-label">Default Extra Time (minutes)</label>
                        <input type="number" id="defaultTime" name="defaultTime" class="extras-form-control" 
                               value="<?php echo $editMode intval($extraToEdit['defaultTime']) : '30'?>" min="0" required>
                        <div class="extras-form-help">Additional time automatically added when this activity is selected</div>
                    </div>
                    
                    <div class="extras-form-actions">
                        <?php if ($editMode): ?>
                        <a href="index.php?page=extras" class="extras-btn extras-btn-secondary">Cancel</a>
                        <?php endif; ?>
                        <button type="submit" class="extras-btn extras-btn-primary">
                            <?php echo $editMode 'Update Activity Type' 'Create Activity Type'?>
                        </button>
                    </div>
                </form>
            </div>
        </div>
        
        <!-- Table of Extras -->
        <div class="extras-card">
            <div class="extras-card-header">
                <h2 class="extras-card-title">All Activity Types</h2>
                <span class="extras-card-count"><?php echo count($extras); ?> types</span>
            </div>
            <div class="extras-table-container">
                <?php if (count($extras) > 0): ?>
                <table class="extras-table">
                    <thead>
                        <tr>
                            <th>ID</th>
                            <th>Name</th>
                            <th>Default Extra Time</th>
                            <th>Usage Count</th>
                            <th>Actions</th>
                        </tr>
                    </thead>
                    <tbody>
                        <?php foreach ($extras as $extra): ?>
                        <tr>
                            <td><?php echo $extra['pk_Extra']; ?></td>
                            <td><?php echo htmlspecialchars($extra['name']); ?></td>
                            <td><?php echo $extra['defaultTime']; ?> minutes</td>
                            <td>
                                <span class="extras-badge <?php echo $usageCounts[$extra['pk_Extra']] > 'extras-badge-active' 'extras-badge-inactive'?>">
                                    <?php echo $usageCounts[$extra['pk_Extra']]; ?> entries
                                </span>
                            </td>
                            <td class="extras-actions-cell">
                                <a href="index.php?page=extras&edit=<?php echo $extra['pk_Extra']; ?>" class="extras-btn-icon extras-btn-edit" title="Edit">
                                    <span class="material-symbols-outlined">edit</span>
                                </a>
                                <button type="button" class="extras-btn-icon extras-btn-delete" title="Delete" 
                                        onclick="confirmDelete(<?php echo $extra['pk_Extra']; ?>, '<?php echo htmlspecialchars($extra['name'], ENT_QUOTES); ?>', <?php echo $usageCounts[$extra['pk_Extra']]; ?>)">
                                    <span class="material-symbols-outlined">delete</span>
                                </button>
                            </td>
                        </tr>
                        <?php endforeach; ?>
                    </tbody>
                </table>
                <?php else: ?>
                <div class="extras-empty-state">
                    <div class="extras-empty-icon">
                        <span class="material-symbols-outlined">category</span>
                    </div>
                    <p class="extras-empty-text">No activity types have been created yet.</p>
                    <button class="extras-btn extras-btn-primary" id="emptyStateBtn">
                        <span class="material-symbols-outlined">add</span> Create First Activity Type
                    </button>
                </div>
                <?php endif; ?>
            </div>
        </div>
        
        <!-- Back to Dashboard Button -->
        <div class="extras-footer">
            <a href="index.php?page=dashboard" class="extras-btn extras-btn-secondary">
                <span class="material-symbols-outlined">dashboard</span> Back to Dashboard
            </a>
        </div>
    </div>
    
    <!-- Delete Confirmation Modal -->
    <div class="extras-modal-backdrop" id="deleteModalBackdrop"></div>
    <div class="extras-modal" id="deleteModal">
        <div class="extras-modal-header">
            <h3 class="extras-modal-title">Confirm Deletion</h3>
            <button class="extras-modal-close" id="closeDeleteModal">
                <span class="material-symbols-outlined">close</span>
            </button>
        </div>
        <div class="extras-modal-body">
            <p id="deleteConfirmText">Are you sure you want to delete this activity type?</p>
            <p id="deleteWarningText" class="extras-text-warning"></p>
        </div>
        <div class="extras-modal-footer">
            <button class="extras-btn extras-btn-secondary" id="cancelDeleteBtn">Cancel</button>
            <form method="post" action="" id="deleteForm">
                <input type="hidden" name="action" value="delete">
                <input type="hidden" name="id" id="deleteId" value="">
                <button type="submit" class="extras-btn extras-btn-danger">
                    <span class="material-symbols-outlined">delete</span> Delete
                </button>
            </form>
        </div>
    </div>
    
    <script>
        document.addEventListener('DOMContentLoaded', function() {
            // Form toggle elements
            const formCard = document.getElementById('formCard');
            const showFormBtn = document.getElementById('showFormBtn');
            const closeFormBtn = document.getElementById('closeFormBtn');
            const emptyStateBtn = document.getElementById('emptyStateBtn');
            
            // Delete modal elements
            const deleteModal = document.getElementById('deleteModal');
            const deleteModalBackdrop = document.getElementById('deleteModalBackdrop');
            const closeDeleteModal = document.getElementById('closeDeleteModal');
            const cancelDeleteBtn = document.getElementById('cancelDeleteBtn');
            const deleteForm = document.getElementById('deleteForm');
            const deleteId = document.getElementById('deleteId');
            const deleteConfirmText = document.getElementById('deleteConfirmText');
            const deleteWarningText = document.getElementById('deleteWarningText');
            
            // Show form
            if (showFormBtn) {
                showFormBtn.addEventListener('click', function() {
                    formCard.style.display = 'block';
                    document.getElementById('name').focus();
                });
            }
            
            // Hide form
            if (closeFormBtn) {
                closeFormBtn.addEventListener('click', function() {
                    formCard.style.display = 'none';
                });
            }
            
            // Empty state button
            if (emptyStateBtn) {
                emptyStateBtn.addEventListener('click', function() {
                    formCard.style.display = 'block';
                    document.getElementById('name').focus();
                });
            }
            
            // Close delete modal
            function hideDeleteModal() {
                deleteModal.style.display = 'none';
                deleteModalBackdrop.style.display = 'none';
            }
            
            // Delete modal event listeners
            if (closeDeleteModal) {
                closeDeleteModal.addEventListener('click', hideDeleteModal);
            }
            
            if (cancelDeleteBtn) {
                cancelDeleteBtn.addEventListener('click', hideDeleteModal);
            }
            
            if (deleteModalBackdrop) {
                deleteModalBackdrop.addEventListener('click', hideDeleteModal);
            }
            
            // Expose confirmDelete to global scope
            window.confirmDelete = function(id, name, usageCount) {
                deleteId.value = id;
                deleteConfirmText.textContent = `Are you sure you want to delete "${name}"?`;
                
                if (usageCount > 0) {
                    deleteWarningText.textContent = `This activity type is used in ${usageCount} schedule entries. You cannot delete it until those entries are removed.`;
                    deleteForm.querySelector('button[type="submit"]').disabled = true;
                } else {
                    deleteWarningText.textContent = 'This action cannot be undone.';
                    deleteForm.querySelector('button[type="submit"]').disabled = false;
                }
                
                deleteModal.style.display = 'block';
                deleteModalBackdrop.style.display = 'block';
            };
        });
    </script>
</body>
</html>