28 lines
1003 B
TypeScript
28 lines
1003 B
TypeScript
import { redirect } from '@sveltejs/kit';
|
|||
|
|
import { getStoredClientSession, hasStoredClientSession } from '$lib/session';
|
||
|
|
import { api } from '$lib/api';
|
||
|
|
import { canManageOrdering, canOpenCustomerOrdering, getWorkspaceHomeHref } from '$lib/workspace-access';
|
||
|
|
|
||
|
|
export async function load({ fetch }) {
|
||
|
|
if (!hasStoredClientSession()) {
|
||
|
|
return { catalogue: [], orders: [], canOrder: false };
|
||
|
|
}
|
||
|
|
|
||
|
|
const session = getStoredClientSession();
|
||
|
|
// Internal staff manage orders rather than place them — send them to the
|
||
|
|
// management console.
|
||
|
|
if (canManageOrdering(session)) {
|
||
|
|
throw redirect(307, '/ordering/manage');
|
||
|
|
}
|
||
|
|
if (!canOpenCustomerOrdering(session)) {
|
||
|
|
throw redirect(307, getWorkspaceHomeHref(session));
|
||
|
|
}
|
||
|
|
|
||
|
|
try {
|
||
|
|
const [catalogue, orders] = await Promise.all([api.ordering.catalogue(undefined, fetch), api.ordering.orders(undefined, fetch)]);
|
||
|
|
return { catalogue, orders, canOrder: true };
|
||
|
|
} catch {
|
||
|
|
return { catalogue: [], orders: [], canOrder: true };
|
||
|
|
}
|
||
|
|
}
|