const express = require("express"); const fs = require("fs"); const path = require("path"); const cors = require("cors"); const app = express(); const PORT = 4000; // Ścieżki do plików JSON const UCZNIOWIE_FILE = path.join(__dirname, "uczniowie.json"); const KRYTERIA_FILE = path.join(__dirname, "kryteria.json"); const DANE_FILE = path.join(__dirname, "dane.json"); const OCENY_FILE = path.join(__dirname, "oceny.json"); // Nowy plik // Middleware do obsługi JSON i CORS app.use(express.json()); app.use(cors()); // Endpoint do pobierania listy uczniów app.get("/uczniowie", (req, res) => { fs.readFile(UCZNIOWIE_FILE, "utf8", (err, data) => { if (err) { console.error("Błąd odczytu uczniów:", err); return res.status(500).send("Błąd odczytu uczniów."); } const uczniowieData = JSON.parse(data); res.json({ uczniowie: uczniowieData.uczniowie }); }); }); // Endpoint do pobierania listy kryteriów app.get("/kryteria", (req, res) => { fs.readFile(KRYTERIA_FILE, "utf8", (err, data) => { if (err) { console.error("Błąd odczytu kryteriów:", err); return res.status(500).send("Błąd odczytu kryteriów."); } res.json(JSON.parse(data)); }); }); // Endpoint do pobierania danych uczniów app.get("/dane", (req, res) => { fs.readFile(DANE_FILE, "utf8", (err, data) => { if (err) { console.error("Błąd odczytu danych:", err); const defaultData = {}; fs.writeFile(DANE_FILE, JSON.stringify(defaultData, null, 2), err => { if (err) { console.error("Błąd tworzenia pliku danych:", err); return res.status(500).send("Błąd tworzenia pliku danych."); } res.json(defaultData); }); } else { res.json(JSON.parse(data)); } }); }); // Endpoint do zapisywania danych uczniów app.post("/dane", (req, res) => { const newData = req.body; fs.writeFile(DANE_FILE, JSON.stringify(newData, null, 2), err => { if (err) { console.error("Błąd zapisywania danych:", err); return res.status(500).send("Błąd zapisywania danych."); } res.send("Dane zapisane pomyślnie."); }); }); // Endpoint do pobierania progów ocen app.get("/oceny", (req, res) => { fs.readFile(OCENY_FILE, "utf8", (err, data) => { if (err) { console.error("Błąd odczytu progów ocen:", err); return res.status(500).send("Błąd odczytu progów ocen."); } res.json(JSON.parse(data)); }); }); // Endpoint do dodawania nowego kryterium app.post("/kryteria", (req, res) => { const { nazwa, punkty } = req.body; if (!nazwa || !punkty) { return res.status(400).send("Brak wymaganych danych."); } fs.readFile(KRYTERIA_FILE, "utf8", (err, data) => { if (err) { console.error("Błąd odczytu kryteriów:", err); return res.status(500).send("Błąd odczytu kryteriów."); } const kryteria = JSON.parse(data); if (kryteria.some(k => k.nazwa === nazwa)) { return res.status(400).send("Kryterium już istnieje."); } kryteria.push({ nazwa, punkty }); fs.writeFile(KRYTERIA_FILE, JSON.stringify(kryteria, null, 2), err => { if (err) { console.error("Błąd zapisywania kryteriów:", err); return res.status(500).send("Błąd zapisywania kryteriów."); } res.send("Kryterium dodane pomyślnie."); }); }); }); // Endpoint do edycji istniejącego kryterium app.put("/kryteria/:nazwa", (req, res) => { const { nazwa } = req.params; const { nowaNazwa, punkty } = req.body; if (!nowaNazwa || !punkty) { return res.status(400).send("Brak wymaganych danych."); } fs.readFile(KRYTERIA_FILE, "utf8", (err, data) => { if (err) { console.error("Błąd odczytu kryteriów:", err); return res.status(500).send("Błąd odczytu kryteriów."); } const kryteria = JSON.parse(data); const index = kryteria.findIndex(k => k.nazwa === nazwa); if (index === -1) { return res.status(404).send("Kryterium nie istnieje."); } kryteria[index] = { nazwa: nowaNazwa, punkty }; fs.writeFile(KRYTERIA_FILE, JSON.stringify(kryteria, null, 2), err => { if (err) { console.error("Błąd zapisywania kryteriów:", err); return res.status(500).send("Błąd zapisywania kryteriów."); } res.send("Kryterium zaktualizowane pomyślnie."); }); }); }); // Endpoint do usuwania kryterium app.delete("/kryteria/:nazwa", (req, res) => { const { nazwa } = req.params; fs.readFile(KRYTERIA_FILE, "utf8", (err, data) => { if (err) { console.error("Błąd odczytu kryteriów:", err); return res.status(500).send("Błąd odczytu kryteriów."); } const kryteria = JSON.parse(data); const index = kryteria.findIndex(k => k.nazwa === nazwa); if (index === -1) { return res.status(404).send("Kryterium nie istnieje."); } kryteria.splice(index, 1); fs.writeFile(KRYTERIA_FILE, JSON.stringify(kryteria, null, 2), err => { if (err) { console.error("Błąd zapisywania kryteriów:", err); return res.status(500).send("Błąd zapisywania kryteriów."); } res.send("Kryterium usunięte pomyślnie."); }); }); }); // Uruchomienie serwera app.listen(PORT, () => { console.log(`Serwer API działa na http://localhost:${PORT}`); });