UNPKG

ajinkya-mhetre-mern

Version:

A MERN starter with frontend and backend folders

98 lines (86 loc) 2.55 kB
// ===== 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 };