import { Router, Response, Request } from 'express';
import { EventsPage } from '../models/index.js';
import { authenticate, requireRole, AuthRequest } from '../middleware/auth.js';

const router = Router();

const defaultData = {
  heroTitle: { en: 'Events', zh: '活動' },
  heroSubtitle: {
    en: 'Stay updated on upcoming golf events, competitions, and social gatherings across Hong Kong.',
    zh: '了解香港各地即將舉行的高爾夫活動、比賽及社交聚會。',
  },
  events: [],
};

router.get('/', async (req: Request, res: Response): Promise<void> => {
  try {
    let page = await EventsPage.findOne();
    if (!page) {
      page = new EventsPage(defaultData);
      await page.save();
    }
    res.json(page);
  } catch (error) {
    res.status(500).json({ error: 'Server error' });
  }
});

router.put(
  '/',
  authenticate,
  requireRole('admin'),
  async (req: AuthRequest, res: Response): Promise<void> => {
    try {
      let page = await EventsPage.findOne();
      if (!page) {
        page = new EventsPage(req.body);
      } else {
        Object.assign(page, req.body);
      }
      await page.save();
      res.json(page);
    } catch (error) {
      res.status(500).json({ error: 'Server error' });
    }
  }
);

export default router;
