<?php
// /views/registro.php
session_start();

include_once '../services/pdo_connection.php';
include_once '../models/model_usuario.php';

$is_editing = isset($_GET['id']) && $_GET['id'] !== '';
$edit_user_id = $is_editing ? (int)$_GET['id'] : null;

$nombre_completo = '';
$correo = '';
$telefono = '';
$activo = 1;

/* === Seguridad ===
 * - Registro NUEVO: público (no requiere sesión)
 * - Edición (con ?id=...): solo ADMIN (user_id==1)
 */
if ($is_editing) {
    if (empty($_SESSION['user_id']) || (int)$_SESSION['user_id'] !== 1) {
        $_SESSION['login_error'] = 'Debes iniciar sesión como administrador.';
        $_SESSION['return_to']   = $_SERVER['REQUEST_URI'] ?? '/views/perfil.php';
        header('Location: login.php'); exit;
    }
}

$database = new Database();
$db = $database->getConnection();

if ($is_editing) {
    $usuario_a_editar = new Usuario();
    $usuario_a_editar->setIdUsuario($edit_user_id);
    $stmt = $usuario_a_editar->leerUno($db);
    $row = $stmt->fetch(PDO::FETCH_ASSOC);
    if (!$row) {
        header('Location: perfil.php'); exit;
    }
    $nombre_completo = $row['nombre_completo'];
    $correo          = $row['correo'];
    $telefono        = $row['telefono'];
    $activo          = (int)$row['activo'];
} else {
    // Prefill si volviste por error de validación
    $nombre_completo = $_SESSION['form_data']['nombre_completo'] ?? '';
    $correo          = $_SESSION['form_data']['correo']          ?? '';
    $telefono        = $_SESSION['form_data']['telefono']        ?? '';
}

$message      = $_SESSION['message']      ?? '';
$message_type = $_SESSION['message_type'] ?? '';
unset($_SESSION['message'], $_SESSION['message_type'], $_SESSION['form_data']);
?>
<!DOCTYPE html>
<html lang="es">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title><?= $is_editing ? 'Editar usuario' : 'Registro de trabajador' ?></title>
  <link rel="stylesheet" href="css/registro.css">
  <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
</head>
<body>
  <div class="background-animated"></div>

  <div class="form-container">
    <?php if ($message): ?>
      <div class="message <?= htmlspecialchars($message_type) ?>"><?= htmlspecialchars($message) ?></div>
    <?php endif; ?>

    <h2><?= $is_editing ? 'Editar Usuario' : 'Registro de trabajador' ?></h2>

    <form action="../controllers/controller_usuario.php" method="POST" id="userForm" autocomplete="off">
      <input type="hidden" name="action" value="<?= $is_editing ? 'editar' : 'registrar' ?>">
      <?php if ($is_editing): ?>
        <input type="hidden" name="id_usuario" value="<?= htmlspecialchars($edit_user_id) ?>">
      <?php endif; ?>

      <div class="input-group">
        <i class="fas fa-user icon"></i>
        <input type="text" id="nombre_completo" name="nombre_completo"
               value="<?= htmlspecialchars($nombre_completo) ?>" placeholder="Nombre completo" required>
      </div>

      <div class="input-group">
        <i class="fas fa-envelope icon"></i>
        <input type="email" id="correo" name="correo"
               value="<?= htmlspecialchars($correo) ?>" placeholder="Correo electrónico" required>
      </div>

      <div class="input-group">
        <i class="fas fa-phone icon"></i>
        <input type="tel" id="telefono" name="telefono"
               value="<?= htmlspecialchars($telefono) ?>" placeholder="Teléfono" required>
      </div>

      <div class="input-group">
        <i class="fas fa-lock icon"></i>
        <input type="password" id="contrasena" name="contrasena"
               placeholder="<?= $is_editing ? 'Nueva contraseña (opcional)' : 'Contraseña' ?>"
               <?= $is_editing ? '' : 'required' ?>>
      </div>

      <div class="input-group" id="confirmPasswordGroup" <?= $is_editing ? 'style="display:none"' : '' ?>>
        <i class="fas fa-lock icon"></i>
        <input type="password" id="confirm_contrasena" name="confirm_contrasena"
               placeholder="Confirmar contraseña" <?= $is_editing ? '' : 'required' ?>>
      </div>

      <div id="password_error" class="error-message"></div>

      <?php if ($is_editing): ?>
        <label for="activo">Estado:</label>
        <select id="activo" name="activo">
          <option value="1" <?= $activo ? 'selected':'' ?>>Activo</option>
          <option value="0" <?= !$activo ? 'selected':'' ?>>Inactivo</option>
        </select>
        <div class="button-container">
          <button type="submit">Guardar cambios</button>
          <a class="cancel-button" href="perfil.php">Cancelar</a>
        </div>
      <?php else: ?>
        <!-- Nueva solicitud SIEMPRE entra como INACTIVA -->
        <input type="hidden" name="activo" value="0">
        <button type="submit">Enviar solicitud</button>
        <p style="margin-top:8px;color:#64748b;font-size:.95rem">
          Tu cuenta quedará <strong>pendiente de aprobación</strong> por el administrador.
        </p>
      <?php endif; ?>
    </form>
  </div>

  <script>
  // Mostrar confirmación solo si en edición escribes nueva contraseña
  document.addEventListener('DOMContentLoaded', () => {
    const isEditing = <?= $is_editing ? 'true':'false' ?>;
    if (!isEditing) return;
    const pass = document.getElementById('contrasena');
    const group = document.getElementById('confirmPasswordGroup');
    const confirm = document.getElementById('confirm_contrasena');
    pass.addEventListener('input', () => {
      if (pass.value.length) { group.style.display='block'; confirm.required = true; }
      else { group.style.display='none'; confirm.required = false; }
    });
  });
  </script>
</body>
</html>
