94 lines
3.5 KiB
JavaScript
94 lines
3.5 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'),
|
|
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<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()) {
|
|
let key = /(?<day>\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 = /^(?<day>\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);
|
|
}
|
|
}
|
|
}; |