perbaikan refresh timesheet
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user