<?php
$roulette=new \Plugin\NexoraRoulette\NexoraRoulette();

if(isset($_POST['save_public_identity'])) {
    try {
        $roulette->adminSavePublicNickname(
            (string)($_POST['account_username']??''),
            (string)($_POST['display_name']??''),
            !empty($_POST['locked']),
            (string)($_POST['moderation_note']??'')
        );
        message('success','Identidad pública actualizada.');
    } catch(Throwable $e) { message('error',$e->getMessage()); }
}

if(isset($_POST['reset_public_identity'])) {
    try {
        $account=(string)$_POST['reset_public_identity'];
        $roulette->adminResetPublicNickname($account);
        message('success','Apodo restablecido. En Actividad reciente esta cuenta aparecerá como Jugador Nexora hasta elegir uno nuevo.');
    } catch(Throwable $e) { message('error',$e->getMessage()); }
}

$q=trim((string)($_GET['q']??''));
$profiles=$roulette->adminNetworkProfiles(500,$q);
$editAccount=trim((string)($_GET['edit']??''));
$edit=$editAccount!==''?$roulette->networkProfile($editAccount):null;
$defaults=array('account_username'=>$editAccount,'display_name'=>'','locked'=>0,'moderation_note'=>'','updated_at'=>'');
$f=is_array($edit)?array_merge($defaults,$edit):$defaults;
?>
<style>
.nxr-id-grid{display:grid;grid-template-columns:minmax(0,420px) minmax(0,1fr);gap:18px;align-items:start}.nxr-id-help{margin-bottom:16px}.nxr-id-preview{display:flex;align-items:center;gap:12px;padding:14px;border-radius:7px;border:1px solid #e5e8ec;background:#fafbfc}.nxr-id-avatar{width:48px;height:48px;border-radius:12px;display:grid;place-items:center;background:#111722;color:#d7a94a;font-size:18px;font-weight:800}.nxr-id-preview strong,.nxr-id-preview small{display:block}.nxr-id-preview small{margin-top:3px;color:#777}.nxr-id-state{display:inline-block;padding:3px 7px;border-radius:9px;font-size:10px;font-weight:700}.nxr-id-state.ok{background:#e8f6ee;color:#237346}.nxr-id-state.locked{background:#fff1d8;color:#99610b}.nxr-id-table td{vertical-align:middle!important}.nxr-id-name{font-size:14px;font-weight:700}.nxr-id-account{color:#777;font-size:11px}@media(max-width:1050px){.nxr-id-grid{grid-template-columns:1fr}}
</style>
<h1 class="page-header">Identidad de Red <small>Apodos públicos</small></h1>
<div class="alert alert-info nxr-id-help"><strong>Privacidad pública:</strong> Actividad reciente ya no muestra el ID de cuenta, ni siquiera parcialmente. El jugador puede elegir un apodo; aquí el staff conserva la relación con la cuenta real para moderación. Un apodo bloqueado no puede volver a editarse desde la cuenta.</div>

<div class="nxr-id-grid">
<div class="panel panel-warning">
<div class="panel-heading"><strong><?php echo $editAccount!==''?'Moderar identidad':'Crear / asignar identidad'; ?></strong></div>
<div class="panel-body">
<form method="post">
<div class="form-group"><label>Cuenta real <small class="text-muted">Sólo visible para staff</small></label><input type="text" class="form-control" name="account_username" maxlength="50" required value="<?php echo htmlspecialchars((string)$f['account_username'],ENT_QUOTES,'UTF-8'); ?>" <?php echo $editAccount!==''?'readonly':''; ?>></div>
<div class="form-group"><label>Apodo público</label><input type="text" class="form-control" name="display_name" minlength="3" maxlength="24" required value="<?php echo htmlspecialchars((string)$f['display_name'],ENT_QUOTES,'UTF-8'); ?>" placeholder="Ej: Asterion"><p class="help-block">3–24 caracteres. Letras, números, espacios, guion y guion bajo.</p></div>
<div class="checkbox"><label><input type="checkbox" name="locked" value="1" <?php echo !empty($f['locked'])?'checked':''; ?>> Bloquear cambios desde la cuenta</label></div>
<div class="form-group"><label>Nota de moderación <small class="text-muted">Interna</small></label><textarea class="form-control" name="moderation_note" rows="3" maxlength="250" placeholder="Motivo del cambio o referencia interna"><?php echo htmlspecialchars((string)$f['moderation_note'],ENT_QUOTES,'UTF-8'); ?></textarea></div>
<div class="nxr-id-preview"><div class="nxr-id-avatar"><?php $preview=trim((string)$f['display_name']); echo htmlspecialchars($preview!==''?mb_strtoupper(mb_substr($preview,0,1,'UTF-8'),'UTF-8'):'N',ENT_QUOTES,'UTF-8'); ?></div><div><strong><?php echo htmlspecialchars($preview!==''?$preview:'Jugador Nexora',ENT_QUOTES,'UTF-8'); ?></strong><small>Así aparecerá en Actividad reciente.</small></div></div>
<div style="margin-top:14px"><button type="submit" class="btn btn-success" name="save_public_identity" value="1"><i class="fa fa-save"></i> Guardar identidad</button><?php if($editAccount!==''){ ?> <a class="btn btn-default" href="<?php echo admincp_base('nexoraroulette&page=identity'); ?>">Cancelar</a><?php } ?></div>
</form>
</div>
</div>

<div class="panel panel-default">
<div class="panel-heading"><strong>Apodos configurados</strong></div>
<div class="panel-body">
<form method="get" class="form-inline" style="margin-bottom:12px">
<input type="hidden" name="module" value="nexoraroulette">
<input type="hidden" name="page" value="identity">
<div class="form-group"><input type="text" class="form-control" name="q" value="<?php echo htmlspecialchars($q,ENT_QUOTES,'UTF-8'); ?>" placeholder="Buscar cuenta o apodo"></div>
<button type="submit" class="btn btn-default"><i class="fa fa-search"></i> Buscar</button><?php if($q!==''){ ?> <a class="btn btn-link" href="<?php echo admincp_base('nexoraroulette&page=identity'); ?>">Limpiar</a><?php } ?>
</form>
<div class="table-responsive"><table class="table table-striped table-hover nxr-id-table" style="margin:0"><thead><tr><th>Cuenta</th><th>Apodo público</th><th>Estado</th><th>Nota</th><th>Actualizado</th><th></th></tr></thead><tbody>
<?php if(!$profiles){ ?><tr><td colspan="6" class="text-muted">No hay identidades públicas configuradas para este filtro.</td></tr><?php } ?>
<?php foreach($profiles as $row){ ?>
<tr>
<td><span class="nxr-id-account"><?php echo htmlspecialchars((string)$row['account_username'],ENT_QUOTES,'UTF-8'); ?></span><?php if(!empty($row['user_id'])){ ?><br><small>UID <?php echo (int)$row['user_id']; ?></small><?php } ?></td>
<td><span class="nxr-id-name"><?php echo htmlspecialchars((string)$row['display_name'],ENT_QUOTES,'UTF-8'); ?></span></td>
<td><?php echo !empty($row['locked'])?'<span class="nxr-id-state locked">Bloqueado por staff</span>':'<span class="nxr-id-state ok">Editable por jugador</span>'; ?></td>
<td><small><?php echo trim((string)$row['moderation_note'])!==''?htmlspecialchars((string)$row['moderation_note'],ENT_QUOTES,'UTF-8'):'—'; ?></small></td>
<td><small><?php echo htmlspecialchars((string)$row['updated_at'],ENT_QUOTES,'UTF-8'); ?></small></td>
<td style="white-space:nowrap"><a class="btn btn-xs btn-primary" href="<?php echo admincp_base('nexoraroulette&page=identity&edit='.rawurlencode((string)$row['account_username'])); ?>">Editar</a> <form method="post" style="display:inline"><button type="submit" class="btn btn-xs btn-danger" name="reset_public_identity" value="<?php echo htmlspecialchars((string)$row['account_username'],ENT_QUOTES,'UTF-8'); ?>" onclick="return confirm('¿Restablecer el apodo público de esta cuenta?');">Restablecer</button></form></td>
</tr>
<?php } ?>
</tbody></table></div>
</div>
</div>
</div>

<div class="alert alert-warning" style="margin-top:18px"><strong>Criterio de moderación:</strong> si sólo necesitas corregir un apodo, edítalo y activa el bloqueo. Usa Restablecer cuando quieras retirar completamente la identidad pública; la cuenta volverá a mostrarse como <strong>Jugador Nexora</strong> hasta elegir un nombre válido.</div>
