// app/lib/config.ts

import fs from 'node:fs/promises';
import path from 'node:path';

const configPath = path.join(process.cwd(), 'data', 'site-config.json');

export interface SiteConfig {
    showBeachPromo: boolean;
    beachPage: {
        matchStart: string;
        festivalLink: string;
        closeReason: string;
        otherInfo: string;
        prizesText: string;
        rulesText?: string;
        classesIntroText?: string;
        classesOutroText?: string;
        isClosedOverride: boolean;
        classes: Array<{ name: string; color: string; desc: string }>;
    };
}

export async function getConfig() {
    try {
        const data = await fs.readFile(configPath, 'utf-8');
        return JSON.parse(data);
    } catch {
        return {
            showBeachPromo: true,
            beachPage: {
                matchStart: "2026-06-13T10:00",
                isClosedOverride: false,
                closeReason: "Det är hela 26 lag anmälda och vi kan tyvärr inte ta emot fler anmälningar.\r\n\r\nVi är glada över förväntan och bjuder in alla andra till att komma och kolla men vi har tyvärr inte kapaciteten till att ha med fler lag.",
                festivalLink: "https://www.kullahalvon.com/upptacka--uppleva/kultur--noje/evenemang-pa-kullahalvon/mat---sommarfesten.html",
                rulesText: "Matcherna spelas 4v4 med <a target=\"_blank\" href=\"https://www.volleyboll.se/forbundet/valkommen-till-volleyboll/grenar-och-spelformer/volleyboll\">inomhusregler</a>, förutom poängräkningen som följer reglerna för <a target=\"_blank\" href=\"https://www.volleyboll.se/forbundet/valkommen-till-volleyboll/grenar-och-spelformer/beachvolley\">beachvolley</a>. Turneringsformen som kommer spelas är <i>Double Elimination</i> vilket betyder att alla lag spelar minst två matcher under dagen.",
                classesIntroText: "Turneringen kommer att delas upp i flera olika klasser beroende på antal anmälda lag och dess nivå:",
                classesOutroText: "Gör en gissning på er nivå i anmälan – skriv gärna något extra om ni är osäkra. Vi meddelar om det skulle bli ändringar.",
                otherInfo: "Turneringen uppskattas hålla på till ca 17-18 tiden\r\nDet kommer finnas duschmöjligheter i anslutning till stranden.",
                prizesText: "Det kommer att finnas fina priser till alla pallplatser! 🏆"
            }
        };
    };
}


export async function updateConfig(newConfig: SiteConfig) {
    await fs.writeFile(configPath, JSON.stringify(newConfig, null, 2));
}