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

// Get all pages
exports.getAllPages = async (req, res) => {
  try {
    const filters = {};

    if (req.query.type) filters.type = req.query.type;
    if (req.query.status) filters.status = req.query.status;
    if (req.query.category_id) filters.category_id = req.query.category_id;
    if (req.query.featured !== undefined) filters.featured = req.query.featured === 'true';

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

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

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

// Create page
exports.createPage = async (req, res) => {
  try {
    const pageId = await Page.create(req.body);
    res.status(201).json({
      message: 'Sayfa oluşturuldu',
      id: pageId
    });
  } 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 page
exports.updatePage = async (req, res) => {
  try {
    const updated = await Page.update(req.params.id, req.body);
    if (!updated) {
      return res.status(404).json({ message: 'Sayfa bulunamadı' });
    }
    res.json({ message: 'Sayfa 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 page
exports.deletePage = async (req, res) => {
  try {
    const deleted = await Page.delete(req.params.id);
    if (!deleted) {
      return res.status(404).json({ message: 'Sayfa bulunamadı' });
    }
    res.json({ message: 'Sayfa silindi' });
  } catch (error) {
    console.error(error);
    res.status(500).json({ message: 'Sunucu hatası' });
  }
};
