diff --git a/src/_dataSources/api.that.tech/admin/orders/queries.js b/src/_dataSources/api.that.tech/admin/orders/queries.js new file mode 100644 index 0000000..36732f7 --- /dev/null +++ b/src/_dataSources/api.that.tech/admin/orders/queries.js @@ -0,0 +1,63 @@ +import gFetch from '$lib/gfetch'; +import { log } from '../../utilities/error'; + +const defaultPageSize = 1000; + +export const QUERY_ORDERS_BY_EVENT = ` + query QUERY_ORDERS_BY_EVENT($eventId: ID!, $pageSize: Int, $cursor: String) { + orders { + all(pageSize: $pageSize, eventId: $eventId, cursor: $cursor) { + orders { + id + member { + firstName + lastName + } + lineItems { + product { + ...on ProductBase { + name + } + } + isBulkPurchase + quantity + } + orderDate + createdAt + status + orderType + total + } + count + cursor + } + } + } +`; + +export default (fetch) => { + const client = fetch ? gFetch(fetch) : gFetch(); + + function queryOrdersByEvent({ cursor, eventId, pageSize = defaultPageSize }) { + const variables = { + pageSize, + cursor, + eventId + }; + + return client + .secureQuery({ query: QUERY_ORDERS_BY_EVENT, variables }) + .then(({ data, errors }) => { + if (errors) { + log({ errors, tag: 'QUERY_ORDERS_BY_EVENT' }); + throw new Error('QUERY_ORDERS_BY_EVENT'); + } + + return data.orders.all; + }); + } + + return { + queryOrdersByEvent + }; +}; diff --git a/src/routes/(admin)/admin/events/[id]/orders/+page.server.js b/src/routes/(admin)/admin/events/[id]/orders/+page.server.js new file mode 100644 index 0000000..ec05da7 --- /dev/null +++ b/src/routes/(admin)/admin/events/[id]/orders/+page.server.js @@ -0,0 +1,12 @@ +import orderQueries from '$dataSources/api.that.tech/admin/orders/queries'; + +export const load = async ({ fetch, params }) => { + const { id } = params; + + const { queryOrdersByEvent } = orderQueries(fetch); + const orders = await queryOrdersByEvent({ eventId: id }); + + return { + orders + }; +}; diff --git a/src/routes/(admin)/admin/events/[id]/orders/+page.svelte b/src/routes/(admin)/admin/events/[id]/orders/+page.svelte new file mode 100644 index 0000000..5e248fd --- /dev/null +++ b/src/routes/(admin)/admin/events/[id]/orders/+page.svelte @@ -0,0 +1,86 @@ + + +
A list of all orders for a given event.
++ Member Name + | ++ Date + | ++ Id + | ++ Status + | ++ Order Type + | ++ Edit + | +
---|---|---|---|---|---|
+ {order.member.firstName} + {order.member.lastName} + | ++ {dayjs(order.orderDate).format('dddd, MMMM D, YYYY')} + | ++ {order.id} + | +{order.status} | +{order.orderType} | ++ + | +