<?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'];
$age=afResumoIdade($pdo,$uid);
if(!afGuardianUsuarioPodeSerResponsavel($pdo,$uid)){
    setFlash('error','Esta verificação é exclusiva para contas maiores de 18 anos.');
    header('Location: '.SITE_URL.'/pages/home.php');exit;
}

$errors=[];
if($_SERVER['REQUEST_METHOD']==='POST'){
    if(!validarCsrfToken($_POST[CSRF_TOKEN_NAME]??''))$errors[]='Sessão expirada. Recarregue a página.';
    $action=(string)($_POST['action']??'');
    try{
        if(!$errors&&$action==='save_declaration'){
            afGuardianSaveAdultDeclaration($pdo,$uid,(string)($_POST['data_nascimento']??''),!empty($_POST['declares_adult']),!empty($_POST['declares_responsibility']));
            setFlash('success','Declaração registrada. Agora confirme seu e-mail.');
        }elseif(!$errors&&$action==='send_code'){
            $result=afGuardianSendVerificationCode($pdo,$uid,'email');
            setFlash('success','Código enviado para '.$result['destination'].'.');
        }elseif(!$errors&&$action==='verify_code'){
            afGuardianVerifyCode($pdo,$uid,'email',(string)($_POST['code']??''));
            setFlash('success','E-mail confirmado.');
        }elseif(!$errors&&$action==='verify_family'){
            afGuardianVerifyFamilyCode($pdo,$uid,(int)($_POST['link_id']??0),(string)($_POST['family_code']??''));
            setFlash('success','Código familiar confirmado.');
        }elseif(!$errors&&in_array($action,['submit_review','finalize'],true)){
            afGuardianSubmitInternalReview($pdo,$uid);
            setFlash('success','Verificação enviada para análise interna. Os recursos do menor continuam bloqueados até a aprovação e os consentimentos.');
        }
        if(!$errors){header('Location: '.SITE_URL.'/pages/verificar-responsavel.php');exit;}
    }catch(Throwable $e){$errors[]=$e->getMessage();}
}

$status=afGuardianVerificationStatus($pdo,$uid);
$row=$status['row'];
$review=$status['review'];
$pageTitle='Verificação 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">← Painel</a>
    <div class="logo-inline"><span class="logo-main">AURA</span><span class="logo-sub">VERIFICAÇÃO</span></div>
    <span class="btn-notif">🛡️</span>
</header>
<main class="page-content guardian-verification-page">
    <?=renderFlash()?>
    <?php if($errors):?><div class="flash flash--error"><span>✕</span><ul class="error-list"><?php foreach($errors as $error):?><li><?=esc($error)?></li><?php endforeach?></ul></div><?php endif?>

    <section class="guardian-verification-hero">
        <div class="guardian-shield">✓</div>
        <div><p class="eyebrow">SEGURANÇA SEM SERVIÇOS PAGOS</p><h1>VERIFICAÇÃO INTERNA EM CAMADAS</h1><p>O Aura utiliza e-mail, código familiar, auditoria e revisão humana. Não há SMS pago nem empresa de verificação. Na revisão, um documento original pode ser apenas exibido ao vivo ou presencialmente, sem upload, fotografia ou armazenamento de cópia.</p></div>
    </section>

    <div class="verification-progress">
        <div class="verification-step <?=$status['declaration_ok']?'done':($status['next_step']==='declaration'?'active':'')?>"><span>1</span><b>Declaração</b></div>
        <div class="verification-step <?=$status['email_ok']?'done':($status['next_step']==='email'?'active':'')?>"><span>2</span><b>E-mail</b></div>
        <div class="verification-step <?=$status['family_ok']?'done':($status['next_step']==='family'?'active':'')?>"><span>3</span><b>Código familiar</b></div>
        <div class="verification-step <?=$status['review_pending']||$status['review_needs_info']||$status['approved']?'done':($status['next_step']==='review'?'active':'')?>"><span>4</span><b>Revisão</b></div>
        <div class="verification-step <?=$status['approved']?'done':($status['next_step']==='waiting'?'active':'')?>"><span>5</span><b>Resultado</b></div>
    </div>

    <section class="card verification-card <?=$status['declaration_ok']?'verification-card--done':''?>">
        <div class="verification-card-head"><span><?=$status['declaration_ok']?'✓':'1'?></span><div><h2>Declaração do responsável</h2><p>Confirme sua data de nascimento e a responsabilidade legal pelo menor.</p></div></div>
        <?php if($status['declaration_ok']):?>
            <div class="verification-ok">Declaração registrada com versão, data, IP e dispositivo.</div>
        <?php else:?>
            <form method="post" class="verification-form">
                <?=camposCsrf()?><input type="hidden" name="action" value="save_declaration">
                <label>Data de nascimento<div class="form-field"><span class="field-icon">📅</span><input class="form-input" type="date" name="data_nascimento" value="<?=esc((string)($age['data_nascimento']??''))?>" max="<?=date('Y-m-d',strtotime('-18 years'))?>" required></div></label>
                <label class="age-declaration-check"><input type="checkbox" name="declares_adult" value="1" required><span>Declaro que tenho 18 anos ou mais e que os dados informados são verdadeiros.</span></label>
                <label class="age-declaration-check"><input type="checkbox" name="declares_responsibility" value="1" required><span>Declaro conhecer o menor vinculado e possuir responsabilidade legal para representá-lo. Estou ciente de que informações falsas podem causar bloqueio e auditoria.</span></label>
                <button class="btn btn-primary" type="submit">CONFIRMAR DECLARAÇÃO</button>
            </form>
        <?php endif?>
    </section>

    <section class="card verification-card <?=!$status['declaration_ok']?'verification-card--locked':($status['email_ok']?'verification-card--done':'')?>">
        <div class="verification-card-head"><span><?=$status['email_ok']?'✓':'2'?></span><div><h2>Confirmação por e-mail</h2><p>O código será enviado para <?=esc($status['email_masked'])?> usando o envio de e-mail já existente no servidor.</p></div></div>
        <?php if(!$status['declaration_ok']):?><div class="verification-locked">Conclua a declaração acima.</div>
        <?php elseif($status['email_ok']):?><div class="verification-ok">E-mail confirmado com sucesso.</div>
        <?php else:?>
            <div class="verification-actions">
                <form method="post"><?=camposCsrf()?><input type="hidden" name="action" value="send_code"><button class="btn btn-secondary" type="submit">ENVIAR CÓDIGO</button></form>
                <form method="post" class="verification-code-form"><?=camposCsrf()?><input type="hidden" name="action" value="verify_code"><input class="form-input code-input" inputmode="numeric" pattern="[0-9]{6}" maxlength="6" name="code" placeholder="000000" required><button class="btn btn-primary" type="submit">CONFIRMAR E-MAIL</button></form>
            </div>
        <?php endif?>
    </section>

    <section class="card verification-card <?=!$status['email_ok']?'verification-card--locked':($status['family_ok']?'verification-card--done':'')?>">
        <div class="verification-card-head"><span><?=$status['family_ok']?'✓':'3'?></span><div><h2>Código familiar da conta do menor</h2><p>O menor entra na área “Meu responsável”, gera um código de 8 dígitos e informa pessoalmente ao responsável.</p></div></div>
        <?php if(!$status['email_ok']):?><div class="verification-locked">Confirme primeiro o e-mail.</div>
        <?php elseif(!$status['family_links']):?><div class="verification-info">Nenhuma conta de menor está vinculada. Aceite primeiro o convite recebido por e-mail.</div>
        <?php else:?>
            <div class="admin-cards-list guardian-family-code-list">
                <?php foreach($status['family_links'] as $link):$confirmed=!empty($link['family_confirmed_at']);?>
                    <article class="admin-report-card">
                        <header><div><span class="admin-pill <?=$confirmed?'status-approved':'status-review'?>"><?=$confirmed?'CONFIRMADO':'PENDENTE'?></span><b><?=esc((string)$link['minor_nome'])?> • <?=esc((string)$link['minor_aura_id'])?></b></div></header>
                        <?php if($confirmed):?><div class="verification-ok">Vínculo familiar confirmado em <?=date('d/m/Y H:i',strtotime((string)$link['family_confirmed_at']))?>.</div>
                        <?php else:?>
                            <form method="post" class="verification-code-form">
                                <?=camposCsrf()?><input type="hidden" name="action" value="verify_family"><input type="hidden" name="link_id" value="<?=(int)$link['id']?>">
                                <input class="form-input code-input" inputmode="numeric" pattern="[0-9]{8}" maxlength="8" name="family_code" placeholder="00000000" required>
                                <button class="btn btn-primary" type="submit">CONFIRMAR CÓDIGO FAMILIAR</button>
                            </form>
                            <div class="verification-info">O código não é enviado por SMS. Ele aparece somente dentro da conta autenticada do menor e expira rapidamente.</div>
                        <?php endif?>
                    </article>
                <?php endforeach?>
            </div>
        <?php endif?>
    </section>

    <section class="card verification-card <?=!($status['declaration_ok']&&$status['email_ok']&&$status['family_ok'])?'verification-card--locked':(($status['review_pending']||$status['approved'])?'verification-card--done':'')?>">
        <div class="verification-card-head"><span><?=($status['review_pending']||$status['approved'])?'✓':'4'?></span><div><h2>Revisão administrativa interna</h2><p>O sistema calcula sinais de risco e uma pessoa autorizada do Aura faz uma conferência presencial ou ao vivo, sem gravação, antes de aprovar ou rejeitar. Não existe aprovação automática.</p></div></div>
        <?php if(!($status['declaration_ok']&&$status['email_ok']&&$status['family_ok'])):?><div class="verification-locked">Conclua as três etapas anteriores.</div>
        <?php elseif($status['approved']):?><div class="verification-ok">Revisão interna aprovada.</div>
        <?php elseif($status['review_pending']):?><div class="verification-info">Solicitação em análise. A equipe poderá solicitar uma conferência ao vivo ou presencial. Nenhum documento deve ser enviado ou anexado, e os recursos do menor continuam bloqueados.</div>
        <?php elseif($status['review_needs_info']):?><div class="verification-info">A administração solicitou nova conferência: <?=esc((string)($review['reviewer_notes']??'consulte o suporte'))?></div><form method="post"><?=camposCsrf()?><input type="hidden" name="action" value="submit_review"><button class="btn btn-primary" type="submit">REENVIAR PARA REVISÃO</button></form>
        <?php else:?>
            <?php if(($status['review_status']??'')==='rejected'):?><div class="flash flash--error"><span>!</span><div><?=esc((string)($review['reviewer_notes']??'A revisão anterior não foi aprovada.'))?></div></div><?php endif?>
            <form method="post"><?=camposCsrf()?><input type="hidden" name="action" value="submit_review"><button class="btn btn-primary" type="submit">ENVIAR PARA REVISÃO INTERNA</button></form>
        <?php endif?>
    </section>

    <section class="card verification-card <?=$status['approved']?'verification-card--done':'verification-card--locked'?>">
        <div class="verification-card-head"><span><?=$status['approved']?'✓':'5'?></span><div><h2>Resultado e limites</h2><p>A verificação do responsável nunca libera tudo automaticamente.</p></div></div>
        <?php if($status['approved']):?>
            <div class="verification-success-final"><span>🛡️</span><div><b>RESPONSÁVEL VERIFICADO INTERNAMENTE</b><p>Próximo passo: consentimentos específicos. Menores de 16 anos permanecem reservados ao modo de evento controlado; adolescentes de 16 e 17 anos usam apenas o modo protegido.</p></div></div>
            <a class="btn btn-primary" href="<?=SITE_URL?>/pages/consentimentos-responsavel.php">REVISAR CONSENTIMENTOS</a>
        <?php else:?><div class="verification-locked">Aguarde a conclusão da revisão administrativa.</div><?php endif?>
    </section>

    <div class="age-protection-list">
        <div>💸 <span><b>Sem SMS ou empresa paga</b><small>O fluxo utiliza apenas recursos internos e o e-mail já configurado no servidor.</small></span></div>
        <div>🧾 <span><b>Trilha de auditoria minimizada</b><small>Declaração, códigos, tentativas, IP, dispositivo, risco, protocolo e decisão ficam registrados. Documento, foto, áudio e vídeo não ficam armazenados.</small></span></div>
        <div>🚫 <span><b>Falha fechada</b><small>Na ausência de qualquer requisito, câmera, Farm, Battle, ranking e transmissão permanecem bloqueados.</small></span></div>
    </div>
</main>
<?php require_once __DIR__.'/../includes/footer.php';?>
