<?php
require_roles('super_admin');
$backupDir=dirname(config('db_path')).'/backups';
if(!is_dir($backupDir)) @mkdir($backupDir,0755,true);
$backupFiles=[];
if(is_dir($backupDir)){
    foreach(glob($backupDir.'/*.sqlite')?:[] as $file){
        if(!is_file($file)) continue;
        $backupFiles[]=['name'=>basename($file),'size'=>filesize($file),'time'=>filemtime($file)];
    }
    usort($backupFiles,static fn($a,$b)=>$b['time']<=>$a['time']);
}
function backup_size_label($bytes){
    $bytes=(float)$bytes;if($bytes>=1048576)return number_format($bytes/1048576,2,',','.').' MB';if($bytes>=1024)return number_format($bytes/1024,1,',','.').' KB';return (int)$bytes.' B';
}
?>
<section class="page-intro"><div><span class="mini-label">SEGURANÇA DOS DADOS</span><h2>Backup e Restauração</h2><p>Baixe uma cópia do SQLite, crie backups no servidor e restaure uma cópia anterior quando precisar.</p></div></section>

<div class="grid-2">
<section class="panel">
  <div class="panel-header"><div><h3>Backup do banco</h3><p>Crie uma cópia antes de atualizações ou alterações importantes.</p></div></div>
  <div class="notice">O backup contém usuários, empresas, pedidos, corridas, configurações e os demais registros do SQLite. As imagens da pasta <strong>uploads/</strong> não fazem parte do arquivo do banco.</div>
  <div class="form-actions" style="margin-top:18px"><a class="btn btn-primary" href="<?= e(url('backup.php?download=1&t='.time())) ?>" download>⬇ Baixar backup agora</a><form method="post" action="actions.php"><?= csrf_field() ?><input type="hidden" name="action" value="create_server_backup"><input type="hidden" name="return_page" value="backups"><button class="btn btn-secondary">🗄️ Salvar cópia no servidor</button></form></div>
</section>

<section class="panel">
  <div class="panel-header"><div><h3>Restaurar arquivo</h3><p>Envie um backup LinkExpress em formato .sqlite ou .db.</p></div></div>
  <div class="alert alert-warning" style="margin-bottom:16px"><strong>Atenção:</strong> a restauração substitui o banco atual. O sistema cria automaticamente uma cópia de segurança do banco atual antes da troca.</div>
  <form method="post" action="actions.php" enctype="multipart/form-data">
    <?= csrf_field() ?><input type="hidden" name="action" value="prepare_database_restore"><input type="hidden" name="return_page" value="backups">
    <div class="form-group"><label>Arquivo de backup</label><input class="input" type="file" name="backup_file" accept=".sqlite,.db,application/vnd.sqlite3,application/octet-stream" required><small>Máximo: 200 MB. O arquivo é validado antes de substituir o banco.</small></div>
    <label class="notice" style="display:flex;gap:10px;align-items:flex-start;margin-top:15px"><input type="checkbox" name="confirm_restore" value="1" required style="margin-top:4px"> <span>Confirmo que desejo substituir o banco atual pelo backup selecionado.</span></label>
    <div class="form-actions"><button class="btn btn-danger">Restaurar backup</button></div>
  </form>
</section>
</div>

<section class="panel">
  <div class="panel-header"><div><h3>Backups salvos no servidor</h3><p>Cópias manuais e cópias automáticas criadas antes de uma restauração.</p></div></div>
  <?php if(!$backupFiles):?><div class="empty-state"><strong>Nenhum backup salvo no servidor</strong>Use “Salvar cópia no servidor” para criar um.</div><?php else:?>
  <div class="table-wrap"><table><thead><tr><th>Arquivo</th><th>Data</th><th>Tamanho</th><th>Ações</th></tr></thead><tbody>
  <?php foreach(array_slice($backupFiles,0,50) as $b):?><tr><td><strong><?= e($b['name']) ?></strong></td><td><?= e(date('d/m/Y H:i:s',$b['time'])) ?></td><td><?= e(backup_size_label($b['size'])) ?></td><td><div class="actions">
    <a class="btn btn-secondary btn-sm" href="<?= e(url('backup_file.php?file='.rawurlencode($b['name']))) ?>" download>Baixar</a>
    <form method="post" action="actions.php" onsubmit="return confirm('Restaurar este backup? O banco atual será salvo automaticamente antes da troca.')"><?= csrf_field() ?><input type="hidden" name="action" value="prepare_database_restore"><input type="hidden" name="return_page" value="backups"><input type="hidden" name="server_backup" value="<?= e($b['name']) ?>"><input type="hidden" name="confirm_restore" value="1"><button class="btn btn-primary btn-sm">Restaurar</button></form>
    <form method="post" action="actions.php"><?= csrf_field() ?><input type="hidden" name="action" value="delete_server_backup"><input type="hidden" name="return_page" value="backups"><input type="hidden" name="file" value="<?= e($b['name']) ?>"><button class="btn btn-danger btn-sm" data-confirm="Apagar este backup do servidor?">Apagar</button></form>
  </div></td></tr><?php endforeach;?>
  </tbody></table></div><?php endif;?>
</section>
