Stundenaufzeichnung/src/routes/dokumente/+page.server.ts

59 lines
1.7 KiB
TypeScript

import type { PageServerLoad, Actions } from "./$types";
import { fail, redirect } from "@sveltejs/kit"
import { toInt } from "$lib/util"
import { getAllFiles, getRecordFiles, getEstimateFiles, generateEstimatePDF, generateRecordPDF } from "$lib/server/docstore";
export const load: PageServerLoad = async ({ locals }) => {
return {
documents: await getAllFiles(locals.user),
records: await getRecordFiles(locals.user),
estimates: await getEstimateFiles(locals.user)
}
}
export const actions = {
create_estimate: async ({ locals, request }) => {
const data = await request.formData();
const quarter = toInt(data.get("quarter") ?? "");
const year = toInt(data.get("year") ?? "");
if (isNaN(year) || isNaN(quarter) || quarter < 1 || quarter > 4) {
return fail(400, { success: false, message: "Invalid parameter", year: year, quarter: quarter });
}
try {
await generateEstimatePDF(locals.user, year, quarter);
} catch (e) {
console.log(e);
return fail(403, { success: false, message: e.toString(), year: year, quarter: quarter });
}
return { success: true };
},
create_record: async ({ locals, request }) => {
const data = await request.formData();
const month = toInt(data.get("month") ?? "");
const year = toInt(data.get("year") ?? "");
if (isNaN(year) || isNaN(month) || month < 1 || month > 12) {
return fail(400, { success: false, message: "Invalid parameter", year: year, month: month });
}
try {
await generateRecordPDF(locals.user, year, month);
} catch (e) {
console.log(e);
return fail(403, { success: false, message: e.toString(), year: year, month: month });
}
redirect(303, "dokumente")
return { success: true };
}
} satisfies Actions;