From 7cfd515deafcb9dd2187d898838bdcbd529af318 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simen=20Str=C3=B8msnes?= <676624@stud.hvl.no> Date: Sun, 22 Oct 2023 14:00:06 +0200 Subject: [PATCH 1/3] First draft --- src/card_order/index.ts | 121 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 121 insertions(+) create mode 100644 src/card_order/index.ts diff --git a/src/card_order/index.ts b/src/card_order/index.ts new file mode 100644 index 0000000..1ec584d --- /dev/null +++ b/src/card_order/index.ts @@ -0,0 +1,121 @@ +import { ApiPostError, ApiGetError } from "../errors"; + +import { getApiServer } from "../meta"; +import { Oauth } from "../user" + +import { BasicUser } from "../user"; + +export enum OrderStates { + CREATED = "CREATED", + IN_PROGRESS = "IN_PROGRESS", + FINISHED = "FINISHED", + CANCELLED = "CANCELLED", +} + +interface BaseCardOrder { + uuid: string; + + created: number; + state: OrderStates + last_updated: number; +} + +export type BasicCardOrder = BaseCardOrder & { + event_uuid: string; + subject_user: BasicUser; + creator_user: BasicUser; + + updated_by_user: BasicUser; +} + +//? init +export const createCardOrder = async (user_uuid: string) => { + const response = await fetch(`${getApiServer()}/card_order`, { + method: "POST", + headers: { + "Content-Type": "application/json", + ...(await Oauth.getAuthHeaders()) + }, + body: JSON.stringify({ + user_uuid: user_uuid + }) + }); + + if (!response.ok) { + let error = "" + try { + error = (await response.json())["error"] + } catch (e) { + throw new ApiPostError("Unable to create card order"); + } + + throw new ApiPostError(error); + } + return await response.json() as BasicCardOrder; +} + +export const getAllCardOrders = async (event_uuid:string|null) => { + const response = await fetch(`${getApiServer()}/card_order/?event_uuid=${event_uuid}`, { // Idk if this works + method: "GET", + headers: { + "Content-Type": "application/json", + ...(await Oauth.getAuthHeaders()) + }, + }); + + if (response.status !== 200) { + throw new ApiGetError("Unable to get all card orders for event"); + } + + return (await response.json()) as Array; +}; + +//? instance +export const getCardOrder = async (uuid:string) => { + const response = await fetch(`${getApiServer()}/card_order/${uuid}`, { + method: "GET", + headers: { + "Content-Type": "application/json", + ...(await Oauth.getAuthHeaders()) + }, + }); + + if (response.status !== 200) { + throw new ApiGetError("Unable to get specified card order"); + } + + return (await response.json()) as BasicCardOrder; +}; + +export const generateCardFromOrder = async (uuid: string) => { + const result = await fetch(`${getApiServer()}/card_order/${uuid}/generate`, { + method: "PATCH", + headers: { + "Content-Type": "application/json", + ...(await Oauth.getAuthHeaders()) + }, + }); + return result +} + +export const finishCardOrder = async (uuid: string) => { + const response = await fetch(`${getApiServer()}/card_order/${uuid}/finish`, { + method: "PATCH", + headers: { + "Content-Type": "application/json", + ...(await Oauth.getAuthHeaders()) + }, + }); + return (await response.json()) as BasicCardOrder; +} + +export const cancelCardOrder = async (uuid: string) => { + const response = await fetch(`${getApiServer()}/card_order/${uuid}/cancel`, { + method: "PATCH", + headers: { + "Content-Type": "application/json", + ...(await Oauth.getAuthHeaders()) + }, + }); + return (await response.json()) as BasicCardOrder; +} From d58ab44e09f142c3d60913446a6bfa5de14c4bd8 Mon Sep 17 00:00:00 2001 From: simsine Date: Thu, 2 Nov 2023 09:14:21 +0100 Subject: [PATCH 2/3] fix: added card order export --- src/index.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/index.ts b/src/index.ts index 0e66b5b..d755b0d 100644 --- a/src/index.ts +++ b/src/index.ts @@ -2,6 +2,7 @@ export * as User from './user'; export * from './meta'; export * from './events'; export * as Crew from './crew'; +export * as CardOrder from './card_order'; export * from './errors'; export * as Avatar from './avatar'; export * from './tos'; From 04a0188dcaeaa1ad808cace1ffaa4b0b5749b73c Mon Sep 17 00:00:00 2001 From: simsine Date: Thu, 2 Nov 2023 09:16:05 +0100 Subject: [PATCH 3/3] feat: made event optional in getAllCardOrders --- src/card_order/index.ts | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/card_order/index.ts b/src/card_order/index.ts index 1ec584d..2522a8f 100644 --- a/src/card_order/index.ts +++ b/src/card_order/index.ts @@ -54,8 +54,12 @@ export const createCardOrder = async (user_uuid: string) => { return await response.json() as BasicCardOrder; } -export const getAllCardOrders = async (event_uuid:string|null) => { - const response = await fetch(`${getApiServer()}/card_order/?event_uuid=${event_uuid}`, { // Idk if this works +export const getAllCardOrders = async (event_uuid:string|undefined) => { + let param = "" + if (typeof event_uuid !== "undefined") { + param = "?event_uuid=" + event_uuid + } + const response = await fetch(`${getApiServer()}/card_order/${param}`, { method: "GET", headers: { "Content-Type": "application/json",