OwlCyberSecurity - MANAGER
Edit File: employeeRoute.mjs
import express from 'express'; import Employee from '../models/employee.mjs'; import bcrypt from 'bcrypt'; export default function (Employee) { const router = express.Router(); // Middleware to attach model to the request router.use((req, res, next) => { req.model = Employee; next(); }); // Get the next available EmployeeId router.get('/next-id', async (req, res) => { try { const last = await Employee.findOne({ order: [['EmployeeId', 'DESC']] }); const nextId = last ? last.EmployeeId + 1 : 1; res.json({ nextId }); } catch (err) { console.error('❌ Error getting next EmployeeId:', err); res.status(500).json({ message: 'Server error' }); } }); // ✅ 1. GET all employees router.get('/', async (req, res) => { try { const employees = await Employee.findAll(); res.json(employees); } catch (err) { console.error('❌ Failed to fetch employees:', err); res.status(500).json({ message: 'Server error' }); } }); // ✅ 2. GET one employee by empNo (you already had this) router.get('/:empNo', async (req, res) => { try { const empNo = req.params.empNo; console.log('🔍 Received empNo:', empNo); const employee = await Employee.findOne({ where: { EmpNo: empNo } }); if (!employee) { console.warn('⚠️ No employee found for EmpNo:', empNo); return res.status(404).json({ message: 'Employee not found' }); } res.json(employee); } catch (error) { console.error('❌ FULL ERROR LOG:', error); // ✅ log full error res.status(500).json({ message: 'Failed to fetch employee data' }); } }); // ✅ 3. POST - Add new employee router.post('/', async (req, res) => { try { const { EmployeeId, EmpNo, EmployeeName, password, role } = req.body; const hashedPassword = await bcrypt.hash(password, 10); const newEmployee = await Employee.create({ EmployeeId, EmpNo, EmployeeName, password: hashedPassword, role }); res.status(201).json(newEmployee); } catch (err) { console.error('❌ Failed to add employee:', err); res.status(500).json({ message: 'Server error while creating employee' }); } }); return router; }