<?php
require_once __DIR__ . '/../lib/auth.php';
require_once __DIR__ . '/../lib/upload.php';
require_admin();

if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
    header('Location: ../pages/admin.php?tab=downloads');
    exit;
}

$action = $_POST['_action'] ?? '';

/* ── Add ──────────────────────────────────────────────────────────────── */
if ($action === 'add') {
    $title       = trim($_POST['title']       ?? '');
    $description = trim($_POST['description'] ?? '');

    if ($title === '') {
        header('Location: ../pages/admin.php?tab=downloads&err=notitle');
        exit;
    }

    $up = handle_upload($_FILES['file'] ?? [], [
        'allowed'   => UPLOAD_TYPES_OFFICE,
        'dir'       => dirname(__DIR__) . '/downloads/',
        'naming'    => 'hash',
        'max_bytes' => 20 * 1024 * 1024,
        'messages'  => [
            'missing' => 'nofile', 'upload' => 'nofile',
            'ext'     => 'badext', 'mime'   => 'badmime',
            'size'    => 'toobig', 'move'   => 'upload',
        ],
    ]);
    if (!$up['ok']) {
        header('Location: ../pages/admin.php?tab=downloads&err=' . $up['error']);
        exit;
    }

    $safe_name     = $up['filename'];
    $original_name = $up['original_name'];

    $sort_order = (int)db()->query('SELECT COALESCE(MAX(sort_order), 0) + 10 FROM downloads')->fetchColumn();
    $now        = date('c');

    $stmt = db()->prepare(
        'INSERT INTO downloads (title, description, filename, original_name, sort_order, created_at, updated_at)
         VALUES (?, ?, ?, ?, ?, ?, ?)'
    );
    $stmt->execute([$title, $description, $safe_name, $original_name, $sort_order, $now, $now]);

    header('Location: ../pages/admin.php?tab=downloads&ok=added');
    exit;
}

/* ── Delete ───────────────────────────────────────────────────────────── */
if ($action === 'delete') {
    $id = (int)($_POST['download_id'] ?? 0);
    if ($id <= 0) {
        header('Location: ../pages/admin.php?tab=downloads&err=invalid');
        exit;
    }

    $stmt = db()->prepare('SELECT filename FROM downloads WHERE id = ?');
    $stmt->execute([$id]);
    $row = $stmt->fetch();

    if ($row) {
        db()->prepare('DELETE FROM downloads WHERE id = ?')->execute([$id]);
        @unlink(dirname(__DIR__) . '/downloads/' . $row['filename']);
    }

    header('Location: ../pages/admin.php?tab=downloads&ok=deleted');
    exit;
}

header('Location: ../pages/admin.php?tab=downloads');
exit;
