#!/usr/bin/env bash
set -e

APP="${1:-myapp_v2}"
echo "Installing ADMIN system into: $APP"

mkdir -p "$APP/admin/tools" "$APP/admin" "$APP/cli" "$APP/docs"

########################################
# ADMIN TOOLS
########################################
cat > "$APP/admin/tools/db_inspect.php" << 'EOF'
<?php
require __DIR__ . '/../../backend/lib/Db.php';
$db = Db::conn();
$tables = $db->query("SELECT name FROM sqlite_master WHERE type='table' ORDER BY name")->fetchAll(PDO::FETCH_COLUMN);
foreach ($tables as $t) {
    $count = $db->query("SELECT COUNT(*) FROM \"$t\"")->fetchColumn();
    echo "$t : $count\n";
}
EOF

cat > "$APP/admin/tools/log_viewer.php" << 'EOF'
<?php
$log = __DIR__ . '/../../logs/app.log';
$filter = $argv[1] ?? null;
foreach (file($log, FILE_IGNORE_NEW_LINES) as $line) {
    if ($filter && !str_contains($line, $filter)) continue;
    echo $line . PHP_EOL;
}
EOF

cat > "$APP/admin/tools/config_check.php" << 'EOF'
<?php
$file = __DIR__ . '/../../config/.env';
$required = ['APP_NAME','APP_ENV','DB_DSN','API_KEY','SESSION_SECRET','LOG_LEVEL'];
$env = [];
foreach (file($file, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES) as $line) {
    if (!str_contains($line, '=')) continue;
    [$k,$v] = explode('=', $line, 2);
    $env[trim($k)] = trim($v);
}
foreach ($required as $key) {
    echo "$key : " . (isset($env[$key]) ? "OK" : "MISSING") . PHP_EOL;
}
EOF

########################################
# ADMIN DASHBOARD
########################################
cat > "$APP/admin/dashboard.php" << 'EOF'
<?php
require __DIR__ . '/../backend/lib/Db.php';
$db = Db::conn();
$tables = $db->query("SELECT name FROM sqlite_master WHERE type='table' ORDER BY name")->fetchAll(PDO::FETCH_COLUMN);
?>
<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>Admin Dashboard</title>
  <style>
    body { font-family: system-ui, sans-serif; padding: 2rem; }
    table { border-collapse: collapse; width: 400px; }
    th, td { border: 1px solid #ccc; padding: 0.5rem; }
  </style>
</head>
<body>
  <h1>Admin Dashboard</h1>
  <table>
    <tr><th>Table</th><th>Rows</th></tr>
    <?php foreach ($tables as $t): ?>
      <tr>
        <td><?= htmlspecialchars($t) ?></td>
        <td><?= (int)$db->query("SELECT COUNT(*) FROM \"$t\"")->fetchColumn() ?></td>
      </tr>
    <?php endforeach; ?>
  </table>
</body>
</html>
EOF

########################################
# ADMIN CLI
########################################
cat > "$APP/cli/admin.sh" << 'EOF'
#!/usr/bin/env bash
case "$1" in
  db) php admin/tools/db_inspect.php ;;
  logs) php admin/tools/log_viewer.php "${2:-}" ;;
  config) php admin/tools/config_check.php ;;
  dashboard) php -S localhost:9000 -t admin ;;
  *)
    echo "Admin commands:"
    echo "  admin.sh db"
    echo "  admin.sh logs [filter]"
    echo "  admin.sh config"
    echo "  admin.sh dashboard"
    ;;
esac
EOF
chmod +x "$APP/cli/admin.sh"

########################################
# TEST SUITE
########################################
cat > "$APP/cli/test.sh" << 'EOF'
#!/usr/bin/env bash
set -e
php -l backend/api/index.php
php -l admin/tools/db_inspect.php
php -l admin/tools/log_viewer.php
php -l admin/tools/config_check.php
bash -n cli/app.sh
bash -n cli/worker.sh
bash -n cli/admin.sh
#sqlite3 db/app.db "SELECT name FROM sqlite_master WHERE type='table';"
echo "All tests passed."
EOF
chmod +x "$APP/cli/test.sh"

########################################
# DOCS
########################################
cat > "$APP/docs/ADMIN.md" << 'EOF'
# Admin System (Version 2)
Full admin toolkit, dashboard, CLI, tests, diagnostics.
EOF

echo "ADMIN system installed into: $APP"

