console.log( 'Code is Poetry' );// server.js (Node.js + Express)
const express = require('express');
const jwt = require('jsonwebtoken');
const mongoose = require('mongoose');
const app = express();
// MongoDB models
const Affiliate = require('./models/Affiliate');
const ReferredCustomer = require('./models/ReferredCustomer');
const CustomerTransaction = require('./models/CustomerTransaction');
const AffiliateCommission = require('./models/AffiliateCommission');
// Middleware for authentication
function authenticateToken(req, res, next) {
const token = req.headers['authorization'];
if (!token) return res.sendStatus(403);
jwt.verify(token, process.env.ACCESS_TOKEN_SECRET, (err, user) => {
if (err) return res.sendStatus(403);
req.user = user;
next();
});
}
// API endpoint to get affiliate's performance data
app.get('/api/affiliate/performance', authenticateToken, async (req, res) => {
const affiliateId = req.user.id;
try {
const referredCustomers = await ReferredCustomer.find({ affiliate: affiliateId });
const transactions = await CustomerTransaction.find({ affiliate: affiliateId });
const commissions = await AffiliateCommission.find({ affiliate: affiliateId });
res.json({ referredCustomers, transactions, commissions });
} catch (error) {
res.status(500).json({ message: 'Error retrieving performance data', error });
}
});
mongoose.connect('mongodb://localhost:27017/affiliateDB', { useNewUrlParser: true, useUnifiedTopology: true });
app.listen(3000, () => console.log('Server running on port 3000'));