<?php
require_once __DIR__.'/../config/config.php';
require_once __DIR__.'/../config/database.php';
require_once __DIR__.'/../includes/functions.php';
requireLogin();
$uid=(int)$_SESSION['usuario_id'];$participantId=max(0,(int)($_GET['participant']??$_POST['participant_id']??0));$errors=[];$successQr=null;
$participant=$participantId>0?afControlledEventParticipant($pdo,$participantId):null;$consentVersion=afControlledEventConsentVersion($pdo);
if(!$participant||(int)($participant['guardian_user_id']??0)!==$uid){setFlash('error','Autorização de evento não encontrada para esta conta.');header('Location: '.SITE_URL.'/pages/evento-infantil.php');exit;}
if($_SERVER['REQUEST_METHOD']==='POST'){
 try{
  if(!validarCsrfToken($_POST[CSRF_TOKEN_NAME]??''))throw new RuntimeException('Sessão expirada.');
  $action=(string)($_POST['action']??'grant');
  if($action==='revoke'){
    afControlledEventRevokeConsent($pdo,$participantId,$uid,'Revogado pelo responsável no painel do evento');setFlash('success','Autorização revogada e QR Code cancelado.');header('Location: '.SITE_URL.'/pages/evento-infantil.php');exit;
  }
  $result=afControlledEventGrantConsent($pdo,$participantId,$uid,$_POST);$successQr=$result['qr']??null;setFlash('success','Participação autorizada. O QR Code individual está disponível abaixo.');
  $participant=afControlledEventParticipant($pdo,$participantId);
 }catch(Throwable $e){$errors[]=$e->getMessage();}
}
$qr=afControlledEventParticipantQr($pdo,$participantId,$uid);$qrUrl=$qr?SITE_URL.'/pages/evento-checkin.php?code='.rawurlencode((string)$qr['short_code']).'&event='.rawurlencode((string)$participant['public_code']):'';
$pageTitle='Autorizar evento infantil';$showNav=false;$pageStyles=[SITE_URL.'/assets/css/eventos-infantis.css?v=23.0'];$pageScripts=[SITE_URL.'/assets/vendor/qrcode/aura-qrcode.js?v=1.0',SITE_URL.'/assets/js/eventos-infantis.js?v=23.0'];require __DIR__.'/../includes/header.php';
?>
<header class="app-header"><a href="<?=SITE_URL?>/pages/evento-infantil.php" class="btn-back">← Eventos</a><div class="logo-inline"><span class="logo-main">AURA</span><span class="logo-sub">FAMÍLIA</span></div><span class="btn-notif">🛡️</span></header>
<main class="event-shell"><?=renderFlash()?><?php if($errors):?><div class="flash flash--error"><span>✕</span><?=esc(implode(' | ',$errors))?></div><?php endif?>
<section class="event-hero"><div class="event-hero__icon">👨‍👩‍👧</div><div><small>AUTORIZAÇÃO ESPECÍFICA</small><h1><?=esc($participant['event_name'])?></h1><p>Dependente: <b><?=esc($participant['minor_name'])?></b> • <?=date('d/m/Y H:i',strtotime($participant['starts_at']))?> • <?=esc($participant['venue_name'])?></p></div></section>
<div class="event-warning"><span>🔒</span><div><b>Recursos de alto risco permanecem desligados</b><p>Sem transmissão pública, comentários, mensagens privadas, localização pública, perfil completo, replay real ou download de vídeo.</p></div></div>
<?php if($participant['status']==='authorized'||$participant['status']==='checked_in'||$participant['status']==='participating'||$participant['status']==='completed'):?>
<div class="event-success"><span>✓</span><div><b>Autorização ativa</b><p>O QR Code é individual, expira ao final do evento e só funciona com supervisão presencial ativa.</p></div></div>
<?php if($qr):?><div class="event-qr"><canvas data-event-qr="<?=esc($qrUrl)?>" width="210" height="210"></canvas><b class="event-code"><?=esc($qr['short_code'])?></b><small>Apresente este QR no local do evento.</small></div><?php endif?>
<form method="post" onsubmit="return confirm('Revogar a participação e invalidar o QR Code?')"><?=camposCsrf()?><input type="hidden" name="participant_id" value="<?=$participantId?>"><input type="hidden" name="action" value="revoke"><button class="btn btn-secondary" type="submit">REVOGAR AUTORIZAÇÃO</button></form>
<?php else:?>
<section class="event-card"><h2>Autorizações separadas</h2><p>Confirme cada finalidade. Os recursos não listados permanecem bloqueados.</p><div class="event-warning"><span>📄</span><div><b><?=esc($consentVersion['title'])?> • versão <?=esc($consentVersion['version_key'])?></b><p><?=esc($consentVersion['content_text'])?></p></div></div><form method="post" class="event-form"><?=camposCsrf()?><input type="hidden" name="participant_id" value="<?=$participantId?>"><input type="hidden" name="action" value="grant"><div class="event-consent-grid">
<label class="event-consent-item"><input type="checkbox" name="account_participation" value="1" required><span><b>Participação e manutenção da inscrição</b><small>Permite manter a inscrição somente neste evento.</small></span></label>
<label class="event-consent-item"><input type="checkbox" name="camera_processing" value="1" required><span><b>Uso da câmera para detectar movimentos</b><small>Processamento no aparelho, sem gravação de vídeo por padrão.</small></span></label>
<label class="event-consent-item"><input type="checkbox" name="body_processing" value="1" required><span><b>Processamento corporal para pontuação</b><small>O servidor recebe métricas resumidas, não imagens corporais.</small></span></label>
<label class="event-consent-item"><input type="checkbox" name="event_ranking" value="1" required><span><b>Ranking fechado com apelido</b><small>Visível somente a participantes, responsáveis e organização.</small></span></label>
<label class="event-consent-item"><input type="checkbox" name="guardian_notifications" value="1" required><span><b>Notificações ao responsável</b><small>Alertas de check-in, início, conclusão e incidentes.</small></span></label>
</div><div class="event-warning"><span>🗑️</span><div><b>Exclusão programada</b><p>Os dados operacionais do evento serão removidos em até <?=(int)$participant['retention_days']?> dias após o término.</p></div></div><button class="btn btn-primary" type="submit">AUTORIZAR ESTE EVENTO</button></form></section>
<?php endif?>
</main><?php require __DIR__.'/../includes/footer.php';?>
