/* eslint-disable @typescript-eslint/no-explicit-any */ import { PUBLIC_BASE_API_URL } from '$env/static/public'; import { fail } from '@sveltejs/kit'; export async function load({ cookies }) { return { accessToken: cookies.get('accessToken') }; } export const actions = { update: async ({ cookies, request, getClientAddress }) => { const data = await request.formData(); const id = data.get('id'); const restDayWages = Number(data.get('restDayWages')); const advance = Number(data.get('advance')); const cleaningFee = Number(data.get('cleaningFee')); const epf = Number(data.get('epf')); const eis = Number(data.get('eis')); const socso = Number(data.get('socso')); const levy = Number(data.get('levy')); const deduct = Number(data.get('deduct')); const addition = Number(data.get('addition')); const remark = data.get('remark'); const reqBody = JSON.stringify({ restDayWages, advance, cleaningFee, epf, eis, socso, levy, deduct, addition, remark: remark === '' ? null : remark }); const response = await fetch(`${PUBLIC_BASE_API_URL}/monthly-records/${id}`, { body: reqBody, headers: { 'Content-Type': 'application/json', Authorization: `Bearer ${cookies.get('accessToken')}`, 'x-forwarded-for': getClientAddress(), 'x-real-ip': getClientAddress() }, method: 'PATCH' }); const responseData = await response.json(); if (responseData.statusCode) { return fail(responseData.statusCode, { id: 'inputData', message: JSON.stringify(responseData.message) }); } return { id: 'inputData', message: 'Updated' }; }, getTableData: async ({ cookies, request, getClientAddress }) => { const data = await request.formData(); const page = data.get('page'); const filterDate = data.get('filterDate'); const filterEmployee = data.get('filterEmployee'); let query = `?take=10&page=${page}`; if (filterDate) { query += `&date=${filterDate}`; } if (filterEmployee) { query += `&employeeName=${filterEmployee}`; } try { const res = await fetch(`${PUBLIC_BASE_API_URL}/monthly-records${query}`, { headers: { 'Content-Type': 'application/json', Authorization: `Bearer ${cookies.get('accessToken')}`, 'x-forwarded-for': getClientAddress(), 'x-real-ip': getClientAddress() } }); const resData = await res.json(); if (resData.meta.itemCount === 0) { return fail(404, { id: 'tableData', message: 'No items available' }); } const pageCount = resData.meta.pageCount; const hasNextPage = resData.meta.hasNextPage; const hasPreviousPage = resData.meta.hasPreviousPage; const returnData = resData.data.map((el: any) => ({ ...el, createdAt: new Date(el.createdAt).toISOString().split('T')[0], updatedAt: new Date(el.updatedAt).toISOString().split('T')[0], date: new Date(el.date).toISOString().split('T')[0] })); return { returnData, pageCount, hasNextPage, hasPreviousPage, id: 'tableData' }; } catch (err: any) { return err.message; } } };