{% extends "base.html" %}
{% block title %}Configuration Watchdog DND - GMAO{% endblock %}

{% block content %}

<div class="container-fluid">
    <div class="d-flex justify-content-between align-items-center mb-4">
        <h1><i class="bi bi-shield-exclamation"></i> Watchdog DND</h1>
        <div>
            <a href="{{ url_for('yeastar.index') }}" class="btn btn-secondary">
                <i class="bi bi-arrow-left"></i> Retour
            </a>
        </div>
    </div>

    <div class="row">
        <div class="col-md-8">
            <div class="card mb-4">
                <div class="card-header">
                    <i class="bi bi-gear"></i> Configuration du Watchdog
                </div>
                <div class="card-body">
                    <p class="text-muted">
                        Le watchdog surveille les extensions en mode "Ne pas déranger" et les remet automatiquement 
                        en statut "Disponible" après un délai configurable.
                    </p>
                    
                    <form method="POST">
                        <input type="hidden" name="csrf_token" value="{{ csrf_token() }}">
                        
                        <div class="mb-3">
                            <div class="form-check form-switch">
                                <input class="form-check-input" type="checkbox" name="is_enabled" 
                                       id="is_enabled" {% if config.is_enabled %}checked{% endif %}>
                                <label class="form-check-label" for="is_enabled">
                                    <strong>Activer le watchdog DND</strong>
                                </label>
                            </div>
                            <small class="text-muted d-block mt-1">
                                Lorsqu'activé, le watchdog remet automatiquement les extensions en "Disponible" 
                                dès qu'elles passent en "Ne pas déranger".
                            </small>
                        </div>
                        
                        <div class="row">
                            <div class="col-md-6 mb-3">
                                <label class="form-label">Intervalle de vérification (secondes)</label>
                                <input type="number" class="form-control" name="refresh_seconds" 
                                       value="{{ config.refresh_seconds }}" min="1" max="60">
                                <small class="text-muted">Fréquence de vérification des statuts (défaut: 1s)</small>
                            </div>
                            <div class="col-md-6 mb-3">
                                <label class="form-label">Délai avant remise en disponible (secondes)</label>
                                <input type="number" class="form-control" name="reset_delay_seconds" 
                                       value="{{ config.reset_delay_seconds }}" min="1" max="60">
                                <small class="text-muted">Temps d'attente avant de repasser en "Disponible" (défaut: 3s)</small>
                            </div>
                        </div>
                        
                        <div class="mb-4">
                            <label class="form-label">Extensions exclues</label>
                            <input type="text" class="form-control" name="excluded_extensions" 
                                   value="{{ config.excluded_extensions }}" placeholder="100,111,118">
                            <small class="text-muted">
                                Extensions à ignorer (séparées par des virgules). Ces extensions ne seront pas 
                                automatiquement remises en "Disponible".
                            </small>
                        </div>
                        
                        <div class="d-flex gap-2">
                            <button type="submit" class="btn btn-success">
                                <i class="bi bi-check-lg"></i> Sauvegarder la configuration
                            </button>
                            <button type="button" class="btn btn-warning" id="restart-btn">
                                <i class="bi bi-arrow-clockwise"></i> Redémarrer le watchdog
                            </button>
                        </div>
                    </form>
                </div>
            </div>

            <div class="card">
                <div class="card-header">
                    <i class="bi bi-info-circle"></i> Fonctionnement
                </div>
                <div class="card-body">
                    <h6>Comment ça marche ?</h6>
                    <ol class="mb-0">
                        <li>Le watchdog vérifie périodiquement le statut de toutes les extensions</li>
                        <li>Quand une extension passe en <span class="badge bg-warning">Ne pas déranger</span>, 
                            le watchdog attend le délai configuré</li>
                        <li>Après le délai, l'extension est automatiquement remise en 
                            <span class="badge bg-success">Disponible</span></li>
                        <li>Les extensions exclues ne sont jamais modifiées automatiquement</li>
                    </ol>
                    
                    <hr class="my-3">
                    
                    <h6>Extensions généralement exclues :</h6>
                    <ul class="mb-0">
                        <li><strong>100</strong> - Standard (peut être en DND légitimement)</li>
                        <li><strong>111</strong> - CDI (bureau en DND)</li>
                        <li>Toute extension qui doit conserver son statut DND manuel</li>
                    </ul>
                </div>
            </div>
        </div>
        
        <div class="col-md-4">
            <div class="card">
                <div class="card-header">
                    <i class="bi bi-activity"></i> Statut actuel
                </div>
                <div class="card-body">
                    <div id="watchdog-status" class="mb-3">
                        <div class="text-center">
                            <div class="spinner-border spinner-border-sm" role="status"></div>
                            <span class="ms-2">Chargement...</span>
                        </div>
                    </div>
                    
                    <div id="watchdog-info" class="small text-muted">
                        <!-- Infos chargées dynamiquement -->
                    </div>
                </div>
            </div>
            
            <div class="card mt-3">
                <div class="card-header">
                    <i class="bi bi-clock-history"></i> Dernière modification
                </div>
                <div class="card-body">
                    <small class="text-muted">
                        {% if config.updated_at %}
                            {{ config.updated_at.strftime('%d/%m/%Y à %H:%M') }}
                        {% else %}
                            Jamais
                        {% endif %}
                    </small>
                </div>
            </div>
        </div>
    </div>
</div>

<script>
// Charger le statut du watchdog
async function loadStatus() {
    try {
        const resp = await fetch('/yeastar/api/watchdog/status');
        const data = await resp.json();
        
        const statusDiv = document.getElementById('watchdog-status');
        const infoDiv = document.getElementById('watchdog-info');
        
        if (data.error) {
            statusDiv.innerHTML = '<span class="badge bg-danger">Erreur: ' + data.error + '</span>';
            return;
        }
        
        const enabled = data.enabled;
        const statusBadge = enabled 
            ? '<span class="badge bg-success fs-6"><i class="bi bi-check-circle"></i> Actif</span>'
            : '<span class="badge bg-secondary fs-6"><i class="bi bi-pause-circle"></i> Inactif</span>';
        
        statusDiv.innerHTML = statusBadge;
        
        infoDiv.innerHTML = `
            <div><strong>Intervalle:</strong> ${data.refresh_seconds}s</div>
            <div><strong>Délai:</strong> ${data.reset_delay_seconds}s</div>
            <div><strong>Exclues:</strong> ${data.excluded_extensions || 'Aucune'}</div>
        `;
    } catch (e) {
        document.getElementById('watchdog-status').innerHTML = 
            '<span class="badge bg-danger">Erreur de connexion</span>';
    }
}

// Redémarrer le watchdog
document.getElementById('restart-btn').addEventListener('click', async function() {
    if (!confirm('Redémarrer le watchdog ?')) return;
    
    this.disabled = true;
    this.innerHTML = '<span class="spinner-border spinner-border-sm"></span> Redémarrage...';
    
    try {
        // Récupérer le CSRF token du formulaire
        const csrfToken = document.querySelector('input[name="csrf_token"]').value;
        
        const resp = await fetch('/yeastar/api/watchdog/restart', {
            method: 'POST',
            headers: {
                'X-CSRFToken': csrfToken
            }
        });
        const data = await resp.json();
        
        if (data.success) {
            alert('Watchdog redémarré avec succès');
            loadStatus();
        } else {
            alert('Erreur: ' + (data.error || 'Échec du redémarrage'));
        }
    } catch (e) {
        alert('Erreur de connexion au serveur');
    }
    
    this.disabled = false;
    this.innerHTML = '<i class="bi bi-arrow-clockwise"></i> Redémarrer le watchdog';
});

// Charger au démarrage
loadStatus();
setInterval(loadStatus, 10000);
</script>

{% endblock %}