summaryrefslogtreecommitdiff
path: root/app/src/routes
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/routes')
-rw-r--r--app/src/routes/assignments/+page.server.ts16
-rw-r--r--app/src/routes/assignments/+page.svelte21
-rw-r--r--app/src/routes/assignments/[assignmentId]/+page.server.ts27
-rw-r--r--app/src/routes/assignments/[assignmentId]/+page.svelte25
-rw-r--r--app/src/routes/profile/+page.svelte7
5 files changed, 94 insertions, 2 deletions
diff --git a/app/src/routes/assignments/+page.server.ts b/app/src/routes/assignments/+page.server.ts
new file mode 100644
index 0000000..0b829cd
--- /dev/null
+++ b/app/src/routes/assignments/+page.server.ts
@@ -0,0 +1,16 @@
+import type { PageServerLoad } from "./$types";
+import { getAssignments } from "$lib/server/assignments";
+import { redirect } from "@sveltejs/kit";
+
+export const load = (async ({ url, locals }) => {
+ if (!locals.user) {
+ redirect(303, `/login?redirectTo=${encodeURIComponent(url.toString())}`);
+ }
+
+ const assignments = await getAssignments(locals.dbConn, locals.user.id);
+
+ return {
+ user: locals.user,
+ assignments,
+ };
+}) satisfies PageServerLoad;
diff --git a/app/src/routes/assignments/+page.svelte b/app/src/routes/assignments/+page.svelte
new file mode 100644
index 0000000..f43767d
--- /dev/null
+++ b/app/src/routes/assignments/+page.svelte
@@ -0,0 +1,21 @@
+<!-- The /assignments index page gives an overview of assignments -->
+
+<script lang="ts">
+ import type { PageProps } from "./$types";
+
+ const { data }: PageProps = $props();
+</script>
+
+<h1>Kommende opgaver for {data.user.firstName}</h1>
+
+<ol>
+ {#each data.assignments as assignment}
+ <li>
+ <span>{assignment.date}</span>
+ <a href={`/assignments/${assignment.id}`}>Mere info</a>
+ </li>
+ {/each}
+</ol>
+
+<style>
+</style>
diff --git a/app/src/routes/assignments/[assignmentId]/+page.server.ts b/app/src/routes/assignments/[assignmentId]/+page.server.ts
new file mode 100644
index 0000000..566dcd9
--- /dev/null
+++ b/app/src/routes/assignments/[assignmentId]/+page.server.ts
@@ -0,0 +1,27 @@
+import { getAssignmentAndCemetaryById } from "$lib/server/assignments";
+import type { PageServerLoad } from "./$types";
+import { error, redirect } from "@sveltejs/kit";
+
+export const load = (async ({ params, url, locals }) => {
+ if (!locals.user) {
+ redirect(303, `/login?redirectTo=${encodeURIComponent(url.toString())}`);
+ }
+
+ const { assignment, cemetaryPlot } = await getAssignmentAndCemetaryById(
+ locals.dbConn,
+ +params.assignmentId,
+ );
+ if (!assignment) {
+ return error(404, `Cemetary plot with id ${params.assignmentId} not found`);
+ }
+ console.debug("Found assignment: ", assignment);
+ if (assignment.gardenerId !== locals.user.id) {
+ return error(403, "This assignment isn't for you!");
+ }
+
+ return {
+ user: locals.user,
+ assignment,
+ cemetaryPlot,
+ };
+}) satisfies PageServerLoad;
diff --git a/app/src/routes/assignments/[assignmentId]/+page.svelte b/app/src/routes/assignments/[assignmentId]/+page.svelte
new file mode 100644
index 0000000..0b36a19
--- /dev/null
+++ b/app/src/routes/assignments/[assignmentId]/+page.svelte
@@ -0,0 +1,25 @@
+<script lang="ts">
+ import type { PageProps } from "./$types";
+
+ let { data }: PageProps = $props();
+
+ const assignmentDate = $derived(new Intl.DateTimeFormat().format(data.assignment.date));
+</script>
+
+<svelte:head>
+ <title>Opgave på {data.cemetaryPlot.address}</title>
+</svelte:head>
+
+<h1>Assignment #{data.assignment.id}</h1>
+<p>
+ Gravstedet, der skal vedligeholdes er ved <span class="address">{data.cemetaryPlot.address}</span
+ >.
+</p>
+<p>Vedligeholdelsen skal finde sted <time>{assignmentDate}<time>.</time></time></p>
+
+<style>
+ .address,
+ time {
+ font-weight: bold;
+ }
+</style>
diff --git a/app/src/routes/profile/+page.svelte b/app/src/routes/profile/+page.svelte
index 0ee18f0..62078cc 100644
--- a/app/src/routes/profile/+page.svelte
+++ b/app/src/routes/profile/+page.svelte
@@ -8,5 +8,8 @@
<img src="/profile_picture_standin.jpeg" width="255" height="255" alt="Dummy profile picture" />
<p>Hej, {data.user.firstName} {data.user.lastName}!</p>
-<style>
-</style>
+{#if data.user.role === "gardener"}
+ <p>Tjek dine opgaver her: <a href="/assignments">Opgaver</a></p>
+{/if}
+
+<!-- TODO: Burde også vise noget for owners -->