const { MenuItem } = require('../models');
const fetchMenuData = require('../utils/fetchMenuData');

exports.getMenuData = async (req, res) => {
  try {
    const menuData = await fetchMenuData();
    res.json(menuData);
  } catch (error) {
    console.error('getMenuData:', error);
    res.status(500).json({ error: 'Menü konnte nicht geladen werden (Datenbank nicht erreichbar).' });
  }
};

exports.saveMenuData = async (req, res) => {
  try {
    const menuData = req.body;
    const adjustedMenuData = menuData.map(item => {
      item.parent_id = item.parent_id < 0 ? null : item.parent_id;
      return item;
    })
    .sort((a, b) => (a.parent_id === null ? -1 : 1) - (b.parent_id === null ? -1 : 1));
    await MenuItem.destroy({ where: {} });
    for (const item of adjustedMenuData) {
      await MenuItem.create(item);
    }
    res.status(200).send('Menü-Daten erfolgreich gespeichert');
  } catch (error) {
    console.error('Fehler beim Speichern der Menü-Daten:', error);
    res.status(500).send('Fehler beim Speichern der Menü-Daten');
  }
};
