Update changes
Dieser Commit ist enthalten in:
@ -11,6 +11,7 @@ import { FieldEncryption } from '../services/encryption'
|
||||
import { emailService } from '../services/emailService'
|
||||
import { logger } from '../utils/logger'
|
||||
import { createDepartmentResolver } from '../utils/department'
|
||||
import { decodeHtmlEntities } from '../utils/html'
|
||||
|
||||
|
||||
const router = Router()
|
||||
@ -205,6 +206,23 @@ router.get('/', authenticate, requirePermission('employees:read'), async (req: A
|
||||
primaryUnitId: emp.primary_unit_id,
|
||||
})
|
||||
|
||||
// Prefer freshly stored department path if it differs from resolver (e.g., after profile update but before assignment sync)
|
||||
const storedDeptRaw = (decodeHtmlEntities(emp.department) ?? emp.department ?? '').trim()
|
||||
const splitStored = (() => {
|
||||
const sep = ' -> '
|
||||
const idx = storedDeptRaw.lastIndexOf(sep)
|
||||
if (idx === -1) return { path: storedDeptRaw, task: undefined as string | undefined }
|
||||
return { path: storedDeptRaw.slice(0, idx) || storedDeptRaw, task: storedDeptRaw.slice(idx + sep.length) || undefined }
|
||||
})()
|
||||
const resolvedLabel = (departmentInfo.label || '').trim()
|
||||
const last = (s: string) => s.split(' -> ').map(p => p.trim()).filter(Boolean).pop() || ''
|
||||
const storedLast = last(splitStored.path)
|
||||
const resolvedLast = last(resolvedLabel)
|
||||
const finalLabel = (storedLast && resolvedLast && storedLast !== resolvedLast)
|
||||
? splitStored.path
|
||||
: (resolvedLabel || splitStored.path)
|
||||
const finalTasks = splitStored.task || departmentInfo.tasks
|
||||
|
||||
const employee: Employee = {
|
||||
id: emp.id,
|
||||
firstName: emp.first_name,
|
||||
@ -213,9 +231,9 @@ router.get('/', authenticate, requirePermission('employees:read'), async (req: A
|
||||
photo: emp.photo,
|
||||
position: emp.position,
|
||||
officialTitle: emp.official_title || undefined,
|
||||
department: departmentInfo.label || emp.department,
|
||||
department: finalLabel,
|
||||
departmentDescription: departmentInfo.description,
|
||||
departmentTasks: departmentInfo.tasks,
|
||||
departmentTasks: finalTasks,
|
||||
email: emp.email,
|
||||
phone: emp.phone,
|
||||
mobile: emp.mobile,
|
||||
@ -298,6 +316,23 @@ router.get('/public', authenticate, async (req: AuthRequest, res, next) => {
|
||||
primaryUnitId: emp.primary_unit_id,
|
||||
})
|
||||
|
||||
// Prefer freshly stored department path if it differs from resolver (e.g., after profile update but before assignment sync)
|
||||
const storedDeptRaw = (decodeHtmlEntities(emp.department) ?? emp.department ?? '').trim()
|
||||
const splitStored = (() => {
|
||||
const sep = ' -> '
|
||||
const idx = storedDeptRaw.lastIndexOf(sep)
|
||||
if (idx === -1) return { path: storedDeptRaw, task: undefined as string | undefined }
|
||||
return { path: storedDeptRaw.slice(0, idx) || storedDeptRaw, task: storedDeptRaw.slice(idx + sep.length) || undefined }
|
||||
})()
|
||||
const resolvedLabel = (departmentInfo.label || '').trim()
|
||||
const last = (s: string) => s.split(' -> ').map(p => p.trim()).filter(Boolean).pop() || ''
|
||||
const storedLast = last(splitStored.path)
|
||||
const resolvedLast = last(resolvedLabel)
|
||||
const finalLabel = (storedLast && resolvedLast && storedLast !== resolvedLast)
|
||||
? splitStored.path
|
||||
: (resolvedLabel || splitStored.path)
|
||||
const finalTasks = splitStored.task || departmentInfo.tasks
|
||||
|
||||
const employee: Employee = {
|
||||
id: emp.id,
|
||||
firstName: emp.first_name,
|
||||
@ -306,9 +341,9 @@ router.get('/public', authenticate, async (req: AuthRequest, res, next) => {
|
||||
photo: emp.photo,
|
||||
position: emp.position,
|
||||
officialTitle: emp.official_title || undefined,
|
||||
department: departmentInfo.label || emp.department,
|
||||
department: finalLabel,
|
||||
departmentDescription: departmentInfo.description,
|
||||
departmentTasks: departmentInfo.tasks,
|
||||
departmentTasks: finalTasks,
|
||||
email: emp.email,
|
||||
phone: emp.phone,
|
||||
mobile: emp.mobile,
|
||||
|
||||
In neuem Issue referenzieren
Einen Benutzer sperren