const express = require('express'); const router = express.Router(); // Debug middleware router.use((req, res, next) => { console.log(`[Config Route] ${req.method} ${req.path}`); next(); }); // Get all configuration values router.get('/', async (req, res) => { const pool = req.app.locals.pool; try { console.log('[Config Route] Fetching configuration values...'); const { rows: stockThresholds } = await pool.query('SELECT * FROM stock_thresholds WHERE id = 1'); console.log('[Config Route] Stock thresholds:', stockThresholds); const { rows: leadTimeThresholds } = await pool.query('SELECT * FROM lead_time_thresholds WHERE id = 1'); console.log('[Config Route] Lead time thresholds:', leadTimeThresholds); const { rows: salesVelocityConfig } = await pool.query('SELECT * FROM sales_velocity_config WHERE id = 1'); console.log('[Config Route] Sales velocity config:', salesVelocityConfig); const { rows: abcConfig } = await pool.query('SELECT * FROM abc_classification_config WHERE id = 1'); console.log('[Config Route] ABC config:', abcConfig); const { rows: safetyStockConfig } = await pool.query('SELECT * FROM safety_stock_config WHERE id = 1'); console.log('[Config Route] Safety stock config:', safetyStockConfig); const { rows: turnoverConfig } = await pool.query('SELECT * FROM turnover_config WHERE id = 1'); console.log('[Config Route] Turnover config:', turnoverConfig); const response = { stockThresholds: stockThresholds[0], leadTimeThresholds: leadTimeThresholds[0], salesVelocityConfig: salesVelocityConfig[0], abcConfig: abcConfig[0], safetyStockConfig: safetyStockConfig[0], turnoverConfig: turnoverConfig[0] }; console.log('[Config Route] Sending response:', response); res.json(response); } catch (error) { console.error('[Config Route] Error fetching configuration:', error); res.status(500).json({ error: 'Failed to fetch configuration', details: error.message }); } }); // Update stock thresholds router.put('/stock-thresholds/:id', async (req, res) => { const pool = req.app.locals.pool; try { const { critical_days, reorder_days, overstock_days, low_stock_threshold, min_reorder_quantity } = req.body; const { rows } = await pool.query( `UPDATE stock_thresholds SET critical_days = $1, reorder_days = $2, overstock_days = $3, low_stock_threshold = $4, min_reorder_quantity = $5 WHERE id = $6`, [critical_days, reorder_days, overstock_days, low_stock_threshold, min_reorder_quantity, req.params.id] ); res.json({ success: true }); } catch (error) { console.error('[Config Route] Error updating stock thresholds:', error); res.status(500).json({ error: 'Failed to update stock thresholds' }); } }); // Update lead time thresholds router.put('/lead-time-thresholds/:id', async (req, res) => { const pool = req.app.locals.pool; try { const { target_days, warning_days, critical_days } = req.body; const { rows } = await pool.query( `UPDATE lead_time_thresholds SET target_days = $1, warning_days = $2, critical_days = $3 WHERE id = $4`, [target_days, warning_days, critical_days, req.params.id] ); res.json({ success: true }); } catch (error) { console.error('[Config Route] Error updating lead time thresholds:', error); res.status(500).json({ error: 'Failed to update lead time thresholds' }); } }); // Update sales velocity config router.put('/sales-velocity/:id', async (req, res) => { const pool = req.app.locals.pool; try { const { daily_window_days, weekly_window_days, monthly_window_days } = req.body; const { rows } = await pool.query( `UPDATE sales_velocity_config SET daily_window_days = $1, weekly_window_days = $2, monthly_window_days = $3 WHERE id = $4`, [daily_window_days, weekly_window_days, monthly_window_days, req.params.id] ); res.json({ success: true }); } catch (error) { console.error('[Config Route] Error updating sales velocity config:', error); res.status(500).json({ error: 'Failed to update sales velocity config' }); } }); // Update ABC classification config router.put('/abc-classification/:id', async (req, res) => { const pool = req.app.locals.pool; try { const { a_threshold, b_threshold, classification_period_days } = req.body; const { rows } = await pool.query( `UPDATE abc_classification_config SET a_threshold = $1, b_threshold = $2, classification_period_days = $3 WHERE id = $4`, [a_threshold, b_threshold, classification_period_days, req.params.id] ); res.json({ success: true }); } catch (error) { console.error('[Config Route] Error updating ABC classification config:', error); res.status(500).json({ error: 'Failed to update ABC classification config' }); } }); // Update safety stock config router.put('/safety-stock/:id', async (req, res) => { const pool = req.app.locals.pool; try { const { coverage_days, service_level } = req.body; const { rows } = await pool.query( `UPDATE safety_stock_config SET coverage_days = $1, service_level = $2 WHERE id = $3`, [coverage_days, service_level, req.params.id] ); res.json({ success: true }); } catch (error) { console.error('[Config Route] Error updating safety stock config:', error); res.status(500).json({ error: 'Failed to update safety stock config' }); } }); // Update turnover config router.put('/turnover/:id', async (req, res) => { const pool = req.app.locals.pool; try { const { calculation_period_days, target_rate } = req.body; const { rows } = await pool.query( `UPDATE turnover_config SET calculation_period_days = $1, target_rate = $2 WHERE id = $3`, [calculation_period_days, target_rate, req.params.id] ); res.json({ success: true }); } catch (error) { console.error('[Config Route] Error updating turnover config:', error); res.status(500).json({ error: 'Failed to update turnover config' }); } }); // Export the router module.exports = router;