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:
1 parent
d83bbfb48d
commit
bc9d673ff7
4 files changed
+141
-4
No files matched your search
@@ -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,
|
||||
|
||||
Reference in new issue
Block a user