Changes
Co-authored-by: renee-png <262607627+renee-png@users.noreply.github.com>
This commit is contained in:
co-authored by
renee-png
parent
14d8ac54bf
commit
c7ff16f054
@@ -50,6 +50,8 @@ export function HeaderTimer() {
|
||||
const [feeItems, setFeeItems] = useState<FeeItem[]>([]);
|
||||
const [feeItemId, setFeeItemId] = useState<string>("");
|
||||
const [showNewFee, setShowNewFee] = useState(false);
|
||||
const [staff, setStaff] = useState<Array<{ id: string; full_name: string | null; email: string | null }>>([]);
|
||||
const [enteredById, setEnteredById] = useState<string>("");
|
||||
|
||||
// Load clients + cases the user can access (RLS handles filtering)
|
||||
useEffect(() => {
|
||||
@@ -75,6 +77,9 @@ export function HeaderTimer() {
|
||||
setCases(ks ?? []);
|
||||
setProfileRate((prof as any)?.hourly_rate ?? null);
|
||||
setFeeItems((fees ?? []) as FeeItem[]);
|
||||
const { data: st } = await supabase.from("profiles").select("id, full_name, email").order("full_name");
|
||||
setStaff((st ?? []) as any);
|
||||
setEnteredById((prev) => prev || user.id);
|
||||
})();
|
||||
}, [user?.id]);
|
||||
|
||||
@@ -121,7 +126,7 @@ export function HeaderTimer() {
|
||||
const rate = isFlatFee ? selectedFee!.amount : effectiveRate;
|
||||
const { error } = await supabase.from("time_entries").insert({
|
||||
case_id: timer.caseId,
|
||||
user_id: user.id,
|
||||
user_id: enteredById || user.id,
|
||||
work_date: new Date().toISOString().slice(0, 10),
|
||||
hours,
|
||||
hourly_rate: rate,
|
||||
@@ -143,6 +148,7 @@ export function HeaderTimer() {
|
||||
);
|
||||
setBillable(true);
|
||||
setFeeItemId("");
|
||||
setEnteredById(user.id);
|
||||
setOpen(false);
|
||||
};
|
||||
|
||||
@@ -289,6 +295,22 @@ export function HeaderTimer() {
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div className="space-y-1.5">
|
||||
<Label className="text-xs">Entered by</Label>
|
||||
<SearchableSelect
|
||||
value={enteredById}
|
||||
onValueChange={setEnteredById}
|
||||
placeholder="Select staff…"
|
||||
searchPlaceholder="Search staff…"
|
||||
emptyText="No staff found."
|
||||
options={staff.map((s) => ({
|
||||
value: s.id,
|
||||
label: (s.full_name || s.email || "Unknown") + (s.id === user?.id ? " (me)" : ""),
|
||||
keywords: `${s.full_name ?? ""} ${s.email ?? ""}`,
|
||||
}))}
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div className="grid grid-cols-2 gap-3 pt-1">
|
||||
<div>
|
||||
<div className="text-[10px] uppercase tracking-wider text-muted-foreground">
|
||||
|
||||
Reference in New Issue
Block a user