52 lines
1.9 KiB
TypeScript
52 lines
1.9 KiB
TypeScript
import { Router } from 'express'
|
|
import { authMiddleware, AuthRequest } from '../middleware/auth'
|
|
import { auditLog } from '../middleware/auditLog'
|
|
import { terminationChecklistSchema } from '../schemas/termination.schema'
|
|
import { createTermination, getTerminations, getChecklistForReason, assessRisk, calculateCompensation } from '../services/termination.service'
|
|
import prisma from '../lib/prisma'
|
|
import { decrypt } from '../lib/crypto'
|
|
|
|
const router = Router()
|
|
|
|
router.get('/', authMiddleware, async (req: AuthRequest, res, next) => {
|
|
try {
|
|
const page = parseInt(req.query.page as string) || 1
|
|
const pageSize = parseInt(req.query.pageSize as string) || 20
|
|
const result = await getTerminations(req.user!.orgId, page, pageSize)
|
|
res.json({ success: true, data: result })
|
|
} catch (err) {
|
|
next(err)
|
|
}
|
|
})
|
|
|
|
router.get('/checklist/:reason', authMiddleware, (req: AuthRequest, res) => {
|
|
const checklist = getChecklistForReason(req.params.reason)
|
|
res.json({ success: true, data: checklist })
|
|
})
|
|
|
|
router.get('/assess/:employeeId', authMiddleware, async (req: AuthRequest, res, next) => {
|
|
try {
|
|
const employee = await prisma.employee.findFirst({ where: { id: req.params.employeeId, orgId: req.user!.orgId } })
|
|
if (!employee) {
|
|
return res.status(404).json({ success: false, error: { code: 'NOT_FOUND', message: '员工不存在' } })
|
|
}
|
|
const assessment = assessRisk(employee, req.query.reason as string || '')
|
|
res.json({ success: true, data: assessment })
|
|
} catch (err) {
|
|
next(err)
|
|
}
|
|
})
|
|
|
|
router.post('/', authMiddleware, async (req: AuthRequest, res, next) => {
|
|
try {
|
|
const data = terminationChecklistSchema.parse(req.body)
|
|
const result = await createTermination(req.user!.orgId, req.user!.id, data)
|
|
await auditLog(req, 'TERMINATE', 'EMPLOYEE', data.employeeId, { reason: data.reason })
|
|
res.json({ success: true, data: result })
|
|
} catch (err) {
|
|
next(err)
|
|
}
|
|
})
|
|
|
|
export default router
|