const express = require('express');
const path = require('path');
const fs = require('fs');
const yaml = require('js-yaml');

const app = express();

// Activer le middleware JSON pour parser le corps des requêtes
app.use(express.json());
app.use(express.urlencoded({ extended: true })); // Si vous utilisez des requêtes POST de type formulaire

// Charger config.yaml
const config = yaml.load(fs.readFileSync('config.yaml', 'utf8'));

// Route pour récupérer les données utilisateur
app.get('/user/:username', (req, res) => {
    const username = req.params.username;
    const userFilePath = path.join(__dirname, `data/${username}.yaml`);

    try {
        const userData = yaml.load(fs.readFileSync(userFilePath, 'utf8'));
        res.json(userData);
    } catch (error) {
        res.status(404).json({ error: "Utilisateur non trouvé" });
    }
});

// Route pour mettre à jour la position dans baptiste.yaml
app.post('/update-position', (req, res) => {
    const { longitude, latitude, last_update } = req.body; // Problème résolu ici
    const userFilePath = path.join(__dirname, config.userFile);

    try {
        console.log("Tentative de mise à jour des coordonnées :", longitude, latitude, last_update);

        const userData = yaml.load(fs.readFileSync(userFilePath, 'utf8'));
        userData.position_actuelle.longitude = longitude;
        userData.position_actuelle.latitude = latitude;
        userData.position_actuelle.last_update = last_update;

        fs.writeFileSync(userFilePath, yaml.dump(userData), 'utf8');
        console.log("Mise à jour réussie de baptiste.yaml");

        res.json({ success: true, message: "Position mise à jour", data: userData });
    } catch (error) {
        console.error("Erreur lors de la mise à jour :", error.message);
        res.status(500).json({ error: "Impossible de mettre à jour la position" });
    }
});

// Servir les fichiers statiques
app.use('/static', express.static(path.join(__dirname, 'static')));

// Page principale
app.get('/', (req, res) => res.sendFile(path.join(__dirname, 'index.html')));

app.listen(config.port, () => {
    console.log(`Serveur démarré sur http://localhost:${config.port}`);
});

// Route pour servir la page de supervision
app.get('/supervise', (req, res) => {
    res.sendFile(path.join(__dirname, 'supervise.html'));
});
// Route pour récupérer les données de Baptiste
app.get('/data/baptiste.yaml', (req, res) => {
    const userFilePath = path.join(__dirname, 'data/baptiste.yaml');
    const configFilePath = path.join(__dirname, 'config.yaml');

    try {
        const userData = yaml.load(fs.readFileSync(userFilePath, 'utf8'));
        const config = yaml.load(fs.readFileSync(configFilePath, 'utf8'));
// Inclure le décalage des pins dans la réponse
userData.pin_offset = config.pin_offset;

        res.json(userData);
    } catch (error) {
        console.error("Erreur lors de la récupération des données :", error.message);
        res.status(500).json({ error: "Impossible de récupérer les données" });
    }
});
