<?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'];
if(!afGuardianAdultVerified($pdo,$uid)){
    setFlash('error','Conclua primeiro a verificação do responsável adulto.');
    header('Location: '.SITE_URL.'/pages/verificar-responsavel.php');exit;
}
$linkId=(int)($_GET['link_id']??$_POST['link_id']??0);
if($linkId<=0){setFlash('error','Dependente não informado.');header('Location: '.SITE_URL.'/pages/painel-responsavel.php');exit;}
$errors=[];
try{$link=afConsentGetLink($pdo,$uid,$linkId);}catch(Throwable $e){setFlash('error',$e->getMessage());header('Location: '.SITE_URL.'/pages/painel-responsavel.php');exit;}

if($_SERVER['REQUEST_METHOD']==='POST'){
    if(!validarCsrfToken($_POST[CSRF_TOKEN_NAME]??''))$errors[]='Sessão expirada. Recarregue a página.';
    $action=(string)($_POST['action']??'');
    if(!$errors&&$action==='save'){
        try{
            afConsentSave($pdo,$uid,$linkId,is_array($_POST['permissions']??null)?$_POST['permissions']:[],!empty($_POST['confirm_specific']));
            setFlash('success','Consentimentos registrados com sucesso. Os recursos do menor continuam protegidos.');
            header('Location: '.SITE_URL.'/pages/consentimentos-responsavel.php?link_id='.$linkId);exit;
        }catch(Throwable $e){$errors[]=$e->getMessage();}
    }
    if(!$errors&&$action==='revoke'){
        try{
            afConsentRevoke($pdo,$uid,$linkId,(string)($_POST['reason']??'Revogado pelo responsável'));
            setFlash('success','Consentimentos revogados.');
            header('Location: '.SITE_URL.'/pages/consentimentos-responsavel.php?link_id='.$linkId);exit;
        }catch(Throwable $e){$errors[]=$e->getMessage();}
    }
}
$current=afConsentCurrentForLink($pdo,$linkId);
$definitions=afConsentDefinitions();
$highRisk=afConsentHighRiskDefinitions();
$version=afConsentCurrentVersion($pdo);
$allowed=[];
foreach(($current['permissions']??[]) as $key=>$row)$allowed[$key]=!empty($row['allowed']);
$pageTitle='Consentimentos do responsável';$showNav=false;require_once __DIR__.'/../includes/header.php';
?>
<header class="app-header"><a href="<?=SITE_URL?>/pages/painel-responsavel.php" class="btn-back">← Responsável</a><div class="logo-inline"><span class="logo-main">AURA</span><span class="logo-sub">CONSENT</span></div><span class="btn-notif">🛡️</span></header>
<main class="page-content consent-page">
    <?=renderFlash()?>
    <?php if($errors):?><div class="flash flash--error"><span>✕</span><ul class="error-list"><?php foreach($errors as $e):?><li><?=esc($e)?></li><?php endforeach?></ul></div><?php endif?>

    <section class="consent-hero">
        <div class="consent-hero-icon">☑️</div>
        <div><p class="eyebrow">ETAPA 17 • VERSÃO <?=esc((string)$version['version_key'])?></p><h1>CONSENTIMENTOS ESPECÍFICOS</h1><p>Analise cada autorização de <?=esc($link['minor_nome'])?> separadamente.</p></div>
    </section>

    <section class="card consent-dependent-card">
        <img src="<?=urlAvatar($link['minor_foto_perfil']??null,$link['minor_foto_externa']??null)?>" alt="">
        <div><b><?=esc($link['minor_nome'])?></b><small><?=esc($link['minor_aura_id'])?> • <?=esc($link['parentesco'])?></small><span>Perfil privado • Recursos sensíveis bloqueados</span></div>
    </section>

    <?php if($current):?>
        <div class="age-status-panel age-status-panel--success"><span>✓</span><div><strong>Consentimentos ativos</strong><p>Registrados em <?=date('d/m/Y \à\s H:i',strtotime((string)$current['aceito_em']))?>. Você pode revisar ou revogar a qualquer momento.</p></div></div>
    <?php else:?>
        <div class="age-status-panel"><span>⏳</span><div><strong>Aguardando suas escolhas</strong><p>Nenhuma autorização opcional foi registrada ainda.</p></div></div>
    <?php endif?>

    <form method="post" class="consent-form">
        <?=camposCsrf()?><input type="hidden" name="action" value="save"><input type="hidden" name="link_id" value="<?=$linkId?>">
        <section class="card consent-section">
            <div class="section-title">Autorizações disponíveis</div>
            <p class="consent-intro">Marque somente o que você compreendeu e deseja autorizar. Autorizações relacionadas são ajustadas automaticamente quando necessárias.</p>
            <div class="consent-list">
            <?php foreach($definitions as $key=>$def): $checked=!empty($allowed[$key])||!empty($def['required']);?>
                <label class="consent-item <?=!empty($def['required'])?'consent-item--required':''?>">
                    <?php if(!empty($def['required'])):?><input type="hidden" name="permissions[<?=esc($key)?>]" value="1"><?php endif?>
                    <input type="checkbox" name="permissions[<?=esc($key)?>]" value="1" <?=$checked?'checked':''?> <?=!empty($def['required'])?'disabled':''?>>
                    <span class="consent-switch"></span>
                    <span class="consent-copy"><b><?=esc($def['label'])?></b><small><?=esc($def['description'])?></small><?php if(!empty($def['required'])):?><em>Obrigatório para manter a conta vinculada</em><?php endif?></span>
                </label>
            <?php endforeach?>
            </div>
        </section>

        <section class="card consent-section consent-section--locked">
            <div class="section-title">🚫 Recursos que permanecem bloqueados</div>
            <p class="consent-intro">Mesmo com consentimento, estes recursos não serão liberados para menores nesta fase.</p>
            <div class="consent-locked-grid">
            <?php foreach($highRisk as $key=>$def):?>
                <div><span>🔒</span><b><?=esc($def['label'])?></b><small><?=esc($def['description'])?></small></div>
            <?php endforeach?>
            </div>
        </section>

        <label class="age-declaration-check consent-confirm"><input type="checkbox" name="confirm_specific" value="1" required><span>Confirmo que analisei cada autorização separadamente e compreendo que elas podem ser revogadas a qualquer momento.</span></label>
        <button class="btn btn-primary" type="submit"><?=$current?'ATUALIZAR CONSENTIMENTOS':'REGISTRAR CONSENTIMENTOS'?></button>
    </form>

    <?php if($current):?>
    <form method="post" class="card consent-revoke" onsubmit="return confirm('Revogar todos os consentimentos? O menor continuará com todos os recursos sensíveis bloqueados.')">
        <?=camposCsrf()?><input type="hidden" name="action" value="revoke"><input type="hidden" name="link_id" value="<?=$linkId?>">
        <div><b>Revogar autorizações</b><p>Esta ação cancela todas as permissões registradas, mas mantém o vínculo com o responsável.</p></div>
        <input class="form-input" name="reason" maxlength="255" value="Revogado pelo responsável" aria-label="Motivo da revogação">
        <button class="btn btn-secondary" type="submit">REVOGAR CONSENTIMENTOS</button>
    </form>
    <?php endif?>

    <div class="age-protection-list">
        <div>🧾 <span><b>Registro versionado</b><small>Versão, escolhas, data, IP e dispositivo ficam registrados.</small></span></div>
        <div>↩️ <span><b>Revogação simples</b><small>As autorizações podem ser retiradas sem encerrar a conta.</small></span></div>
        <div>🔐 <span><b>Proteção ainda ativa</b><small>A Etapa 17 não libera câmera ou recursos sociais antes das próximas proteções.</small></span></div>
    </div>
</main>
<?php require_once __DIR__.'/../includes/footer.php';?>
