{% extends "base.html" %}

{% block title %}Benutzer - MYP API Tester{% endblock %}

{% block content %}
<div class="row">
    <div class="col-md-12 mb-4">
        <div class="card">
            <div class="card-header d-flex justify-content-between align-items-center">
                <h4 class="mb-0">Benutzer verwalten</h4>
                <button class="btn btn-primary" type="button" data-bs-toggle="collapse" data-bs-target="#newUserForm">
                    Neuen Benutzer hinzufügen
                </button>
            </div>
            <div class="collapse" id="newUserForm">
                <div class="card-body border-bottom">
                    <form class="api-form" data-url="/auth/register" data-method="POST" data-response="createUserResponse" data-reload="true">
                        <div class="mb-3">
                            <label for="userName" class="form-label">Benutzername</label>
                            <input type="text" class="form-control" id="userName" name="username" required>
                        </div>
                        <div class="mb-3">
                            <label for="userPassword" class="form-label">Passwort</label>
                            <input type="password" class="form-control" id="userPassword" name="password" required>
                        </div>
                        <div class="mb-3">
                            <label for="userDisplayName" class="form-label">Anzeigename</label>
                            <input type="text" class="form-control" id="userDisplayName" name="displayName">
                        </div>
                        <div class="mb-3">
                            <label for="userEmail" class="form-label">E-Mail</label>
                            <input type="email" class="form-control" id="userEmail" name="email">
                        </div>
                        <button type="submit" class="btn btn-success">Benutzer erstellen</button>
                    </form>
                    <div class="mt-3">
                        <h6>Antwort:</h6>
                        <pre class="api-response" id="createUserResponse"></pre>
                    </div>
                </div>
            </div>
            <div class="card-body">
                <form class="api-form mb-3" data-url="/api/users" data-method="GET" data-response="usersResponse">
                    <button type="submit" class="btn btn-primary">Benutzer aktualisieren</button>
                </form>
                
                <div class="table-responsive">
                    <table class="table table-striped table-hover">
                        <thead>
                            <tr>
                                <th>ID</th>
                                <th>Benutzername</th>
                                <th>Anzeigename</th>
                                <th>E-Mail</th>
                                <th>Rolle</th>
                                <th>Aktionen</th>
                            </tr>
                        </thead>
                        <tbody id="usersTableBody">
                            <!-- Wird dynamisch gefüllt -->
                        </tbody>
                    </table>
                </div>
                
                <div>
                    <h6>API-Antwort:</h6>
                    <pre class="api-response" id="usersResponse"></pre>
                </div>
            </div>
        </div>
    </div>
</div>

<!-- Benutzer bearbeiten Modal -->
<div class="modal fade" id="editUserModal" tabindex="-1">
    <div class="modal-dialog">
        <div class="modal-content">
            <div class="modal-header">
                <h5 class="modal-title">Benutzer bearbeiten</h5>
                <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
            </div>
            <div class="modal-body">
                <form id="editUserForm" class="api-form" data-method="PUT" data-response="editUserResponse" data-reload="true">
                    <input type="hidden" id="editUserId" name="userId">
                    <div class="mb-3">
                        <label for="editUserName" class="form-label">Benutzername</label>
                        <input type="text" class="form-control" id="editUserName" name="username" required>
                    </div>
                    <div class="mb-3">
                        <label for="editUserDisplayName" class="form-label">Anzeigename</label>
                        <input type="text" class="form-control" id="editUserDisplayName" name="displayName">
                    </div>
                    <div class="mb-3">
                        <label for="editUserEmail" class="form-label">E-Mail</label>
                        <input type="email" class="form-control" id="editUserEmail" name="email">
                    </div>
                    <div class="mb-3">
                        <label for="editUserRole" class="form-label">Rolle</label>
                        <select class="form-control" id="editUserRole" name="role">
                            <option value="user">Benutzer</option>
                            <option value="admin">Administrator</option>
                            <option value="guest">Gast</option>
                        </select>
                    </div>
                </form>
                <div class="mt-3">
                    <h6>Antwort:</h6>
                    <pre class="api-response" id="editUserResponse"></pre>
                </div>
            </div>
            <div class="modal-footer">
                <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Abbrechen</button>
                <button type="submit" form="editUserForm" class="btn btn-primary">Änderungen speichern</button>
            </div>
        </div>
    </div>
</div>

<!-- Benutzer löschen Modal -->
<div class="modal fade" id="deleteUserModal" tabindex="-1">
    <div class="modal-dialog">
        <div class="modal-content">
            <div class="modal-header">
                <h5 class="modal-title">Benutzer löschen</h5>
                <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
            </div>
            <div class="modal-body">
                <p>Möchten Sie den Benutzer <span id="deleteUserName"></span> wirklich löschen?</p>
                <form id="deleteUserForm" class="api-form" data-method="DELETE" data-response="deleteUserResponse" data-reload="true">
                    <input type="hidden" id="deleteUserId" name="userId">
                </form>
                <div class="mt-3">
                    <h6>Antwort:</h6>
                    <pre class="api-response" id="deleteUserResponse"></pre>
                </div>
            </div>
            <div class="modal-footer">
                <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Abbrechen</button>
                <button type="submit" form="deleteUserForm" class="btn btn-danger">Löschen</button>
            </div>
        </div>
    </div>
</div>
{% endblock %}

{% block scripts %}
<script>
    document.addEventListener('DOMContentLoaded', function() {
        // Benutzer laden
        document.querySelector('form[data-url="/api/users"]').dispatchEvent(new Event('submit'));
        
        // Tabelle aktualisieren, wenn Benutzer geladen werden
        const usersResponse = document.getElementById('usersResponse');
        const observer = new MutationObserver(function(mutations) {
            try {
                const users = JSON.parse(usersResponse.textContent);
                updateUsersTable(users);
            } catch (e) {
                console.error('Fehler beim Parsen der Benutzer-Daten:', e);
            }
        });
        
        observer.observe(usersResponse, { childList: true, characterData: true, subtree: true });
        
        // Edit-Modal vorbereiten
        document.getElementById('editUserModal').addEventListener('show.bs.modal', function(event) {
            const button = event.relatedTarget;
            const userId = button.getAttribute('data-user-id');
            const userName = button.getAttribute('data-user-name');
            const userDisplayName = button.getAttribute('data-user-displayname');
            const userEmail = button.getAttribute('data-user-email');
            const userRole = button.getAttribute('data-user-role');
            
            document.getElementById('editUserId').value = userId;
            document.getElementById('editUserForm').setAttribute('data-url', `/api/users/${userId}`);
            document.getElementById('editUserName').value = userName;
            document.getElementById('editUserDisplayName').value = userDisplayName || '';
            document.getElementById('editUserEmail').value = userEmail || '';
            document.getElementById('editUserRole').value = userRole;
        });
        
        // Delete-Modal vorbereiten
        document.getElementById('deleteUserModal').addEventListener('show.bs.modal', function(event) {
            const button = event.relatedTarget;
            const userId = button.getAttribute('data-user-id');
            const userName = button.getAttribute('data-user-name');
            
            document.getElementById('deleteUserId').value = userId;
            document.getElementById('deleteUserForm').setAttribute('data-url', `/api/users/${userId}`);
            document.getElementById('deleteUserName').textContent = userName;
        });
    });
    
    function updateUsersTable(users) {
        const tableBody = document.getElementById('usersTableBody');
        tableBody.innerHTML = '';
        
        users.forEach(user => {
            const row = document.createElement('tr');
            
            const roleClass = {
                'admin': 'text-danger',
                'user': 'text-primary',
                'guest': 'text-secondary'
            }[user.role] || '';
            
            row.innerHTML = `
                <td>${user.id}</td>
                <td>${user.username}</td>
                <td>${user.displayName || user.username}</td>
                <td>${user.email || '-'}</td>
                <td><span class="${roleClass}">${user.role}</span></td>
                <td>
                    <button type="button" class="btn btn-sm btn-primary" 
                        data-bs-toggle="modal" 
                        data-bs-target="#editUserModal"
                        data-user-id="${user.id}"
                        data-user-name="${user.username}"
                        data-user-displayname="${user.displayName || ''}"
                        data-user-email="${user.email || ''}"
                        data-user-role="${user.role}">
                        Bearbeiten
                    </button>
                    <button type="button" class="btn btn-sm btn-danger" 
                        data-bs-toggle="modal" 
                        data-bs-target="#deleteUserModal"
                        data-user-id="${user.id}"
                        data-user-name="${user.username}">
                        Löschen
                    </button>
                </td>
            `;
            
            tableBody.appendChild(row);
        });
    }
</script>
{% endblock %}