<?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(!afGuardianUsuarioPodeSerResponsavel($pdo,$uid)){header('Location: '.SITE_URL.'/pages/home.php');exit;}
$linkId=(int)($_GET['link_id']??$_POST['link_id']??0);$errors=[];
try{$link=afGuardianDashboardLink($pdo,$uid,$linkId);}catch(Throwable $e){setFlash('error',$e->getMessage());header('Location: '.SITE_URL.'/pages/painel-responsavel.php');exit;}
$verification=afGuardianVerificationStatus($pdo,$uid);
if($_SERVER['REQUEST_METHOD']==='POST'){
    if(!validarCsrfToken($_POST[CSRF_TOKEN_NAME]??''))$errors[]='Sessão expirada.';
    if(!$errors){
        try{
            $action=(string)($_POST['action']??'save_controls');
            if($action==='save_controls'){
                afGuardianDashboardSaveControls($pdo,$uid,$linkId,$_POST);
                setFlash('success','Controles parentais atualizados.');
            }elseif($action==='add_contact'){
                $target=afApprovedContactAdd($pdo,$uid,$linkId,(string)($_POST['contact_identifier']??''),(string)($_POST['contact_notes']??''));
                setFlash('success','Contato aprovado: '.($target['nome']??'usuário').'.');
            }elseif($action==='remove_contact'){
                afApprovedContactRemove($pdo,$uid,$linkId,(int)($_POST['contact_user_id']??0));
                setFlash('success','Contato removido da lista aprovada.');
            }elseif($action==='request_account_deletion'){
                $result=afGuardianDashboardRequestDeletion($pdo,$uid,$linkId,'account');
                setFlash('success','Solicitação criada. Protocolo: '.$result['protocol'].'.');
            }elseif($action==='request_history_deletion'){
                $result=afGuardianDashboardRequestDeletion($pdo,$uid,$linkId,'history');
                setFlash('success','Solicitação criada. Protocolo: '.$result['protocol'].'.');
            }else throw new RuntimeException('Ação inválida.');
            header('Location: '.SITE_URL.'/pages/dependente-responsavel.php?link_id='.$linkId);exit;
        }catch(Throwable $e){$errors[]=$e->getMessage();}
    }
}
$minorId=(int)$link['minor_usuario_id'];
$controls=afGuardianDashboardEnsureControls($pdo,$uid,$linkId);
$access=afGuardianDashboardAccessDecision($pdo,$minorId);
$stats=afGuardianDashboardStats($pdo,$minorId);
$sessions=afGuardianDashboardRecentSessions($pdo,$minorId,12);
$incidents=afGuardianDashboardRecentIncidents($pdo,$minorId,12);
$contacts=afApprovedContacts($pdo,$uid,$linkId,true);
$policy=afMinorPolicySummary($pdo,$minorId,true);
$consent=afConsentResumoDoVinculo($pdo,$linkId,$uid);
$pageTitle='Acompanhar dependente';$showNav=false;require_once __DIR__.'/../includes/header.php';
$incidentLabels=['multiple_people'=>'Mais de uma pessoa','poor_lighting'=>'Iluminação inadequada','camera_lost'=>'Câmera interrompida','detector_unavailable'=>'Detecção indisponível','privacy_unavailable'=>'Proteção visual indisponível','tab_hidden'=>'Aplicativo em segundo plano'];
$familyConfirmed=function_exists('afGuardianFamilyLinkConfirmed')&&afGuardianFamilyLinkConfirmed($pdo,$linkId);
$disabled=($verification['approved']&&$familyConfirmed)?'':'disabled';
?>
<header class="app-header"><a href="<?=SITE_URL?>/pages/painel-responsavel.php" class="btn-back">← Painel</a><div class="logo-inline"><span class="logo-main">AURA</span><span class="logo-sub">FAMÍLIA</span></div><a href="<?=SITE_URL?>/pages/alertas-responsavel.php" class="btn-notif">🔔</a></header>
<main class="page-content guardian-detail-page">
 <?=renderFlash()?>
 <?php if($errors):?><div class="flash flash--error"><span>✕</span><?=esc(implode(' | ',$errors))?></div><?php endif?>
 <section class="card guardian-detail-hero">
   <img src="<?=urlAvatar($link['foto_perfil']??null,$link['foto_externa']??null)?>" alt="">
   <div><p class="eyebrow">CONTROLE PARENTAL • ETAPA 20.1</p><h1><?=esc($link['nome'])?></h1><span><?=esc($link['aura_id'])?> • <?=(int)$link['idade_declarada']?> anos</span></div>
   <b class="<?=!empty($access['allowed'])?'is-ok':'is-blocked'?>"><?=!empty($access['allowed'])?'LIBERADO':'BLOQUEADO'?></b>
 </section>

 <section class="guardian-overview-grid guardian-overview-grid--detail">
   <article class="card"><small>USO HOJE</small><strong><?=ceil(((int)$stats['used_today_seconds'])/60)?> min</strong><span>tempo de sessões protegidas</span></article>
   <article class="card"><small>SESSÕES 30 DIAS</small><strong><?=(int)($stats['sessions_30']??0)?></strong><span><?=(int)($stats['completed_30']??0)?> concluídas</span></article>
   <article class="card"><small>INCIDENTES 30 DIAS</small><strong><?=(int)($stats['incidents_30']??0)?></strong><span><?=(int)($stats['multiple_30']??0)?> pessoas • <?=(int)($stats['lighting_30']??0)?> luz</span></article>
 </section>
 <div class="guardian-access-message <?=!empty($access['allowed'])?'is-ok':'is-blocked'?>"><b><?=esc($access['code'])?></b><span><?=esc($access['message'])?></span></div>

 <form method="post" class="card guardian-controls-form">
   <?=camposCsrf()?><input type="hidden" name="link_id" value="<?=$linkId?>"><input type="hidden" name="action" value="save_controls">
   <div class="section-title">🎛️ Controles do dependente</div>
   <?php if(!$verification['approved']):?><div class="flash flash--error"><span>!</span>Conclua a revisão interna do responsável antes de salvar alterações.</div><?php elseif(!$familyConfirmed):?><div class="flash flash--error"><span>!</span>Confirme o código familiar gerado na conta deste menor.</div><?php endif?>
   <label class="form-group"><span>ACESSO GERAL</span><select name="access_status" <?=$disabled?>>
      <option value="active" <?=$controls['access_status']==='active'?'selected':''?>>Ativo dentro das regras</option>
      <option value="paused" <?=$controls['access_status']==='paused'?'selected':''?>>Suspender imediatamente</option>
   </select></label>
   <div class="guardian-control-grid">
     <label class="form-group"><span>LIMITE DIÁRIO</span><select name="daily_limit_minutes" <?=$disabled?>><?php foreach([0=>'Sem limite',15=>'15 minutos',30=>'30 minutos',45=>'45 minutos',60=>'1 hora',90=>'1h30',120=>'2 horas'] as $v=>$label):?><option value="<?=$v?>" <?=(int)$controls['daily_limit_minutes']===$v?'selected':''?>><?=$label?></option><?php endforeach?></select></label>
     <label class="form-group"><span>HORÁRIO INICIAL</span><input type="time" name="allowed_start_time" value="<?=substr((string)$controls['allowed_start_time'],0,5)?>" <?=$disabled?>></label>
     <label class="form-group"><span>HORÁRIO FINAL</span><input type="time" name="allowed_end_time" value="<?=substr((string)$controls['allowed_end_time'],0,5)?>" <?=$disabled?>></label>
   </div>
   <div class="guardian-feature-options">
     <label><input type="checkbox" name="camera_enabled" value="1" <?=!empty($controls['camera_enabled'])?'checked':''?> <?=$disabled?>><span><b>Câmera segura</b><small>Permite câmera apenas com proteção ativa.</small></span></label>
     <label><input type="checkbox" name="farm_enabled" value="1" <?=!empty($controls['farm_enabled'])?'checked':''?> <?=$disabled?>><span><b>Farm individual</b><small>Partidas individuais dentro do horário.</small></span></label>
     <label><input type="checkbox" name="battle_enabled" value="1" <?=!empty($controls['battle_enabled'])?'checked':''?> <?=$disabled?>><span><b>Battle protegido</b><small>Somente com contatos aprovados abaixo.</small></span></label>
     <label><input type="checkbox" name="ranking_enabled" value="1" <?=!empty($controls['ranking_enabled'])?'checked':''?> <?=$disabled?>><span><b>Ranking por apelido</b><small>Sem sobrenome, cidade ou localização.</small></span></label>
     <label><input type="checkbox" name="comments_moderated" value="1" <?=!empty($controls['comments_moderated'])?'checked':''?> <?=$disabled?>><span><b>Comentários moderados</b><small>Comentários ficam filtrados; desmarcado = desligados.</small></span></label>
     <label class="is-locked"><input type="checkbox" disabled><span><b>Transmissão pública</b><small>Bloqueada para menores nesta fase.</small></span></label>
   </div>
   <div class="guardian-notification-options">
     <?php foreach([
       'notify_session_start'=>['Início da sessão','Avisar quando a sessão protegida começar.'],
       'notify_session_end'=>['Fim da sessão','Avisar quando a sessão terminar.'],
       'notify_security_incident'=>['Incidentes de câmera','Múltiplas pessoas, iluminação ou falha de privacidade.'],
       'notify_friend_request'=>['Solicitação de amizade','Avisar sobre novos contatos.'],
       'notify_battle_start'=>['Participação em Battle','Avisar convite ou início de Battle.'],
       'notify_live_start'=>['Tentativa de transmissão','Avisar qualquer tentativa bloqueada.'],
       'notify_report'=>['Denúncias','Avisar incidentes graves.'],
       'notify_privacy_change'=>['Alteração de privacidade','Avisar mudanças nos controles.'],
       'notify_blocked_access'=>['Tentativa bloqueada','Avisar tentativas de usar recurso proibido.'],
       'notify_weekly_summary'=>['Resumo semanal','Preferência para relatórios automáticos.'],
     ] as $key=>$text):?><label><input type="checkbox" name="<?=$key?>" value="1" <?=!empty($controls[$key])?'checked':''?> <?=$disabled?>><span><b><?=esc($text[0])?></b><small><?=esc($text[1])?></small></span></label><?php endforeach?>
   </div>
   <button class="btn btn-primary" type="submit" <?=$disabled?>>SALVAR CONTROLES</button>
 </form>

 <section class="card guardian-contacts-card">
   <div class="section-title">👥 Contatos aprovados para Battle</div>
   <p>O menor somente poderá participar de Battle com usuários aprovados pelo responsável. A autorização pode ser retirada a qualquer momento.</p>
   <form method="post" class="guardian-contact-form"><?=camposCsrf()?><input type="hidden" name="link_id" value="<?=$linkId?>"><input type="hidden" name="action" value="add_contact"><input class="form-input" name="contact_identifier" placeholder="ID AURA ou @usuário" required <?=$disabled?>><input class="form-input" name="contact_notes" maxlength="500" placeholder="Observação opcional" <?=$disabled?>><button class="btn btn-secondary" <?=$disabled?>>APROVAR CONTATO</button></form>
   <div class="guardian-contact-list"><?php if(!$contacts):?><div class="privacy-empty">Nenhum contato aprovado. O Battle continuará bloqueado.</div><?php endif?><?php foreach($contacts as $contact):?><article><img src="<?=urlAvatar($contact['foto_perfil']??null,$contact['foto_externa']??null)?>" alt=""><div><b><?=esc($contact['nome'])?></b><small><?=esc($contact['aura_id'])?> • @<?=esc($contact['username'])?></small></div><form method="post" onsubmit="return confirm('Remover este contato aprovado?')"><?=camposCsrf()?><input type="hidden" name="link_id" value="<?=$linkId?>"><input type="hidden" name="action" value="remove_contact"><input type="hidden" name="contact_user_id" value="<?=(int)$contact['contact_usuario_id']?>"><button type="submit" <?=$disabled?>>Remover</button></form></article><?php endforeach?></div>
 </section>

 <section class="card guardian-policy-summary-card">
   <div class="section-title">🛡️ Segurança e consentimento</div>
   <div class="guardian-account-grid"><div><small>CONSENTIMENTO</small><b><?=!empty($consent['active'])?'Ativo':'Pendente'?></b></div><div><small>FAIXA ETÁRIA</small><b><?=esc($policy['age_band_label'])?></b></div><div><small>CÂMERA SEGURA</small><b><?=$policy['safe_camera_ready']?'Disponível':'Bloqueada'?></b></div><div><small>CONTATOS</small><b><?=count($contacts)?> aprovados</b></div></div>
   <div class="guardian-card-actions"><a class="btn btn-secondary" href="<?=SITE_URL?>/pages/consentimentos-responsavel.php?link_id=<?=$linkId?>">REVISAR CONSENTIMENTOS</a><a class="btn btn-secondary" href="<?=SITE_URL?>/pages/seguranca-menor.php?minor_id=<?=$minorId?>">VER POLÍTICA COMPLETA</a></div>
 </section>

 <div class="section-title">⏱️ Sessões recentes</div><section class="guardian-activity-list">
 <?php if(!$sessions):?><div class="card guardian-empty"><span>⏱️</span><b>Nenhuma sessão registrada</b><p>As próximas sessões aparecerão aqui sem vídeo ou imagens.</p></div><?php else:foreach($sessions as $s):$duration=(int)($s['duracao_real_segundos']??0);$inc=(int)($s['multiple_people_incidents']??0)+(int)($s['lighting_incidents']??0)+(int)($s['camera_incidents']??0)+(int)($s['visibility_incidents']??0);?><article class="card guardian-session-row"><div><b><?=esc(strtoupper((string)$s['status']))?></b><small><?=!empty($s['iniciada_em'])?date('d/m/Y H:i',strtotime((string)$s['iniciada_em'])):'Aguardando início'?></small></div><div><strong><?=number_format((float)($s['pontuacao_validada']??0),2,',','.')?></strong><small><?=$duration?> s • <?=$inc?> alertas técnicos</small></div></article><?php endforeach;endif?></section>

 <div class="section-title">⚠️ Incidentes recentes</div><section class="guardian-incident-list">
 <?php if(!$incidents):?><div class="card guardian-empty guardian-empty--small"><span>✓</span><b>Nenhum incidente recente</b></div><?php else:foreach($incidents as $i):?><article class="card guardian-incident-row"><span><?=in_array($i['event_type'],['multiple_people','privacy_unavailable','poor_lighting'],true)?'!':'⚠'?></span><div><b><?=esc($incidentLabels[$i['event_type']]??$i['event_type'])?></b><small><?=date('d/m/Y H:i',strtotime((string)$i['criado_em']))?> • Partida #<?=(int)$i['partida_id']?></small></div></article><?php endforeach;endif?></section>

 <section class="card guardian-danger-zone"><div class="section-title">🗑️ Privacidade e exclusão</div><p>As solicitações geram protocolo e seguem o fluxo de análise, retenção legal e auditoria.</p><div class="guardian-danger-actions"><form method="post" onsubmit="return confirm('Solicitar exclusão do histórico deste dependente?')"><?=camposCsrf()?><input type="hidden" name="link_id" value="<?=$linkId?>"><input type="hidden" name="action" value="request_history_deletion"><button class="btn btn-secondary">EXCLUIR HISTÓRICO</button></form><form method="post" onsubmit="return confirm('Solicitar exclusão integral da conta deste dependente?')"><?=camposCsrf()?><input type="hidden" name="link_id" value="<?=$linkId?>"><input type="hidden" name="action" value="request_account_deletion"><button class="btn btn-danger">EXCLUIR CONTA</button></form></div></section>
 <section class="card guardian-privacy-note"><span>🔒</span><div><b>Sem acesso ao vídeo</b><p>Este painel recebe apenas horário, duração, pontuação e motivo técnico da pausa. Não recebe vídeo, fotos, áudio ou pontos corporais.</p></div></section>
</main>
<?php require_once __DIR__.'/../includes/footer.php';?>
