import {env} from '$env/dynamic/private'; import {WorkingHoursRepository} from "$lib/Repositories.svelte"; export function load() { return { promise: WorkingHoursRepository.browse(env.API_URL) }; } /** @param {Date} actualDayObject **/ const getMonday = actualDayObject => { if (actualDayObject.getDate() === 0) { actualDayObject.setDate(actualDayObject.getDate() - 7) } if (actualDayObject.getDate() !== 1) { actualDayObject.setDate(actualDayObject.getDate() - (actualDayObject.getDay() - 1)) } return actualDayObject } /** @type {String[]} **/ const weekday_list = ['Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag', 'Sontag'] /** @param {Date} actualDayObject **/ const getDateString = actualDayObject => { return actualDayObject.getFullYear() + "-" + (actualDayObject.getMonth() + 1).toString().padStart(2, '0') + "-" + actualDayObject.getDate().toString().padStart(2, '0') } export const actions = { update: async ({ request }) => { const data = await request.formData(); const body_data = { workingDay: data.get('workingDay'), workingTime: data.get('workingTime'), isHomeOffice: data.get('isHomeOffice'), } await WorkingHoursRepository.update(env.API_URL, data.get('workingDay'), body_data); }, create: async ({ request }) => { const form_data = await request.formData(); const body_data = { workingDay: form_data.get('workingDay'), workingTime: form_data.get('workingTime'), isHomeOffice: form_data.get('isHomeOffice'), } await WorkingHoursRepository.add(env.API_URL, body_data); }, "create-by-week": async ({ request }) => { const form_data = await request.formData(); // @ts-ignore let actualDayObject = getMonday(new Date(form_data.get('week'))) /** @type {Object} **/ let day_list = {} weekday_list.forEach(day => { day_list[day] = getDateString(actualDayObject) actualDayObject.setDate(actualDayObject.getDate() + 1) }) for (const pair of form_data.entries()) { let key = /(?\w+)\[time]/.exec(pair[0]) if (key === null) { continue } let day = key?.groups?.day ?? '' const working_day = day_list[day] ?? null if (working_day === null || pair[1] === '00:00:00' || pair[1] === '00:00') { continue } const body_data = { workingDay: working_day, workingTime: pair[1], isHomeOffice: form_data.has(day + '[isHomeOffice]') } await WorkingHoursRepository.addOrUpdate(env.API_URL, working_day, body_data); } }, 'import-csv': async ({ request }) => { const form_data = await request.formData(); for (const pair of form_data.entries()) { let key = /^(?\d{4}-\d{2}-\d{2})\[time]$/.exec(pair[0]) if (key === null) { continue } let working_day = key?.groups?.day ?? '' const body_data = { workingDay: working_day, workingTime: pair[1], isHomeOffice: form_data.has(working_day + '[isHomeOffice]') } await WorkingHoursRepository.addOrUpdate(env.API_URL, working_day, body_data); } } };