diff --git a/src/routes/backoffice/timesheets/+page.svelte b/src/routes/backoffice/timesheets/+page.svelte index ddcb7d8..6234627 100644 --- a/src/routes/backoffice/timesheets/+page.svelte +++ b/src/routes/backoffice/timesheets/+page.svelte @@ -163,7 +163,6 @@ total_work_hour: 0, remarks: "", approval: null, // Default null - created_at: new Date().toISOString(), }; // Fetch initial data on mount onMount(async () => { @@ -477,132 +476,6 @@ } } - - // // Function to fetch timesheets with optional filters and sorting - // async function fetchTimeSheets( - // villaIdFilter: string | null = null, - // searchTerm: string | null = null, - // offset: number = 0, - // limit: number = 1000, - // ) { - // let reportedBy: { label: string; value: string }[] = []; - // const { data: staffData, error: staffError } = await supabase - // .from("vb_employee") - // .select("id, employee_name") - // .eq("employee_status", "Active") - // .order("employee_name", { ascending: true }); - - // if (staffError) { - // console.error("Error fetching staff:", staffError); - // } else if (staffData) { - // reportedBy = staffData.map((s) => ({ - // label: s.employee_name, - // value: s.id, - // })); - // } - - // let query = supabase - // .from("vb_timesheet") - // .select(`*`) - // .order(sortColumn || "created_at", { - // ascending: sortOrder === "asc", - // }); - - // if (villaIdFilter) { - // const { data: villaMatch } = await supabase - // .from("vb_villas") - // .select("id") - // .eq("villa_name", villaIdFilter); - - // const matchedId = villaMatch?.[0]?.id; - // if (matchedId) { - // query = query.eq("villa_id", matchedId); - // } - // } - - // if (offset) { - // query = query.range(offset, offset + limit - 1); - // } - // if (limit) { - // query = query.limit(limit); - // } - // const { data: timesheet, error } = await query; - // if (error) { - // console.error("Error fetching timesheets:", error); - // return; - // } - - // const loweredSearch = searchTerm?.toLowerCase(); - // let filteredTimesheet = timesheet; - // if (loweredSearch) { - // filteredTimesheet = timesheet.filter((ts) => { - // const workDesc = ts.work_description?.toLowerCase() || ""; - // const staffName = reportedBy.find((s) => s.value === ts.entered_by)?.label?.toLowerCase() || ""; - // return ( - // workDesc.includes(loweredSearch) || - // staffName.includes(loweredSearch) - // ); - // }); - // } - - // const villaIds = [...new Set(filteredTimesheet.map((i: Timesheets) => i.villa_id))]; - // let villas = []; - // if (villaIds.length > 0) { - // const { data: villasData, error: villaError } = await supabase - // .from("vb_villas") - // .select("*") - // .in("id", villaIds); - - // if (villaError) { - // console.error("Error fetching villas:", villaError); - // } else { - // villas = villasData; - // } - // } - // const { data: approvers, error: approverError } = await supabase - // .from("vb_users") - // .select("id, full_name"); - - // if (approverError) { - // console.error("Error fetching approvers:", approverError); - // } - // allRows = filteredTimesheet.map((tsdata: TimesheetsJoined) => { - // const villa = villas.find((v) => v.id === tsdata.villa_id); - // const approver = approvers?.find((u) => u.id === tsdata.approved_by); - - // return { - // id: tsdata.id, - // name: tsdata.work_description, - // staff_id: - // reportedBy.find((s) => s.value === tsdata.entered_by)?.label || "Unknown", - // date_in: new Date(tsdata.datetime_in), - // date_out: new Date(tsdata.datetime_out), - // type_of_work: tsdata.type_of_work, - // category_of_work: tsdata.category_of_work, - // villa_name: villa ? villa.villa_name : "Unknown Villa", - // approval: - // tsdata.approval == null - // ? "PENDING" - // : tsdata.approval - // ? "APPROVED" - // : "REJECTED", - // total_hours_work: - // Math.abs( - // new Date(tsdata.datetime_out).getTime() - new Date(tsdata.datetime_in).getTime() - // ) / (1000 * 60 * 60), - // approved_by: approver?.full_name ?? "Not Approved", - // approved_date: tsdata.approved_date, - // remarks: tsdata.remarks, - // // created_at: tsdata.created_at ? new Date(tsdata.created_at) : undefined, - // } as TimesheetDisplay; - // }); - // currentPage = 1; - - // console.log("Fetched rows:", allRows); - // } - - - // Function to delete a timesheet async function deleteTimesheet(id: string) { if (confirm("Are you sure you want to delete this Timesheet?")) { @@ -614,7 +487,14 @@ console.error("Error deleting Timesheet:", error); return; } - await fetchTimeSheets(); + await fetchTimeSheets( + currentVillaFilter, + currentSearchTerm, + sortColumn, + sortOrder, + (currentPage - 1) * rowsPerPage, + rowsPerPage, + ); } } // Function to update the approval status of a timesheet @@ -637,7 +517,14 @@ if (error) { console.error("Error updating approval status:", error); } else { - await fetchTimeSheets(); + await fetchTimeSheets( + currentVillaFilter, + currentSearchTerm, + sortColumn, + sortOrder, + (currentPage - 1) * rowsPerPage, + rowsPerPage, + ); } } // Function to submit the form data @@ -684,7 +571,6 @@ total_work_hour: form.total_work_hour, remarks: form.remarks, approval: form.approval || null, // Allow null for new entries - created_at: new Date().toISOString(), }; const { error: insertError } = await supabase @@ -709,9 +595,15 @@ total_work_hour: 0, remarks: "", approval: null, - created_at: new Date().toISOString(), }; - await fetchTimeSheets(); + await fetchTimeSheets( + currentVillaFilter, + currentSearchTerm, + sortColumn, + sortOrder, + (currentPage - 1) * rowsPerPage, + rowsPerPage, + ); showModal = false; } }