const express = require("express"); const Reward = require("../models/Reward"); const User = require("../models/User"); const auth = require("../middleware/auth"); const router = express.Router(); // Get all rewards router.get("/", async (req, res) => { try { const rewards = await Reward.find(); res.json(rewards); } catch (err) { console.error(err.message); res.status(500).send("Server error"); } }); // Create a reward router.post("/", auth, async (req, res) => { const { name, description, cost, isPremium } = req.body; try { const newReward = new Reward({ name, description, cost, isPremium, }); const reward = await newReward.save(); res.json(reward); } catch (err) { console.error(err.message); res.status(500).send("Server error"); } }); // Redeem a reward router.post("/redeem/:id", auth, async (req, res) => { try { const reward = await Reward.findById(req.params.id); if (!reward) { return res.status(404).json({ msg: "Reward not found" }); } const user = await User.findById(req.user.id); if (!user) { return res.status(404).json({ msg: "User not found" }); } if (user.points < reward.cost) { return res.status(400).json({ msg: "Not enough points" }); } if (reward.isPremium && !user.isPremium) { return res.status(403).json({ msg: "Premium reward not available" }); } user.points -= reward.cost; await user.save(); res.json({ msg: "Reward redeemed successfully" }); } catch (err) { console.error(err.message); res.status(500).send("Server error"); } }); module.exports = router;