/* 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 = { create: async ({ cookies, request, getClientAddress }) => { const data = await request.formData(); const activateUntil = data.get('activateUntil'); const rate = Number(data.get('rate')); const name = data.get('name'); const unit = data.get('unit'); const sector = data.get('sector'); const activityGroup = data.get('activityGroup'); const incentiveName = data.get('incentiveName'); const isActive = data.get('isActive'); const shouldShowInOtfilter = data.get('shouldShowInOtfilter'); const reqBody = JSON.stringify({ activateUntil: activateUntil === '' ? null : activateUntil, rate, name, unit: unit === '' ? null : unit, sector, activityGroup, incentiveName: incentiveName === '' ? null : incentiveName, isActive, shouldShowInOtfilter }); const response = await fetch(`${PUBLIC_BASE_API_URL}/activity-record-settings`, { body: reqBody, headers: { 'Content-Type': 'application/json', Authorization: `Bearer ${cookies.get('accessToken')}`, 'x-forwarded-for': getClientAddress(), 'x-real-ip': getClientAddress() }, method: 'POST' }); const responseData = await response.json(); if (responseData.statusCode) { return fail(responseData.statusCode, { id: 'inputData', message: JSON.stringify(responseData.message) }); } return { id: 'inputData', message: 'Created' }; }, update: async ({ cookies, request, getClientAddress }) => { const data = await request.formData(); const id = data.get('id'); const activateUntil = data.get('activateUntil'); const rate = Number(data.get('rate')); const name = data.get('name'); const unit = data.get('unit'); const sector = data.get('sector'); const activityGroup = data.get('activityGroup'); const incentiveName = data.get('incentiveName'); const isActive = data.get('isActive'); const shouldShowInOtfilter = data.get('shouldShowInOtfilter'); const reqBody = JSON.stringify({ activateUntil: activateUntil === '' ? null : activateUntil, rate, name, unit: unit === '' ? null : unit, sector, activityGroup, incentiveName: incentiveName === '' ? null : incentiveName, isActive, shouldShowInOtfilter }); const response = await fetch(`${PUBLIC_BASE_API_URL}/activity-record-settings/${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 filterId = data.get('filterId'); const filterActivity = data.get('filterActivity'); const filterActivityGroup = data.get('filterActivityGroup'); const filterSector = data.get('filterSector'); const filterIncentive = data.get('filterIncentive'); const filterIsActive = data.get('filterIsActive'); let query = `?take=10&page=${page}`; if (filterId) { query += `&id=${filterId}`; } if (filterActivity) { query += `&activityName=${filterActivity}`; } if (filterActivityGroup) { query += `&activityGroupName=${filterActivityGroup}`; } if (filterSector) { query += `§orName=${filterSector}`; } if (filterIncentive) { query += `&incentiveName=${filterIncentive}`; } if (filterIsActive !== '') { query += `&isActive=${filterIsActive}`; } try { const res = await fetch(`${PUBLIC_BASE_API_URL}/activity-record-settings${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], activateUntil: el.activateUntil ? new Date(el.activateUntil).toISOString().split('T')[0] : null })); return { returnData, pageCount, hasNextPage, hasPreviousPage, id: 'tableData' }; } catch (err: any) { return err.message; } } };