<?php
require_once __DIR__.'/../config/config.php';
require_once __DIR__.'/../config/database.php';
require_once __DIR__.'/../includes/functions.php';
$token=(string)($_GET['token']??$_POST['token']??'');
$invite=afGuardianBuscarConvitePorToken($pdo,$token);
$erros=[];$logged=isLoggedIn();

if($logged){
    $uid=(int)$_SESSION['usuario_id'];
    $age=afResumoIdade($pdo,$uid);
    if(!$age['completo']){
        $_SESSION['af_after_age']='/pages/convite-responsavel.php?token='.rawurlencode($token);
        header('Location: '.SITE_URL.'/pages/verificar-idade.php');exit;
    }
}

if($_SERVER['REQUEST_METHOD']==='POST' && $invite && $invite['status']==='pending'){
    if(!validarCsrfToken($_POST[CSRF_TOKEN_NAME]??''))$erros[]='Sessão expirada. Recarregue a página.';
    $action=(string)($_POST['action']??'');
    if(!$erros && $action==='register_guardian'){
        $nome=sanitize($_POST['nome']??'');$username=strtolower(sanitize($_POST['username']??''));$email=strtolower(sanitize($_POST['email']??''));$senha=(string)($_POST['senha']??'');$confirmar=(string)($_POST['confirmar']??'');$dob=(string)($_POST['data_nascimento']??'');$pais=sanitize($_POST['pais']??'Brasil')?:'Brasil';
        if($email!==strtolower((string)$invite['guardian_email']))$erros[]='Use o mesmo e-mail que recebeu o convite.';
        if(mb_strlen($nome)<3||mb_strlen($nome)>100)$erros[]='Informe seu nome completo.';
        if(!preg_match('/^[a-z0-9_]{3,30}$/',$username))$erros[]='Usuário inválido. Use letras minúsculas, números e _.';
        if(strlen($senha)<8)$erros[]='A senha deve ter pelo menos 8 caracteres.';
        if($senha!==$confirmar)$erros[]='As senhas não coincidem.';
        try{afValidarDeclaracaoIdade($dob,$pais,'guardian');}catch(Throwable $e){$erros[]=$e->getMessage();}
        if(empty($_POST['declaracao_responsavel']))$erros[]='Confirme a declaração de responsabilidade.';
        if(!$erros){$st=$pdo->prepare('SELECT id FROM af_usuarios WHERE username=? OR email=? LIMIT 1');$st->execute([$username,$email]);if($st->fetchColumn())$erros[]='Este usuário ou e-mail já possui conta. Entre na conta existente.';}
        if(!$erros){
            try{
                afRateLimitOrFail($pdo,'guardian_register_ip',clientIp(),4,3600,3600);
                $u=criarUsuarioLocal($pdo,['nome'=>$nome,'username'=>$username,'email'=>$email,'senha'=>$senha,'data_nascimento'=>$dob,'pais_conta'=>$pais,'uso_conta'=>'guardian']);
                criarSessaoAutenticada($pdo,$u,true);recarregarSessaoUsuario($pdo,(int)$u['id']);
                afGuardianAceitarConvite($pdo,$token,(int)$u['id']);
                setFlash('success','Conta criada e vínculo realizado.');
                header('Location: '.SITE_URL.'/pages/verificar-responsavel.php');exit;
            }catch(Throwable $e){$erros[]=$e->getMessage();}
        }
    }
    if(!$erros && $action==='accept' && $logged){
        if(empty($_POST['declaracao_responsavel']))$erros[]='Confirme a declaração de responsabilidade.';
        else{
            try{afGuardianAceitarConvite($pdo,$token,(int)$_SESSION['usuario_id']);setFlash('success','Vínculo criado com sucesso.');header('Location: '.SITE_URL.'/pages/verificar-responsavel.php');exit;}
            catch(Throwable $e){$erros[]=$e->getMessage();}
        }
    }
}
$logged=isLoggedIn();$current=$logged?usuarioAtual():null;
$pageTitle='Convite do responsável';$showNav=false;require_once __DIR__.'/../includes/header.php';
?>
<main class="age-gate-shell guardian-shell"><section class="age-gate-card guardian-card guardian-invite-public fade-in">
 <div class="age-gate-logo">🛡️</div><p class="eyebrow">AURA FARMING • VÍNCULO FAMILIAR</p><h1>CONVITE DO RESPONSÁVEL</h1>
 <?php if(!$invite):?><div class="flash flash--error"><span>✕</span> Convite inválido.</div><p class="age-gate-lead">Solicite um novo link ao titular da conta menor.</p>
 <?php elseif($invite['status']!=='pending'):?><div class="age-status-panel"><span><?=$invite['status']==='accepted'?'✓':'⌛'?></span><div><strong><?=$invite['status']==='accepted'?'Convite já aceito':'Convite encerrado ou expirado'?></strong><p>Este link não pode mais ser utilizado.</p></div></div>
 <?php else:?>
  <div class="guardian-minor-card"><img src="<?=urlAvatar($invite['minor_foto']??null,$invite['minor_foto_externa']??null)?>" alt=""><div><small>SOLICITAÇÃO DE</small><b><?=esc($invite['minor_nome'])?></b><span><?=esc($invite['minor_aura_id'])?></span></div></div>
  <p class="age-gate-lead">Você foi indicado como <b><?=esc($invite['parentesco'])?></b>. O vínculo apenas conecta as contas; câmera e recursos sociais continuam bloqueados até verificação e consentimentos posteriores.</p>
  <?php if($erros):?><div class="flash flash--error"><span>✕</span><ul class="error-list"><?php foreach($erros as $e):?><li><?=esc($e)?></li><?php endforeach?></ul></div><?php endif?>
  <?php if($logged):?>
   <div class="guardian-profile-mini"><div class="guardian-avatar">👤</div><div><b><?=esc($current['nome']??'')?></b><small><?=esc($current['email']??'')?></small><span>CONTA CONECTADA</span></div></div>
   <?php if(strtolower((string)($current['email']??''))!==strtolower((string)$invite['guardian_email'])):?><div class="flash flash--error"><span>✕</span> O e-mail desta conta é diferente do e-mail convidado. Saia e entre com <?=esc($invite['guardian_email'])?>.</div><a class="btn btn-secondary" href="<?=SITE_URL?>/auth/logout.php">SAIR DA CONTA</a>
   <?php else:?><form method="post" class="guardian-accept-form"><?=camposCsrf()?><input type="hidden" name="token" value="<?=esc($token)?>"><input type="hidden" name="action" value="accept"><label class="age-declaration-check"><input type="checkbox" name="declaracao_responsavel" value="1" required><span>Declaro ser maior de 18 anos, conhecer o menor e possuir responsabilidade legal para iniciar este vínculo. Entendo que precisarei confirmar minha maioridade e meu e-mail antes de avançar.</span></label><button class="btn btn-primary" type="submit">ACEITAR VÍNCULO</button></form><?php endif?>
  <?php else:?>
   <div class="guardian-login-options"><a class="btn btn-primary" href="<?=SITE_URL?>/auth/login.php?continue=<?=rawurlencode('/pages/convite-responsavel.php?token='.$token)?>">JÁ TENHO CONTA</a><div class="divider">ou crie sua conta de responsável</div></div>
   <form method="post" class="age-gate-form guardian-register-form"><?=camposCsrf()?><input type="hidden" name="token" value="<?=esc($token)?>"><input type="hidden" name="action" value="register_guardian">
    <label>Nome completo<div class="form-field"><span class="field-icon">👤</span><input class="form-input" name="nome" value="<?=esc($_POST['nome']??$invite['guardian_nome'])?>" maxlength="100" required></div></label>
    <label>Usuário<div class="form-field"><span class="field-icon">@</span><input class="form-input" name="username" value="<?=esc($_POST['username']??'')?>" pattern="[a-z0-9_]{3,30}" placeholder="ex: mariasilva" required></div></label>
    <label>E-mail convidado<div class="form-field"><span class="field-icon">📧</span><input class="form-input" type="email" name="email" value="<?=esc($invite['guardian_email'])?>" readonly required></div></label>
    <label>Data de nascimento<div class="form-field"><span class="field-icon">📅</span><input class="form-input" type="date" name="data_nascimento" value="<?=esc($_POST['data_nascimento']??'')?>" max="<?=date('Y-m-d',strtotime('-18 years'))?>" required></div></label>
    <label>País<div class="form-field"><span class="field-icon">🌎</span><input class="form-input" name="pais" value="<?=esc($_POST['pais']??'Brasil')?>" maxlength="80" required></div></label>
    <label>Senha<div class="form-field"><span class="field-icon">🔒</span><input class="form-input" type="password" name="senha" minlength="8" required></div></label>
    <label>Confirme a senha<div class="form-field"><span class="field-icon">🔒</span><input class="form-input" type="password" name="confirmar" minlength="8" required></div></label>
    <label class="age-declaration-check"><input type="checkbox" name="declaracao_responsavel" value="1" required><span>Declaro ser maior de 18 anos, conhecer o menor e possuir responsabilidade legal. Entendo que precisarei confirmar minha maioridade e meu e-mail antes de avançar.</span></label>
    <button class="btn btn-primary" type="submit">CRIAR CONTA E ACEITAR</button>
   </form>
  <?php endif?>
 <?php endif?>
 <a class="btn btn-secondary mt-12" href="<?=SITE_URL?>/">VOLTAR AO SITE</a>
</section></main>
<?php require_once __DIR__.'/../includes/footer.php';?>
