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

// Get all page categories
exports.getAllCategories = async (req, res) => {
  try {
    const filters = { status: req.query.status };
    const categories = await PageCategory.getAll(filters);
    res.json(categories);
  } catch (error) {
    console.error(error);
    res.status(500).json({ message: 'Sunucu hatası' });
  }
};

// Get category by ID
exports.getCategoryById = async (req, res) => {
  try {
    const category = await PageCategory.getById(req.params.id);
    if (!category) {
      return res.status(404).json({ message: 'Kategori bulunamadı' });
    }
    res.json(category);
  } catch (error) {
    console.error(error);
    res.status(500).json({ message: 'Sunucu hatası' });
  }
};

// Get category by slug
exports.getCategoryBySlug = async (req, res) => {
  try {
    const category = await PageCategory.getBySlug(req.params.slug);
    if (!category) {
      return res.status(404).json({ message: 'Kategori bulunamadı' });
    }
    res.json(category);
  } catch (error) {
    console.error(error);
    res.status(500).json({ message: 'Sunucu hatası' });
  }
};

// Create category
exports.createCategory = async (req, res) => {
  try {
    const categoryId = await PageCategory.create(req.body);
    res.status(201).json({
      message: 'Kategori oluşturuldu',
      id: categoryId
    });
  } catch (error) {
    console.error(error);
    if (error.message.includes('slug')) {
      return res.status(400).json({ message: error.message });
    }
    res.status(500).json({ message: 'Sunucu hatası' });
  }
};

// Update category
exports.updateCategory = async (req, res) => {
  try {
    const updated = await PageCategory.update(req.params.id, req.body);
    if (!updated) {
      return res.status(404).json({ message: 'Kategori bulunamadı' });
    }
    res.json({ message: 'Kategori güncellendi' });
  } catch (error) {
    console.error(error);
    if (error.message.includes('slug')) {
      return res.status(400).json({ message: error.message });
    }
    res.status(500).json({ message: 'Sunucu hatası' });
  }
};

// Delete category
exports.deleteCategory = async (req, res) => {
  try {
    const deleted = await PageCategory.delete(req.params.id);
    if (!deleted) {
      return res.status(404).json({ message: 'Kategori bulunamadı' });
    }
    res.json({ message: 'Kategori silindi' });
  } catch (error) {
    console.error(error);
    res.status(500).json({ message: 'Sunucu hatası' });
  }
};
