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

const router = Router();

const defaultData = {
  heroTitle: { en: 'Member Rewards', zh: '會員獎勵' },
  heroSubtitle: {
    en: 'As a valued Golf ID Member, you can enjoy exclusive merchant offers and earn points rewards on everyday spending.',
    zh: '作為尊貴的高球証會員，您可享受獨家商戶優惠，並在日常消費中賺取積分獎賞。',
  },
  highlights: [],
  featureSections: [],
  ctaTitle: { en: 'Enjoy Golf ID Now!', zh: '立即尊享高球証！' },
  ctaHotline: '(852) 3582-3088',
  ctaButtonText: { en: 'Enjoy Golf ID', zh: '尊享高球証' },
  ctaButtonLink: 'https://golfcard.com.hk/register',
};

router.get('/', async (req: Request, res: Response): Promise<void> => {
  try {
    let doc = await MemberRewards.findOne();

    if (!doc) {
      doc = new MemberRewards(defaultData);
      await doc.save();
    }

    res.json(doc);
  } catch (error) {
    res.status(500).json({ error: 'Server error' });
  }
});

router.put(
  '/',
  authenticate,
  requireRole('admin'),
  async (req: AuthRequest, res: Response): Promise<void> => {
    try {
      let doc = await MemberRewards.findOne();

      if (!doc) {
        doc = new MemberRewards(req.body);
      } else {
        Object.assign(doc, req.body);
      }

      await doc.save();
      res.json(doc);
    } catch (error) {
      res.status(500).json({ error: 'Server error' });
    }
  }
);

export default router;
