<?php
require_once __DIR__ . '/../bootstrap.php';
ym_require('src/lib/auth.php');
ym_require('src/lib/helpers.php');
ym_require('src/lib/i18n.php');
ym_require('src/lib/topbar.php');
ym_require('src/services/VesselAdminService.php');
ym_require('src/services/PermissionService.php');
ym_require('src/services/ModuleService.php');

require_login();

$userId = current_user_id();
$vesselId = (int)($_GET['vessel_id'] ?? 0);

$vessel = VesselAdminService::getVesselByIdForUser($userId, $vesselId);

if (!$vessel) {
    http_response_code(404);
    echo t('modules.vessel_not_found', 'Schiff nicht gefunden.');
    exit;
}

if (!PermissionService::userMayManageVessel($userId, $vesselId)) {
    http_response_code(403);
    echo t('common.access_denied', 'Zugriff verweigert.');
    exit;
}

$message = null;
$error = null;

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    try {
        $selectedModuleIds = $_POST['module_ids'] ?? [];
        if (!is_array($selectedModuleIds)) {
            $selectedModuleIds = [];
        }

        ModuleService::replaceModulesForVessel($vesselId, $selectedModuleIds);

        $message = t('common.saved', 'Änderungen gespeichert.');
    } catch (Throwable $e) {
        $error = $e->getMessage();
    }
}

$moduleMatrix = ModuleService::getModuleMatrixForVessel($vesselId);
?>
<!DOCTYPE html>
<html lang="<?= e(current_user_language()) ?>">
<head>
    <meta charset="utf-8">
    <title><?= t('modules.vessel_title', 'Module verwalten') ?> - Yachtmemory</title>
    <?php render_topbar_styles(); ?>
</head>
<body>
<?php
render_topbar(
    leftLinks: [
        ['href' => '/admin_vessels.php', 'label' => t('nav.vessels', 'Schiffe')],
        ['href' => '/admin_vessel_edit.php?id=' . (int)$vesselId, 'label' => t('common.edit', 'Bearbeiten')],
    ],
    activeVesselName: $vessel['vessel_name'] ?? null
);
?>

<main style="max-width:1000px; margin:30px auto;">

<h1><?= e($vessel['vessel_name']) ?> – <?= t('modules.vessel_title', 'Module') ?></h1>

<?php if ($message): ?><p class="success"><?= e($message) ?></p><?php endif; ?>
<?php if ($error): ?><p class="error"><?= e($error) ?></p><?php endif; ?>

<form method="post">

<?php
$currentCategory = null;
foreach ($moduleMatrix as $module):
    $category = (string)$module['category'];

    if ($category !== $currentCategory):
        if ($currentCategory !== null) echo '</div>';
        $currentCategory = $category;
?>
<div style="margin-bottom:18px;">
<h3><?= e(ModuleService::getCategoryLabel($category)) ?></h3>
<?php endif; ?>

<label style="display:block; margin-bottom:8px;">
<input type="checkbox"
       name="module_ids[]"
       value="<?= (int)$module['id'] ?>"
       <?= (int)$module['is_enabled'] ? 'checked' : '' ?>>
<?= e($module['module_name']) ?>
</label>

<?php endforeach; ?>

<?php if (!empty($moduleMatrix)) echo '</div>'; ?>

<button type="submit"><?= t('common.save', 'Speichern') ?></button>

</form>
</main>
</body>
</html>
