const dayjs = require('dayjs'); const { GatePass, Employee, Vendor } = require('../models'); async function gateSync(req, res, next) { try { const { barcode } = req.params; const gatePass = await GatePass.findOne({ barcode }).sort({ created_at: -1 }).lean(); if (!gatePass) { return res.status(404).json({ message: 'Pass not found' }); } const employee = await Employee.findById(gatePass.employee_id, { name: 1, vendor_id: 1 }).lean(); if (!employee) { return res.status(404).json({ message: 'Employee not found' }); } const vendor = await Vendor.findById(employee.vendor_id, { name: 1 }).lean(); const isExpired = dayjs(gatePass.expiry_date).isBefore(dayjs().startOf('day')); const status = gatePass.status === 'Active' && !isExpired ? 'VALID' : (isExpired ? 'EXPIRED' : gatePass.status); return res.json({ name: employee.name, contractor: vendor?.name || 'N/A', expiry_date: gatePass.expiry_date ? dayjs(gatePass.expiry_date).format('DD/MM/YYYY') : null, status }); } catch (error) { return next(error); } } module.exports = { gateSync };