ajinkya-mhetre-mern
Version:
A MERN starter with frontend and backend folders
98 lines (86 loc) • 2.55 kB
JavaScript
// ===== src/controllers/adminController.js =====
const User = require('../models/User');
const Product = require('../models/Product');
const Order = require('../models/Order');
const getPendingFarmers = async (req, res) => {
try {
const farmers = await User.find({
role: 'farmer',
isVerified: false
}).select('-password');
res.json({
success: true,
farmers
});
} catch (error) {
res.status(500).json({ message: error.message });
}
};
const verifyFarmer = async (req, res) => {
try {
const { farmerId } = req.params;
const { action } = req.body; // 'approve' or 'reject'
const farmer = await User.findById(farmerId);
if (!farmer || farmer.role !== 'farmer') {
return res.status(404).json({ message: 'Farmer not found' });
}
if (action === 'approve') {
farmer.isVerified = true;
await farmer.save();
res.json({
success: true,
message: 'Farmer verified successfully'
});
} else if (action === 'reject') {
await User.findByIdAndDelete(farmerId);
res.json({
success: true,
message: 'Farmer application rejected'
});
} else {
res.status(400).json({ message: 'Invalid action' });
}
} catch (error) {
res.status(500).json({ message: error.message });
}
};
const getDashboardStats = async (req, res) => {
try {
const totalUsers = await User.countDocuments();
const totalFarmers = await User.countDocuments({ role: 'farmer', isVerified: true });
const totalCustomers = await User.countDocuments({ role: 'customer' });
const pendingFarmers = await User.countDocuments({ role: 'farmer', isVerified: false });
const totalProducts = await Product.countDocuments();
const totalOrders = await Order.countDocuments();
res.json({
success: true,
stats: {
totalUsers,
totalFarmers,
totalCustomers,
pendingFarmers,
totalProducts,
totalOrders
}
});
} catch (error) {
res.status(500).json({ message: error.message });
}
};
const getAllUsers = async (req, res) => {
try {
const users = await User.find().select('-password');
res.json({
success: true,
users
});
} catch (error) {
res.status(500).json({ message: error.message });
}
};
module.exports = {
getPendingFarmers,
verifyFarmer,
getDashboardStats,
getAllUsers
};