{% extends "base.html" %}

{% block title %}Dossiers Traités - GMAO{% endblock %}

{% block content %}
<div class="container mt-4">
    <div class="row">
        <div class="col-12">
            <h2><i class="bi bi-folder2-open me-2"></i>Configuration des dossiers "Traités"</h2>
            <p class="text-muted">
                Configurez les dossiers où les messages seront déplacés après acceptation ou refus d'une intervention.
            </p>
        </div>
    </div>

    <div class="row mt-4">
        <!-- Outlook -->
        <div class="col-md-6">
            <div class="card">
                <div class="card-header">
                    <h5 class="mb-0"><i class="bi bi-microsoft-outlook me-2"></i>Dossier Outlook</h5>
                </div>
                <div class="card-body">
                    <div class="mb-3">
                        <label class="form-label">ID du dossier</label>
                        <input type="text" class="form-control" id="outlook_folder_id" 
                               placeholder="AQMkADM0NTFhNTg2LTYxYTQtNDM2MC1iZDQz...">
                    </div>
                    <div class="mb-3">
                        <label class="form-label">Nom du dossier (optionnel)</label>
                        <input type="text" class="form-control" id="outlook_folder_name" 
                               placeholder="Traités">
                    </div>
                    
                    <div class="alert alert-info">
                        <h6><i class="bi bi-info-circle me-1"></i>Comment trouver l'ID du dossier Outlook</h6>
                        <ol class="mb-0 small">
                            <li>Ouvrez Outlook dans votre navigateur</li>
                            <li>Naviguez vers le dossier "Traités"</li>
                            <li>Copiez l'URL depuis la barre d'adresse</li>
                            <li>L'ID est la partie après <code>/mail/</code> et avant <code>/id/</code></li>
                            <li>Exemple d'URL: <code>https://outlook.cloud.microsoft/mail/<strong>AQMkADM0NTFh...</strong>/id/...</code></li>
                            <li>Collez l'ID ou l'URL complète ci-dessus</li>
                        </ol>
                    </div>
                </div>
            </div>
        </div>

        <!-- ENT -->
        <div class="col-md-6">
            <div class="card">
                <div class="card-header">
                    <h5 class="mb-0"><i class="bi bi-chat-dots me-2"></i>Dossier ENT</h5>
                </div>
                <div class="card-body">
                    <div class="mb-3">
                        <label class="form-label">ID du dossier</label>
                        <input type="text" class="form-control" id="ent_folder_id" 
                               placeholder="7c8daa60-b59a-4acf-a97d-97c71ef9b596">
                    </div>
                    <div class="mb-3">
                        <label class="form-label">Nom du dossier (optionnel)</label>
                        <input type="text" class="form-control" id="ent_folder_name" 
                               placeholder="Traités">
                    </div>
                    
                    <div class="alert alert-info">
                        <h6><i class="bi bi-info-circle me-1"></i>Comment trouver l'ID du dossier ENT</h6>
                        <ol class="mb-0 small">
                            <li>Connectez-vous à l'ENT</li>
                            <li>Allez dans la messagerie</li>
                            <li>Naviguez vers le dossier "Traités"</li>
                            <li>Copiez l'URL depuis la barre d'adresse</li>
                            <li>L'ID est la dernière partie de l'URL</li>
                            <li>Exemple: <code>https://ent77.seine-et-marne.fr/conversation/folder/<strong>7c8daa60-b59a...</strong></code></li>
                        </ol>
                    </div>
                </div>
            </div>
        </div>
    </div>

    <div class="row mt-4">
        <div class="col-12">
            <button class="btn btn-primary" onclick="saveConfig()">
                <i class="bi bi-save me-1"></i>Sauvegarder les dossiers
            </button>
            <span id="status" class="ms-3"></span>
        </div>
    </div>

    <!-- Configuration PRONOTE -->
    <div class="row mt-5">
        <div class="col-12">
            <h3><i class="bi bi-calendar-week me-2"></i>Synchronisation PRONOTE</h3>
            <p class="text-muted">
                Configurez la synchronisation automatique des plannings de salles depuis PRONOTE.
            </p>
        </div>
    </div>

    <div class="row mt-3">
        <div class="col-md-6">
            <div class="card">
                <div class="card-header">
                    <h5 class="mb-0"><i class="bi bi-gear me-2"></i>Configuration</h5>
                </div>
                <div class="card-body">
                    <div class="mb-3 form-check">
                        <input type="checkbox" class="form-check-input" id="pronote_sync_enabled">
                        <label class="form-check-label" for="pronote_sync_enabled">Activer la synchronisation automatique</label>
                    </div>
                    <div class="mb-3">
                        <label class="form-label">Intervalle de synchronisation (minutes)</label>
                        <input type="number" class="form-control" id="pronote_sync_interval" 
                               value="360" min="30" max="1440">
                        <small class="text-muted">Par défaut: 360 minutes (6 heures)</small>
                    </div>
                    <div class="mb-3">
                        <label class="form-label">Nombre de semaines à synchroniser</label>
                        <input type="number" class="form-control" id="pronote_sync_weeks" 
                               value="4" min="1" max="12">
                        <small class="text-muted">Par défaut: 4 semaines (semaine actuelle + 3 suivantes)</small>
                    </div>
                    <button class="btn btn-success" onclick="savePronoteConfig()">
                        <i class="bi bi-save me-1"></i>Sauvegarder la configuration PRONOTE
                    </button>
                    <span id="pronote_status" class="ms-3"></span>
                </div>
            </div>
        </div>
        <div class="col-md-6">
            <div class="card">
                <div class="card-header">
                    <h5 class="mb-0"><i class="bi bi-info-circle me-2"></i>Informations</h5>
                </div>
                <div class="card-body">
                    <div class="alert alert-info">
                        <h6><i class="bi bi-calendar3 me-1"></i>Fonctionnement</h6>
                        <ul class="mb-0 small">
                            <li>Le watchdog synchronise les plannings de toutes les salles d'enseignement</li>
                            <li>Chaque salle voit son planning importé pour le nombre de semaines configuré</li>
                            <li>Les anciens plannings sont remplacés par les nouveaux</li>
                        </ul>
                    </div>
                    <div class="alert alert-warning">
                        <h6><i class="bi bi-exclamation-triangle me-1"></i>Prérequis</h6>
                        <ul class="mb-0 small">
                            <li>Une connexion PRONOTE doit être active</li>
                            <li>Les salles doivent être configurées comme "salle d'enseignement" dans GMAO</li>
                        </ul>
                    </div>
                    <div class="mt-3">
                        <strong>Statut watchdog:</strong> <span id="watchdog_status">Vérification...</span>
                    </div>
                    <div class="mt-2">
                        <strong>Dernière synchronisation:</strong> <span id="last_sync">--</span>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    loadConfig();
    loadPronoteConfig();
    checkWatchdogStatus();
});

function loadConfig() {
    fetch('/outlook/api/processed-folders')
        .then(r => r.json())
        .then(data => {
            document.getElementById('outlook_folder_id').value = data.outlook_folder_id || '';
            document.getElementById('outlook_folder_name').value = data.outlook_folder_name || '';
            document.getElementById('ent_folder_id').value = data.ent_folder_id || '';
            document.getElementById('ent_folder_name').value = data.ent_folder_name || '';
        });
}

function loadPronoteConfig() {
    fetch('/outlook/api/pronote-config')
        .then(r => r.json())
        .then(data => {
            document.getElementById('pronote_sync_enabled').checked = data.pronote_sync_enabled || false;
            document.getElementById('pronote_sync_interval').value = data.pronote_sync_interval || 360;
            document.getElementById('pronote_sync_weeks').value = data.pronote_sync_weeks || 4;
            if (data.last_sync) {
                document.getElementById('last_sync').textContent = data.last_sync;
            }
        });
}

function checkWatchdogStatus() {
    fetch('/outlook/api/pronote-watchdog-status')
        .then(r => r.json())
        .then(data => {
            const statusEl = document.getElementById('watchdog_status');
            if (data.running) {
                statusEl.innerHTML = '<span class="text-success"><i class="bi bi-check-circle me-1"></i>En cours d\'exécution</span>';
            } else {
                statusEl.innerHTML = '<span class="text-warning"><i class="bi bi-pause-circle me-1"></i>En attente</span>';
            }
        })
        .catch(err => {
            document.getElementById('watchdog_status').innerHTML = '<span class="text-danger">Erreur</span>';
        });
}

function saveConfig() {
    const data = {
        outlook_folder_id: document.getElementById('outlook_folder_id').value,
        outlook_folder_name: document.getElementById('outlook_folder_name').value,
        ent_folder_id: document.getElementById('ent_folder_id').value,
        ent_folder_name: document.getElementById('ent_folder_name').value
    };
    
    // Extraire l'ID depuis une URL si l'utilisateur a collé une URL complète
    if (data.outlook_folder_id.includes('outlook.cloud.microsoft')) {
        // URL Outlook: https://outlook.cloud.microsoft/mail/ID/id/...
        const match = data.outlook_folder_id.match(/\/mail\/([^\/]+)/);
        if (match) {
            data.outlook_folder_id = decodeURIComponent(match[1]);
        }
    }
    
    if (data.ent_folder_id.includes('ent77.seine-et-marne.fr')) {
        // URL ENT: https://ent77.seine-et-marne.fr/conversation/folder/ID
        const match = data.ent_folder_id.match(/\/folder\/([^\/\?]+)/);
        if (match) {
            data.ent_folder_id = match[1];
        }
    }
    
    fetch('/outlook/api/processed-folders', {
        method: 'POST',
        headers: {'Content-Type': 'application/json'},
        body: JSON.stringify(data)
    })
    .then(r => r.json())
    .then(result => {
        if (result.success) {
            document.getElementById('status').innerHTML = 
                '<span class="text-success"><i class="bi bi-check-circle me-1"></i>Configuration sauvegardée</span>';
            // Recharger pour afficher les IDs extraits
            setTimeout(loadConfig, 500);
        } else {
            document.getElementById('status').innerHTML = 
                '<span class="text-danger"><i class="bi bi-x-circle me-1"></i>Erreur: ' + (result.error || 'Erreur inconnue') + '</span>';
        }
    })
    .catch(err => {
        document.getElementById('status').innerHTML = 
            '<span class="text-danger"><i class="bi bi-x-circle me-1"></i>Erreur réseau</span>';
    });
}

function savePronoteConfig() {
    const data = {
        pronote_sync_enabled: document.getElementById('pronote_sync_enabled').checked,
        pronote_sync_interval: parseInt(document.getElementById('pronote_sync_interval').value) || 360,
        pronote_sync_weeks: parseInt(document.getElementById('pronote_sync_weeks').value) || 4
    };
    
    fetch('/outlook/api/pronote-config', {
        method: 'POST',
        headers: {'Content-Type': 'application/json'},
        body: JSON.stringify(data)
    })
    .then(r => r.json())
    .then(result => {
        if (result.success) {
            document.getElementById('pronote_status').innerHTML = 
                '<span class="text-success"><i class="bi bi-check-circle me-1"></i>Configuration PRONOTE sauvegardée</span>';
            // Relancer le watchdog si activé
            if (data.pronote_sync_enabled) {
                fetch('/outlook/api/pronote-watchdog-restart', {method: 'POST'})
                    .then(() => checkWatchdogStatus());
            }
        } else {
            document.getElementById('pronote_status').innerHTML = 
                '<span class="text-danger"><i class="bi bi-x-circle me-1"></i>Erreur: ' + (result.error || 'Erreur inconnue') + '</span>';
        }
    })
    .catch(err => {
        document.getElementById('pronote_status').innerHTML = 
            '<span class="text-danger"><i class="bi bi-x-circle me-1"></i>Erreur réseau</span>';
    });
}
</script>
{% endblock %}