<?php
require_once __DIR__.'/../config/config.php';require_once __DIR__.'/../config/database.php';require_once __DIR__.'/../includes/functions.php';require_once __DIR__.'/../includes/stats_functions.php';require_once __DIR__.'/../includes/progression_functions.php';require_once __DIR__.'/../includes/personal_score_functions.php';require_once __DIR__.'/../includes/aura_ui.php';requireLogin();
$uid=(int)$_SESSION['usuario_id'];garantirPerfil($pdo,$uid);$ageResumo=afResumoIdade($pdo,$uid);
if($_SERVER['REQUEST_METHOD']==='POST'&&($_POST['action']??'')==='editar'){
 $erros=[];if(!validarCsrfToken($_POST[CSRF_TOKEN_NAME]??''))$erros[]='Sessão expirada.';
 $nome=sanitize($_POST['nome']??'');$username=strtolower(sanitize($_POST['username']??''));$email=strtolower(sanitize($_POST['email']??''));$bio=sanitize($_POST['bio']??'');$cidade=sanitize($_POST['cidade']??'');$estado=sanitize($_POST['estado']??'');$pais=sanitize($_POST['pais']??'Brasil')?:'Brasil';$perfilPrivado=afCanUseAgeFeature($pdo,$uid,'share')?(!empty($_POST['perfil_privado'])?1:0):1;
 if(mb_strlen($nome)<2||mb_strlen($nome)>100)$erros[]='Nome inválido.';if(!preg_match('/^[a-z0-9_]{3,30}$/',$username))$erros[]='Usuário inválido.';if(!filter_var($email,FILTER_VALIDATE_EMAIL))$erros[]='E-mail inválido.';if(mb_strlen($bio)>280)$erros[]='A bio deve ter até 280 caracteres.';
 if(!$erros){$st=$pdo->prepare('SELECT id FROM af_usuarios WHERE (username=? OR email=?) AND id<>? LIMIT 1');$st->execute([$username,$email,$uid]);if($st->fetchColumn())$erros[]='Usuário ou e-mail já pertence a outra conta.';}
 $foto=null;if(!$erros&&!empty($_FILES['foto_perfil']['name'])){$foto=processarAvatar($_FILES['foto_perfil'],'av_'.$uid);if(!$foto)$erros[]='Foto inválida. Use JPG, PNG ou WEBP até 5 MB.';}
 if(!$erros){$pdo->beginTransaction();try{if($foto)$pdo->prepare('UPDATE af_usuarios SET nome=?,username=?,email=?,foto_perfil=?,atualizado_em=NOW() WHERE id=?')->execute([$nome,$username,$email,$foto,$uid]);else$pdo->prepare('UPDATE af_usuarios SET nome=?,username=?,email=?,atualizado_em=NOW() WHERE id=?')->execute([$nome,$username,$email,$uid]);$pdo->prepare('UPDATE af_perfis SET bio=?,cidade=?,estado=?,pais=?,perfil_privado=?,atualizado_em=NOW() WHERE usuario_id=?')->execute([$bio,$cidade,$estado,$pais,$perfilPrivado,$uid]);$pdo->commit();recarregarSessaoUsuario($pdo,$uid);setFlash('success','Perfil atualizado com sucesso.');}catch(Throwable $e){if($pdo->inTransaction())$pdo->rollBack();setFlash('error',APP_DEBUG?$e->getMessage():'Não foi possível atualizar o perfil.');}}else setFlash('error',implode(' | ',$erros));header('Location: '.SITE_URL.'/pages/perfil.php');exit;
}
recarregarSessaoUsuario($pdo,$uid);$u=usuarioAtual();afGarantirProgressao($pdo,$uid);afSincronizarRecompensas($pdo,$uid,calcularNivel((int)$u['xp_total']));verificarConquistas($pdo,$u);recarregarSessaoUsuario($pdo,$uid);$u=usuarioAtual();$progressao=afResumoProgressao($pdo,$uid);$equip=$progressao['equipamentos'];$nivel=calcularNivel((int)$u['xp_total']);$xpMax=xpParaProximoNivel($nivel);$xpAtual=xpNoNivelAtual((int)$u['xp_total'],$nivel);$xpPct=$xpMax?min(100,round($xpAtual/$xpMax*100)):0;$titulo=getTitulo($nivel);$corTit=getCorTitulo($titulo);$posicao=afCalcularPosicaoPeriodo($pdo,$uid,'global');$eligibility=afMinorPolicyRankingEligibilitySql('ag','u');$totalUsers=(int)$pdo->query("SELECT COUNT(*) FROM af_usuarios u JOIN af_user_age_profiles ag ON ag.usuario_id=u.id WHERE u.status=1 AND {$eligibility}")->fetchColumn();$rankPct=$posicao>0&&$totalUsers>1?round($posicao/$totalUsers*100,1):0;$social=afContadoresSociais($pdo,$uid);$maiorNotaPessoal=afSincronizarMaiorNotaPessoal($pdo,$uid);$maiorNotaPerfil=$maiorNotaPessoal>0?formatarNumero((float)$maiorNotaPessoal):'Ainda sem pontuação';
$st=$pdo->prepare('SELECT c.*,uc.desbloqueada_em FROM af_conquistas c LEFT JOIN af_usuario_conquistas uc ON c.id=uc.conquista_id AND uc.usuario_id=? ORDER BY c.id');$st->execute([$uid]);$conquistas=$st->fetchAll();$icons=['flame'=>'🔥','sword'=>'⚔️','trophy'=>'🏆','gem'=>'💎','star'=>'⭐','heart'=>'❤️','zap'=>'⚡','sun'=>'🌟','medal'=>'🏅','calendar'=>'📅','arrow-up'=>'⬆️','crown'=>'👑','share'=>'📤','users'=>'👥'];
$pageTitle='Meu Perfil';$activePage='perfil';$bodyClass='aura-home-v4-body aura-app-body aura-profile-body';$showNav=false;$hideLegalFooter=true;$pageStyles=[SITE_URL.'/assets/css/home-fiel.css?v=4.1.0',SITE_URL.'/assets/css/aura-pages.css?v=1.0.0'];require_once __DIR__.'/../includes/header.php';?>
<?php afRenderAppHeader($pdo,$u,['score'=>$maiorNotaPessoal]); ?>
<main class="af-home-shell af-subpage-main page-content profile-page"><?=renderFlash()?>
 <div class="card card--glow fade-in mb-16"><div class="profile-hero"><div class="avatar-wrapper frame-<?=esc($equip['moldura_valor']??'none')?>" style="--player-aura-color:<?=esc($equip['cor_aura_valor']??'#00d4ff')?>"><img src="<?=urlAvatar($u['foto_perfil']??null,$u['foto_externa']??null)?>" alt="Avatar" class="avatar"><div class="avatar-ring"></div><div class="avatar-level">Nv <?=$nivel?></div><button class="avatar-edit-btn" data-modal-open>✏️</button></div><div class="profile-info"><h1 class="profile-name"><?=esc($u['nome'])?></h1><div class="aura-player-id" data-id="<?=esc($u['aura_id'])?>"><?=esc($u['aura_id'])?> <span class="copy-icon">📋</span></div><span class="badge-titulo mt-8 d-block" style="border-color:<?=$corTit?>;color:<?=$corTit?>">⭐ <?=esc($equip['titulo_valor']??$titulo)?></span><div class="profile-level-bar mt-12"><div class="level-nums"><span>Nv <?=$nivel?></span><span>Nv <?=$nivel+1?></span></div><div class="progress-bar-wrap"><div class="progress-bar-fill" style="width:<?=$xpPct?>%"></div></div><div class="xp-text"><?=formatarNumero($xpAtual)?> / <?=formatarNumero($xpMax)?> XP</div></div></div></div>
 <?php if(!empty($u['bio'])):?><p class="profile-bio"><?=esc($u['bio'])?></p><?php endif?><div class="player-social-counts profile-social-counts"><span><strong><?=$social['seguidores']?></strong> seguidores</span><span><strong><?=$social['seguindo']?></strong> seguindo</span></div><div class="aura-total-box mt-16"><div class="aura-total-label">Maior nota pessoal</div><div class="aura-total-value">🏅 <?=$maiorNotaPerfil?></div><div class="aura-top-pct">Ranking: <?=$posicao>0?$posicao.'º':'—'?><?=$posicao>0?' • Top '.$rankPct.'%':''?></div></div></div>
 <a class="profile-progression-banner age-profile-banner" href="<?=($ageResumo['tipo_conta']??'')==='minor'?SITE_URL.'/pages/seguranca-menor.php':(($ageResumo['tipo_conta']??'')==='guardian'?SITE_URL.'/pages/painel-responsavel.php':SITE_URL.'/pages/verificar-idade.php')?>"><span><?=$ageResumo['pode_recursos_sensiveis']?'✓':'🛡️'?></span><div><strong><?=esc(strtoupper($ageResumo['rotulo']))?></strong><small><?=esc($ageResumo['mensagem'])?></small></div><b>→</b></a>
 <a class="profile-progression-banner" href="<?=SITE_URL?>/pages/recompensas.php"><span>🎁</span><div><strong>PROGRESSÃO E RECOMPENSAS</strong><small>🔥 <?= (int)$progressao['sequencia_atual']?> dias • 🎯 <?= (int)$progressao['missoes_prontas']?> prêmio(s) pronto(s) • 🎁 <?= (int)$progressao['recompensas_desbloqueadas']?> itens</small></div><b>→</b></a>
 <div class="section-title">📊 Estatísticas</div><div class="stats-grid mb-16"><?php foreach([['🏅','Maior nota pessoal',$maiorNotaPessoal>0?$maiorNotaPessoal:'Ainda sem pontuação'],['⚔️','Partidas',$u['total_partidas']],['🏆','Vitórias',$u['total_vitorias']],['👑','Ranking',$posicao>0?$posicao.'º':'—'],['⭐','XP total',$u['xp_total']],['❤️','Likes',$u['total_likes']]] as $s):?><div class="stat-card"><div class="stat-icon"><?=$s[0]?></div><div class="stat-label"><?=$s[1]?></div><div class="stat-value"><?=is_numeric($s[2])?formatarNumero((float)$s[2]):esc((string)$s[2])?></div></div><?php endforeach?></div>
 <div class="section-title">🏅 Conquistas</div><div class="card mb-16"><div class="conquistas-grid"><?php foreach($conquistas as $c):?><div class="conquista-item" title="<?=esc($c['descricao'])?>"><div class="conquista-badge <?=!empty($c['desbloqueada_em'])?'desbloqueada':'bloqueada'?>"><?=$icons[$c['icone']]??'🏅'?></div><span class="conquista-nome"><?=esc($c['nome'])?></span></div><?php endforeach?></div></div>
 <a class="btn btn-primary" href="<?=SITE_URL?>/pages/recompensas.php">🎁 NÍVEIS E RECOMPENSAS</a><a class="btn btn-outline-cyan mt-12" href="<?=SITE_URL?>/pages/historico.php">📊 HISTÓRICO E ESTATÍSTICAS</a><a class="btn btn-outline-cyan mt-12" href="<?=SITE_URL?>/pages/ranking.php?periodo=global&escopo=amigos">👥 RANKING DE AMIGOS</a><button class="btn btn-outline-cyan mt-12" data-modal-open>✏️ EDITAR PERFIL</button><a class="btn btn-secondary mt-12" href="<?=SITE_URL?>/pages/seguranca.php">🛡️ CENTRAL DE SEGURANÇA</a><a class="btn btn-secondary mt-12" href="<?=SITE_URL?>/pages/dispositivos.php">📱 DISPOSITIVOS E SESSÕES</a><a class="btn btn-secondary mt-12" href="<?=SITE_URL?>/pages/central-privacidade.php">🛡️ PRIVACIDADE E MEUS DADOS</a><a class="btn btn-secondary mt-12" href="<?=SITE_URL?>/auth/logout.php" onclick="return confirm('Deseja sair?')">🚪 SAIR DA CONTA</a>
</main>
<div class="modal-overlay" role="dialog" aria-modal="true"><div class="modal-sheet"><div class="modal-handle"></div><h2 class="modal-title">✏️ Editar perfil</h2><form method="post" enctype="multipart/form-data"><?=camposCsrf()?><input type="hidden" name="action" value="editar"><label class="register-avatar" for="avatar-input"><img id="avatar-modal-preview" src="<?=urlAvatar($u['foto_perfil']??null,$u['foto_externa']??null)?>" alt="Foto"><span>Trocar foto</span></label><input hidden id="avatar-input" type="file" name="foto_perfil" accept="image/jpeg,image/png,image/webp"><?php foreach([['nome','Nome',$u['nome'],'text'],['username','Usuário',$u['username'],'text'],['email','E-mail',$u['email'],'email'],['cidade','Cidade',$u['cidade']??'','text'],['estado','Estado',$u['estado']??'','text'],['pais','País',$u['pais']??'Brasil','text']] as $f):?><div class="form-group"><label class="form-label"><?=$f[1]?></label><div class="form-field"><input class="form-input" type="<?=$f[3]?>" name="<?=$f[0]?>" value="<?=esc($f[2])?>" required></div></div><?php endforeach?><label class="profile-private-check"><input type="checkbox" name="perfil_privado" value="1" <?=!empty($u['perfil_privado'])?'checked':''?> <?=!$ageResumo['pode_recursos_sensiveis']?'disabled':''?>> <span><?=$ageResumo['pode_recursos_sensiveis']?'Ocultar minhas últimas partidas no perfil público':'Perfil privado obrigatório para esta classificação etária'?></span></label><div class="form-group"><label class="form-label">Bio</label><textarea class="form-textarea" name="bio" maxlength="280" placeholder="Conte um pouco sobre você"><?=esc($u['bio']??'')?></textarea></div><button class="btn btn-primary">SALVAR ALTERAÇÕES</button><button class="btn btn-secondary mt-12" type="button" data-modal-close>Cancelar</button></form></div></div>
<?php afRenderBottomNav($activePage);require_once __DIR__.'/../includes/footer.php';?>
