81 lines
2.8 KiB
JavaScript
81 lines
2.8 KiB
JavaScript
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'),
|
|
}
|
|
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'),
|
|
}
|
|
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<String,String>} **/
|
|
let day_list = {}
|
|
weekday_list.forEach(day => {
|
|
day_list[day] = getDateString(actualDayObject)
|
|
actualDayObject.setDate(actualDayObject.getDate() + 1)
|
|
})
|
|
for (const pair of form_data.entries()) {
|
|
const working_day = day_list[pair[0]] ?? null
|
|
if (working_day === null) {
|
|
continue
|
|
}
|
|
const body_data = {
|
|
workingDay: working_day,
|
|
workingTime: pair[1],
|
|
}
|
|
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()) {
|
|
const working_day = pair[0]
|
|
const body_data = {
|
|
workingDay: working_day,
|
|
workingTime: pair[1],
|
|
}
|
|
await WorkingHoursRepository.addOrUpdate(env.API_URL, working_day, body_data);
|
|
}
|
|
}
|
|
}; |