const { createPool, listPools, updatePoolState } = require('../../services/pool/PoolService'); module.exports = { async create(req, res) { try { const { pool_name, description, price, pool_type, is_active } = req.body || {}; const actorUserId = req.user && req.user.userId; if (!pool_name) return res.status(400).json({ success: false, message: 'Pool name is required' }); if (!price || price < 0) return res.status(400).json({ success: false, message: 'Valid price is required' }); if (pool_type && !['coffee', 'other'].includes(pool_type)) { return res.status(400).json({ success: false, message: 'Invalid pool_type. Allowed: coffee, other' }); } const pool = await createPool({ pool_name, description, price, pool_type, is_active, created_by: actorUserId }); return res.status(201).json({ success: true, data: pool }); } catch (e) { if (e && (e.code === 'ER_DUP_ENTRY' || e.errno === 1062)) { return res.status(409).json({ success: false, message: 'Pool name already exists' }); } if (e && e.status === 400) { return res.status(400).json({ success: false, message: e.message }); } console.error('[PoolController.create]', e); return res.status(500).json({ success: false, message: 'Internal server error' }); } }, async list(req, res) { try { console.debug('[PoolController.list] GET /api/admin/pools'); const pools = await listPools(); return res.status(200).json({ success: true, data: pools }); } catch (e) { console.error('[PoolController.list] error', e); return res.status(500).json({ success: false, message: 'Internal server error' }); } }, // Update pool active status async updateActive(req, res) { try { const { id } = req.params || {}; const { is_active } = req.body || {}; const actorUserId = req.user && req.user.userId; if (!id) return res.status(400).json({ success: false, message: 'id is required' }); if (typeof is_active !== 'boolean') { return res.status(400).json({ success: false, message: 'is_active must be a boolean' }); } const updated = await updatePoolState(id, is_active, actorUserId); return res.status(200).json({ success: true, data: updated }); } catch (e) { if (e && e.status === 400) { return res.status(400).json({ success: false, message: e.message }); } console.error('[PoolController.updateActive]', e); return res.status(500).json({ success: false, message: 'Internal server error' }); } } };