Unterstützung: Mitarbeiter tragen sich selbst als Unterstützung ein

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
ClaudeandClaude Opus 5.5 committed 2026-09-30 14:58:58 +00:00
1 parent d83bbfb48d
commit bc9d673ff7
4 files changed
+141 -4

No files matched your search

+26 -1
View File
@@ -2,7 +2,7 @@ import { useState, useEffect, useCallback } from 'react'
import { databases, DATABASE_ID, COLLECTIONS, Query, ID } from '../lib/appwrite'
import { canEditWorksheetTimes, isGitWorksheet } from '../lib/ticketForm'
import { roundUpToStep, isValidStep } from '../lib/timeSteps'
import { parseSupporters, serializeSupporters } from '../lib/support'
import { parseSupporters, serializeSupporters, canAddOwnSupport, upsertSupporter, removeSupporter } from '../lib/support'
const STEP_ERROR = 'Die Arbeitszeit muss in 15-Minuten-Schritten angegeben werden.'
@@ -258,6 +258,30 @@ export function useWorksheets(woid = null) {
return updateWorksheet(worksheet.$id, data)
}
/**
* "Ich habe unterstuetzt": eigenen Eintrag setzen (task) oder entfernen (task = null).
* Liest das Blatt frisch, damit gleichzeitige Eintraege anderer erhalten bleiben.
*/
const saveOwnSupport = async (worksheet, task, currentUser, employee) => {
if (!canAddOwnSupport(worksheet, currentUser, employee)) {
return { success: false, error: 'Hier kannst du keine Unterstützung eintragen.' }
}
try {
const fresh = await databases.getDocument(DATABASE_ID, COLLECTIONS.WORKSHEETS, worksheet.$id)
const current = parseSupporters(fresh.supporters)
const next = task === null
? removeSupporter(current, currentUser.$id)
: upsertSupporter(current, {
employeeId: currentUser.$id,
name: employee?.displayName || currentUser.name || '',
task: String(task).trim().slice(0, 200)
})
return updateWorksheet(worksheet.$id, { supporters: serializeSupporters(next) })
} catch (err) {
return { success: false, error: err.message }
}
}
/**
* Löscht ein Worksheet (sollte normalerweise nicht erlaubt sein - Audit Trail!)
*/
@@ -293,6 +317,7 @@ export function useWorksheets(woid = null) {
createWorksheet,
updateWorksheet,
updateWorksheetTimes,
saveOwnSupport,
deleteWorksheet,
refresh: fetchWorksheets,
getTotalTime,