diff --git a/apps/api/src/server.ts b/apps/api/src/server.ts index 9f6fd74..e0c8d34 100644 --- a/apps/api/src/server.ts +++ b/apps/api/src/server.ts @@ -199,8 +199,8 @@ export const app = new Elysia() ) // COMMERCE - .group("/commerce", (app) => app - .group("/products", { auth: true }, (app) => app + .group("/commerce", { auth: true }, (app) => app + .group("/products", (app) => app .group("/sync", (app) => app // Sync status .get("/", async ({ sessionId }) => { @@ -234,7 +234,19 @@ export const app = new Elysia() return { pProduct, wProduct }; }, { params: t.Object({ pProductId: t.Numeric() }) - }))) + }) + ) + .group("/orders", (app) => app + .get("/:wOrderId", async ({ params: { wOrderId } }) => { + const wOrder = await s.Commerce.Webflow.Orders.get(wOrderId); + if (!wOrder) throw new NotFoundError("Missing webflow order"); + + const pOrder = await s.Commerce.Printful.Orders.get(`@${wOrder.orderId}`); + + return { wOrder, pOrder }; + }, { params: t.Object({ wOrderId: t.String() }) }) + ) + ) // EVENTS .group("/events", { auth: true }, (app) => app diff --git a/apps/portal/src/routes/(app)/apparel/orders/+page.svelte b/apps/portal/src/routes/(app)/apparel/orders/+page.svelte index e69de29..3640420 100644 --- a/apps/portal/src/routes/(app)/apparel/orders/+page.svelte +++ b/apps/portal/src/routes/(app)/apparel/orders/+page.svelte @@ -0,0 +1,62 @@ + + +{#await data.orders.webflow} +
Loading...
+{:then wOrders} +| Id | +Status | +
|---|---|
| + |
+ {#await isOrderSynced(wOrder) then isSynced}
+ {#if isSynced}
+
+ Synced
+
+ {:else}
+
+ Desynced
+
+ {/if}
+ {/await}
+ |
+
Something went wrong: {error.message}
+{/await} diff --git a/packages/commerce/src/printful.ts b/packages/commerce/src/printful.ts index 4a656da..b80ed53 100644 --- a/packages/commerce/src/printful.ts +++ b/packages/commerce/src/printful.ts @@ -103,6 +103,18 @@ class ProductsClient { class OrdersClient { constructor(private creds: Credentials) { } + async get(orderId: number | string): Promise