<?php
/**
 * Template: Formulario de Proyecto Administrativo
 *
 * @var \dokuwiki\plugin\bez\meta\Tpl $tpl
 */

$proyecto = $tpl->get('proyecto');
$isEdit = $tpl->get('isEdit');
$users = $tpl->get('users');  // Array asociativo: $nick => $name
?>

<style>
    .admin-form-container {
        max-width: 700px;
        margin: 0 auto;
        padding: 20px;
    }

    .admin-form-header {
        margin-bottom: 30px;
    }

    .admin-form-header h1 {
        color: #333;
        margin: 0;
    }

    .admin-form-header p {
        color: #666;
        margin-top: 10px;
    }

    .admin-form-card {
        background: white;
        border-radius: 12px;
        padding: 30px;
        box-shadow: 0 4px 15px rgba(0,0,0,0.1);
    }

    .form-group {
        margin-bottom: 20px;
    }

    .form-group label {
        display: block;
        font-weight: 600;
        color: #333;
        margin-bottom: 8px;
    }

    .form-group label .required {
        color: #f44336;
    }

    .form-group input[type="text"],
    .form-group input[type="date"],
    .form-group select,
    .form-group textarea {
        width: 100%;
        padding: 10px 12px;
        border: 1px solid #ccc;
        border-radius: 6px;
        font-size: 14px;
        transition: border-color 0.2s;
        box-sizing: border-box;
    }

    .form-group input:focus,
    .form-group select:focus,
    .form-group textarea:focus {
        outline: none;
        border-color: #667eea;
    }

    .form-group textarea {
        min-height: 80px;
        resize: vertical;
    }

    .form-group small {
        display: block;
        color: #888;
        margin-top: 5px;
        font-size: 0.85em;
    }

    .form-row {
        display: grid;
        grid-template-columns: 1fr 1fr;
        gap: 20px;
    }

    .form-row-3 {
        display: grid;
        grid-template-columns: 1.5fr 1fr 1.2fr;
        gap: 20px;
    }

    @media (max-width: 600px) {
        .form-row, .form-row-3 {
            grid-template-columns: 1fr;
        }
    }

    .btn-container {
        display: flex;
        gap: 15px;
        margin-top: 25px;
        padding-top: 20px;
        border-top: 1px solid #eee;
    }

    .btn {
        padding: 10px 20px;
        border: none;
        border-radius: 6px;
        cursor: pointer;
        font-weight: 600;
        font-size: 14px;
        text-decoration: none;
        display: inline-flex;
        align-items: center;
        gap: 8px;
        transition: all 0.2s;
    }

    .btn-primary {
        background: #333;
        color: white;
    }

    .btn-primary:hover {
        background: #555;
    }

    .btn-secondary {
        background: transparent;
        color: #666;
        border: 1px solid #ccc;
    }

    .btn-secondary:hover {
        background: #f5f5f5;
        text-decoration: none;
    }

    .info-box {
        background: #e3f2fd;
        border-left: 4px solid #2196f3;
        padding: 15px;
        border-radius: 0 8px 8px 0;
        margin-bottom: 25px;
    }

    .info-box h4 {
        margin: 0 0 10px 0;
        color: #1565c0;
    }

    .info-box ul {
        margin: 0;
        padding-left: 20px;
        color: #333;
    }

    .info-box li {
        margin-bottom: 5px;
    }

    .hidden {
        display: none !important;
    }

    .radio-group {
        display: flex;
        gap: 15px;
        margin-bottom: 10px;
    }

    .radio-option {
        display: flex;
        align-items: center;
        gap: 8px;
        padding: 8px 12px;
        border: 1px solid #ccc;
        border-radius: 6px;
        cursor: pointer;
        transition: all 0.2s;
        font-size: 14px;
    }

    .radio-option:hover {
        border-color: #667eea;
    }

    .radio-option.selected {
        border-color: #667eea;
        background: #f0f4ff;
    }

    .radio-option input[type="radio"] {
        width: auto;
        margin: 0;
    }

    .checkbox-group {
        display: flex;
        align-items: center;
        gap: 8px;
    }

    .checkbox-group input[type="checkbox"] {
        width: 18px;
        height: 18px;
        cursor: pointer;
    }

    .checkbox-group label {
        margin: 0;
        cursor: pointer;
        font-weight: normal;
    }

    fieldset {
        border: 1px solid #ddd;
        border-radius: 8px;
        padding: 15px 20px;
        margin-bottom: 20px;
    }

    fieldset legend {
        font-weight: 600;
        padding: 0 10px;
        color: #333;
    }
</style>

<div class="admin-form-container">

    <div class="admin-form-header">
        <h1><?php echo $isEdit ? '✎ Editar Proyecto Administrativo' : '➕ Nuevo Proyecto Administrativo' ?></h1>
        <p>
            <?php if ($isEdit): ?>
                Modifica los datos del proyecto administrativo.
            <?php else: ?>
                Crea un nuevo proyecto de seguimiento administrativo.
            <?php endif; ?>
        </p>
    </div>

    <?php if (!$isEdit): ?>
    <div class="info-box">
        <h4>📋 Al crear el proyecto se generarán automáticamente:</h4>
        <ul>
            <li><strong>1. Responsabilidades de la Dirección</strong> - Con tareas de control</li>
            <li><strong>2. Requisitos Éticos</strong> - Con tareas de ética profesional</li>
            <li><strong>3. Recursos Humanos</strong> - Con tareas de RRHH</li>
            <li><strong>4. Registros de Cumplimiento</strong> - Enlace a la página seleccionada</li>
        </ul>
    </div>
    <?php endif; ?>

    <div class="admin-form-card">
        <form method="post" action="<?php echo $isEdit ? $tpl->url('admin_thread_form', 'action', 'edit', 'id', $tpl->get('id')) : $tpl->url('admin_thread_form') ?>">

            <!-- Tipo de Trabajador -->
            <fieldset>
                <legend>Trabajador / Aplicador</legend>

                <div class="form-group">
                    <label>Tipo <span class="required">*</span></label>
                    <div class="radio-group">
                        <label class="radio-option <?php echo (!$proyecto || ($proyecto['tipo_trabajador'] ?? '') !== 'firma') ? 'selected' : '' ?>" id="opt_usuario">
                            <input type="radio" name="tipo_trabajador" value="usuario"
                                   <?php echo (!$proyecto || ($proyecto['tipo_trabajador'] ?? '') !== 'firma') ? 'checked' : '' ?>
                                   onchange="cambiarTipoTrabajador()">
                            👤 Usuario del Sistema
                        </label>
                        <label class="radio-option <?php echo ($proyecto && ($proyecto['tipo_trabajador'] ?? '') === 'firma') ? 'selected' : '' ?>" id="opt_firma">
                            <input type="radio" name="tipo_trabajador" value="firma"
                                   <?php echo ($proyecto && ($proyecto['tipo_trabajador'] ?? '') === 'firma') ? 'checked' : '' ?>
                                   onchange="cambiarTipoTrabajador()">
                            🏢 Firma Principal
                        </label>
                    </div>
                </div>

                <!-- Selector de Usuario (visible cuando tipo = usuario) -->
                <div class="form-group" id="grupo_usuario">
                    <label>Seleccionar Usuario <span class="required">*</span></label>
                    <select name="usuario_id" id="usuario_id" onchange="actualizarNombreDesdeUsuario()">
                        <option value="">--- seleccionar ---</option>
                        <?php if (!empty($users) && is_array($users)): ?>
                            <?php foreach ($users as $nick => $name): ?>
                            <option value="<?php echo htmlspecialchars($nick) ?>"
                                    data-nombre="<?php echo htmlspecialchars($name) ?>"
                                    <?php echo ($proyecto && ($proyecto['trabajador_id'] ?? '') === $nick) ? 'selected' : '' ?>>
                                <?php echo htmlspecialchars($name) ?>
                            </option>
                            <?php endforeach; ?>
                        <?php endif; ?>
                    </select>
                </div>

                <!-- Campo de texto para Firma (visible cuando tipo = firma) -->
                <div class="form-group hidden" id="grupo_firma">
                    <label>Nombre de la Firma <span class="required">*</span></label>
                    <input type="text" name="nombre_firma" id="nombre_firma"
                           placeholder="Ej: Velásquez y Asociados S.A.S."
                           value="<?php echo ($proyecto && ($proyecto['tipo_trabajador'] ?? '') === 'firma') ? htmlspecialchars($proyecto['trabajador_nombre'] ?? '') : '' ?>">
                </div>

                <!-- Nombre completo (solo visible para Usuario del Sistema) -->
                <div class="form-group" id="grupo_nombre_completo">
                    <label>Nombre Completo <span class="required">*</span></label>
                    <input type="text" name="trabajador_nombre" id="trabajador_nombre"
                           value="<?php echo $proyecto ? htmlspecialchars($proyecto['trabajador_nombre'] ?? '') : '' ?>"
                           placeholder="Nombre que aparecerá en el proyecto">
                </div>
            </fieldset>

            <!-- Configuración del Proyecto -->
            <fieldset>
                <legend>Configuración</legend>

                <div class="form-row-3">
                    <!-- Selector de Registros de Cumplimiento -->
                    <div class="form-group">
                        <label>Destino <span class="required">*</span></label>
                        <?php if (!$isEdit): ?>
                        <?php
                            $paginasUsadas = $tpl->get('paginasUsadas') ?: [];
                            $nextId = $tpl->get('nextId') ?: 1;
                            $opcionesDisponibles = [];
                            if (!in_array('encargos:general', $paginasUsadas)) {
                                $opcionesDisponibles[] = ['value' => 'encargos:general', 'label' => 'general'];
                            }
                            for ($i = 1; $i <= 20; $i++) {
                                if (!in_array('encargos:general' . $i, $paginasUsadas)) {
                                    $opcionesDisponibles[] = ['value' => 'encargos:general' . $i, 'label' => 'general' . $i];
                                }
                            }

                            // Determinar cuál opción pre-seleccionar:
                            // Preferir el destino que coincida con el próximo ID del proyecto.
                            // Ejemplo: si el próximo proyecto es #6, pre-seleccionar "general6".
                            // Si no está disponible, usar el primero de la lista.
                            $valorPreferido = 'encargos:general' . $nextId;
                            $idxPreferido = 0; // fallback: primer disponible
                            foreach ($opcionesDisponibles as $idx => $opt) {
                                if ($opt['value'] === $valorPreferido) {
                                    $idxPreferido = $idx;
                                    break;
                                }
                            }
                        ?>
                        <select name="pagina_registros" id="pagina_registros" required>
                            <?php foreach ($opcionesDisponibles as $idx => $opt): ?>
                            <option value="<?php echo $opt['value'] ?>" <?php echo $idx === $idxPreferido ? 'selected' : '' ?>><?php echo $opt['label'] ?></option>
                            <?php endforeach; ?>
                        </select>
                        <?php else: ?>
                        <input type="text" readonly value="<?php echo htmlspecialchars($proyecto['pagina_registros'] ?? 'encargos:general') ?>"
                               style="background: #f5f5f5; cursor: not-allowed;">
                        <?php endif; ?>
                    </div>

                    <!-- Periodo -->
                    <div class="form-group">
                        <label>Periodo</label>
                        <select name="periodo" id="periodo">
                            <option value="">N.A.</option>
                            <?php
                            $currentYear = date('Y');
                            $defaultPeriodo = $currentYear - 1;
                            for ($year = $currentYear; $year >= $currentYear - 5; $year--): ?>
                            <option value="<?php echo $year ?>"
                                    <?php echo ($proyecto ? ($proyecto['periodo'] ?? '') == $year : $year == $defaultPeriodo) ? 'selected' : '' ?>>
                                <?php echo $year ?>
                            </option>
                            <?php endfor; ?>
                        </select>
                    </div>

                    <!-- Fecha de Inicio -->
                    <div class="form-group">
                        <label>Fecha de Inicio</label>
                        <?php
                            // Fecha por defecto: un año atrás (strtotime maneja 29/02 → 01/03, ajustamos a 28/02)
                            $fechaHaceUnAnio = new DateTime();
                            $anioAnterior = intval($fechaHaceUnAnio->format('Y')) - 1;
                            $mes = intval($fechaHaceUnAnio->format('m'));
                            $dia = intval($fechaHaceUnAnio->format('d'));
                            $diasEnMes = cal_days_in_month(CAL_GREGORIAN, $mes, $anioAnterior);
                            if ($dia > $diasEnMes) $dia = $diasEnMes;
                            $fechaDefaultInicio = sprintf('%04d-%02d-%02d', $anioAnterior, $mes, $dia);
                        ?>
                        <input type="date" name="fecha_inicio"
                               value="<?php echo $proyecto ? ($proyecto['fecha_inicio'] ?? $fechaDefaultInicio) : $fechaDefaultInicio ?>">
                    </div>
                </div>

                <!-- Privado -->
                <div class="form-group">
                    <div class="checkbox-group">
                        <input type="checkbox" name="privado" id="privado" value="1"
                               <?php echo ($proyecto && ($proyecto['privado'] ?? 0)) ? 'checked' : '' ?>>
                        <label for="privado">Privado (solo visible para el creador y administradores)</label>
                    </div>
                </div>
            </fieldset>

            <!-- Documentos del Proyecto -->
            <fieldset>
                <legend>Documentos del Proyecto</legend>

                <div class="info-box" style="margin-bottom:15px;">
                    <h4>Rutas de documentos principales</h4>
                    <p style="margin:5px 0 0 0;font-size:0.9em;">
                        Configure las rutas al Manual de Calidad y Código de Ética.
                        Use el botón "Buscar" para escanear la carpeta compartidos.
                        Si deja el campo vacío, se usará la ruta por defecto.
                    </p>
                </div>

                <?php
                    $docPaths = $tpl->get('docPaths') ?: [];
                    $defaultDocPaths = $tpl->get('defaultDocPaths') ?: [];
                ?>

                <div class="form-group">
                    <label>Manual de Calidad</label>
                    <div style="display:flex; gap:8px;">
                        <input type="text" name="ruta_manual_calidad" id="ruta_manual_calidad"
                               value="<?php echo htmlspecialchars($docPaths['manual_de_calidad'] ?? '') ?>"
                               placeholder="<?php echo htmlspecialchars($defaultDocPaths['manual_de_calidad'] ?? 'compartidos:manual_de_calidad') ?>"
                               style="flex:1;">
                        <button type="button" class="btn btn-secondary" onclick="scanDocumentos('manual_de_calidad')" style="white-space:nowrap;">
                            Buscar
                        </button>
                    </div>
                    <small>Por defecto: <?php echo htmlspecialchars($defaultDocPaths['manual_de_calidad'] ?? 'compartidos:manual_de_calidad') ?></small>
                </div>

                <div class="form-group">
                    <label>Código de Ética</label>
                    <div style="display:flex; gap:8px;">
                        <input type="text" name="ruta_codigo_etica" id="ruta_codigo_etica"
                               value="<?php echo htmlspecialchars($docPaths['codigo_de_etica'] ?? '') ?>"
                               placeholder="<?php echo htmlspecialchars($defaultDocPaths['codigo_de_etica'] ?? 'compartidos:codigo_de_etica') ?>"
                               style="flex:1;">
                        <button type="button" class="btn btn-secondary" onclick="scanDocumentos('codigo_de_etica')" style="white-space:nowrap;">
                            Buscar
                        </button>
                    </div>
                    <small>Por defecto: <?php echo htmlspecialchars($defaultDocPaths['codigo_de_etica'] ?? 'compartidos:codigo_de_etica') ?></small>
                </div>

                <!-- Modal de resultados del escaneo -->
                <div id="scan-results-modal" class="hidden" style="position:relative;">
                    <div style="background:#fff;border:1px solid #ccc;border-radius:8px;max-height:250px;overflow-y:auto;box-shadow:0 4px 12px rgba(0,0,0,0.15);">
                        <div style="padding:10px 15px;border-bottom:1px solid #eee;display:flex;justify-content:space-between;align-items:center;">
                            <strong id="scan-results-title">Páginas encontradas</strong>
                            <button type="button" onclick="cerrarScanModal()" style="background:none;border:none;cursor:pointer;font-size:18px;">✕</button>
                        </div>
                        <div id="scan-results-list" style="padding:5px 0;"></div>
                        <div id="scan-no-results" class="hidden" style="padding:15px;text-align:center;color:#888;">
                            No se encontraron páginas en el namespace compartidos.
                        </div>
                    </div>
                </div>
            </fieldset>

            <!-- Observaciones -->
            <div class="form-group">
                <label>Observaciones</label>
                <textarea name="observaciones" placeholder="Notas adicionales sobre este proyecto..."><?php echo $proyecto ? htmlspecialchars($proyecto['observaciones'] ?? '') : '' ?></textarea>
            </div>

            <!-- Botones -->
            <div class="btn-container">
                <button type="submit" class="btn btn-primary">
                    Guardar
                </button>
                <a href="<?php echo $tpl->url('admin_threads') ?>" class="btn btn-secondary">
                    Cancelar
                </a>
            </div>

        </form>
    </div>

</div>

<script>
function cambiarTipoTrabajador() {
    var tipoUsuario = document.querySelector('input[name="tipo_trabajador"][value="usuario"]').checked;
    var grupoUsuario = document.getElementById('grupo_usuario');
    var grupoFirma = document.getElementById('grupo_firma');
    var grupoNombreCompleto = document.getElementById('grupo_nombre_completo');
    var optUsuario = document.getElementById('opt_usuario');
    var optFirma = document.getElementById('opt_firma');

    if (tipoUsuario) {
        grupoUsuario.classList.remove('hidden');
        grupoFirma.classList.add('hidden');
        grupoNombreCompleto.classList.remove('hidden');
        optUsuario.classList.add('selected');
        optFirma.classList.remove('selected');
        document.getElementById('nombre_firma').value = '';
        actualizarNombreDesdeUsuario();
    } else {
        grupoUsuario.classList.add('hidden');
        grupoFirma.classList.remove('hidden');
        grupoNombreCompleto.classList.add('hidden');
        optUsuario.classList.remove('selected');
        optFirma.classList.add('selected');
        document.getElementById('usuario_id').value = '';
        actualizarNombreDesdeFirma();
    }
}

function actualizarNombreDesdeUsuario() {
    var select = document.getElementById('usuario_id');
    var nombreInput = document.getElementById('trabajador_nombre');
    var selectedOption = select.options[select.selectedIndex];

    if (selectedOption && selectedOption.dataset.nombre) {
        nombreInput.value = selectedOption.dataset.nombre;
    }
}

function actualizarNombreDesdeFirma() {
    var firmaInput = document.getElementById('nombre_firma');
    var nombreInput = document.getElementById('trabajador_nombre');
    nombreInput.value = firmaInput.value;
}

// Sincronizar campo firma con nombre completo
document.getElementById('nombre_firma').addEventListener('input', function() {
    document.getElementById('trabajador_nombre').value = this.value;
});

// Inicializar al cargar
document.addEventListener('DOMContentLoaded', function() {
    cambiarTipoTrabajador();
});

// --- Escaneo de documentos en namespace compartidos ---

var _scanTargetField = '';
var _scanSectok = '<?php echo getSecurityToken(); ?>';
var _scanBaseUrl = '<?php echo DOKU_BASE; ?>';

function scanDocumentos(targetField) {
    _scanTargetField = targetField;
    var formData = new FormData();
    formData.append('call', 'bez');
    formData.append('accion', 'scanCompartidos');
    formData.append('sectok', _scanSectok);

    var ajaxUrl = _scanBaseUrl + 'lib/plugins/bez/meta/ajax_handler.php';

    fetch(ajaxUrl, {
        method: 'POST',
        body: formData,
        credentials: 'same-origin'
    })
    .then(function(r) { return r.json(); })
    .then(function(data) {
        if (data.status === 'success') {
            mostrarResultadosScan(data.pages, targetField);
        } else {
            alert('Error al escanear: ' + (data.mensaje || data.error || 'Error desconocido'));
        }
    })
    .catch(function(err) {
        alert('Error de conexión: ' + err.message);
    });
}

function mostrarResultadosScan(pages, targetField) {
    var modal = document.getElementById('scan-results-modal');
    var list = document.getElementById('scan-results-list');
    var noResults = document.getElementById('scan-no-results');
    var title = document.getElementById('scan-results-title');

    list.innerHTML = '';

    var keyword = targetField === 'manual_de_calidad' ? 'manual' : 'etica';
    title.textContent = 'Seleccionar documento (' + (targetField === 'manual_de_calidad' ? 'Manual de Calidad' : 'Código de Ética') + ')';

    if (!pages || pages.length === 0) {
        noResults.classList.remove('hidden');
        list.style.display = 'none';
    } else {
        noResults.classList.add('hidden');
        list.style.display = 'block';

        // Ordenar: coincidencias primero
        pages.sort(function(a, b) {
            var aMatch = a.name.indexOf(keyword) !== -1 ? 0 : 1;
            var bMatch = b.name.indexOf(keyword) !== -1 ? 0 : 1;
            if (aMatch !== bMatch) return aMatch - bMatch;
            return a.id.localeCompare(b.id);
        });

        pages.forEach(function(page) {
            var div = document.createElement('div');
            div.style.cssText = 'padding:8px 15px;cursor:pointer;border-bottom:1px solid #f0f0f0;transition:background 0.15s;';
            div.textContent = page.id;

            if (page.name.indexOf(keyword) !== -1) {
                div.style.fontWeight = 'bold';
                div.style.background = '#e8f5e9';
            }

            div.addEventListener('mouseenter', function() {
                this.style.background = page.name.indexOf(keyword) !== -1 ? '#c8e6c9' : '#f5f5f5';
            });
            div.addEventListener('mouseleave', function() {
                this.style.background = page.name.indexOf(keyword) !== -1 ? '#e8f5e9' : '';
            });

            div.addEventListener('click', function() {
                var inputId = targetField === 'manual_de_calidad' ? 'ruta_manual_calidad' : 'ruta_codigo_etica';
                document.getElementById(inputId).value = page.id;
                cerrarScanModal();
            });
            list.appendChild(div);
        });
    }

    modal.classList.remove('hidden');
}

function cerrarScanModal() {
    document.getElementById('scan-results-modal').classList.add('hidden');
}
</script>
