const MenuItem = require('../models/MenuItem');

// Get all menu items
exports.getAllMenuItems = async (req, res) => {
  try {
    const filters = {
      location: req.query.location,
      status: req.query.status,
      parent_id: req.query.parent_id === 'null' ? null : req.query.parent_id
    };

    const menuItems = await MenuItem.getAll(filters);
    res.json(menuItems);
  } catch (error) {
    console.error(error);
    res.status(500).json({ message: 'Sunucu hatası' });
  }
};

// Get menu tree for location
exports.getMenuTree = async (req, res) => {
  try {
    const { location } = req.params;
    const menuTree = await MenuItem.getMenuTree(location);
    res.json(menuTree);
  } catch (error) {
    console.error(error);
    res.status(500).json({ message: 'Sunucu hatası' });
  }
};

// Get menu item by ID
exports.getMenuItemById = async (req, res) => {
  try {
    const menuItem = await MenuItem.getById(req.params.id);
    if (!menuItem) {
      return res.status(404).json({ message: 'Menü öğesi bulunamadı' });
    }
    res.json(menuItem);
  } catch (error) {
    console.error(error);
    res.status(500).json({ message: 'Sunucu hatası' });
  }
};

// Create menu item
exports.createMenuItem = async (req, res) => {
  try {
    const menuItemId = await MenuItem.create(req.body);
    res.status(201).json({
      message: 'Menü öğesi oluşturuldu',
      id: menuItemId
    });
  } catch (error) {
    console.error(error);
    res.status(500).json({ message: 'Sunucu hatası' });
  }
};

// Update menu item
exports.updateMenuItem = async (req, res) => {
  try {
    const updated = await MenuItem.update(req.params.id, req.body);
    if (!updated) {
      return res.status(404).json({ message: 'Menü öğesi bulunamadı' });
    }
    res.json({ message: 'Menü öğesi güncellendi' });
  } catch (error) {
    console.error(error);
    res.status(500).json({ message: 'Sunucu hatası' });
  }
};

// Delete menu item
exports.deleteMenuItem = async (req, res) => {
  try {
    const deleted = await MenuItem.delete(req.params.id);
    if (!deleted) {
      return res.status(404).json({ message: 'Menü öğesi bulunamadı' });
    }
    res.json({ message: 'Menü öğesi silindi' });
  } catch (error) {
    console.error(error);
    res.status(500).json({ message: 'Sunucu hatası' });
  }
};
