Changes
Co-authored-by: renee-png <262607627+renee-png@users.noreply.github.com>
This commit is contained in:
co-authored by
renee-png
parent
f35c692865
commit
14d8ac54bf
@@ -89,6 +89,8 @@ export function QuickAddTime() {
|
||||
const [feeId, setFeeId] = useState("");
|
||||
const [profileRate, setProfileRate] = useState<number | null>(null);
|
||||
const [submitting, setSubmitting] = useState(false);
|
||||
const [staff, setStaff] = useState<Array<{ id: string; full_name: string | null; email: string | null }>>([]);
|
||||
const [enteredById, setEnteredById] = useState<string>("");
|
||||
const [form, setForm] = useState({
|
||||
clientId: "",
|
||||
caseId: "",
|
||||
@@ -107,6 +109,18 @@ export function QuickAddTime() {
|
||||
})();
|
||||
}, [open, user?.id]);
|
||||
|
||||
useEffect(() => {
|
||||
if (!open) return;
|
||||
(async () => {
|
||||
const { data } = await supabase.from("profiles").select("id, full_name, email").order("full_name");
|
||||
setStaff((data ?? []) as any);
|
||||
})();
|
||||
}, [open]);
|
||||
|
||||
useEffect(() => {
|
||||
if (open && user?.id && !enteredById) setEnteredById(user.id);
|
||||
}, [open, user?.id, enteredById]);
|
||||
|
||||
const filteredCases = useMemo(
|
||||
() => (form.clientId ? cases.filter((c) => c.client_id === form.clientId) : []),
|
||||
[cases, form.clientId],
|
||||
@@ -144,7 +158,7 @@ export function QuickAddTime() {
|
||||
setSubmitting(true);
|
||||
const { error } = await supabase.from("time_entries").insert({
|
||||
case_id: form.caseId,
|
||||
user_id: user.id,
|
||||
user_id: enteredById || user.id,
|
||||
work_date: form.work_date,
|
||||
hours,
|
||||
hourly_rate: rate,
|
||||
@@ -250,6 +264,21 @@ export function QuickAddTime() {
|
||||
<Input type="number" step="0.01" min="0" value={form.rate} onChange={(e) => setForm({ ...form, rate: e.target.value })} required />
|
||||
</div>
|
||||
</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="space-y-1.5">
|
||||
<Label className="text-xs">Description</Label>
|
||||
<Textarea rows={3} value={form.description} onChange={(e) => setForm({ ...form, description: e.target.value })} required maxLength={1000} />
|
||||
|
||||
Reference in New Issue
Block a user