chore: add memberships "endoint"

This commit is contained in:
Matilda Landström
2024-06-14 10:35:41 +02:00
committed by Michael Zetterberg
parent f40a6d4288
commit 3e54d3c29e
10 changed files with 175 additions and 1 deletions

View File

@@ -181,3 +181,13 @@ export const getCreditCardsSchema = z.object({
})
),
})
export const getMembershipCardsSchema = z.array(
z.object({
currentPoints: z.number(),
expirationDate: z.string(),
membershipNumber: z.string(),
memberSince: z.string(),
membershipType: z.string(),
})
)

View File

@@ -5,6 +5,7 @@ import { protectedProcedure, router } from "@/server/trpc"
import { countries } from "@/components/TempDesignSystem/Form/Country/countries"
import * as maskValue from "@/utils/maskValue"
import { getMembershipCards } from "@/utils/user"
import {
friendTransactionsInput,
@@ -14,6 +15,7 @@ import {
import {
getCreditCardsSchema,
getFriendTransactionsSchema,
getMembershipCardsSchema,
getStaysSchema,
getUserSchema,
} from "./output"
@@ -348,4 +350,45 @@ export const userQueryRouter = router({
return verifiedData.data.data
}),
membershipCards: protectedProcedure.query(async function ({ ctx }) {
const apiResponse = await api.get(api.endpoints.v1.profile, {
cache: "no-store",
headers: {
Authorization: `Bearer ${ctx.session.token.access_token}`,
},
})
if (!apiResponse.ok) {
// switch (apiResponse.status) {
// case 400:
// throw badRequestError()
// case 401:
// throw unauthorizedError()
// case 403:
// throw forbiddenError()
// default:
// throw internalServerError()
// }
console.info(`API Response Failed - Getting Membership Cards`)
console.info(`User: (${JSON.stringify(ctx.session.user)})`)
console.error(apiResponse)
}
const apiJson = await apiResponse.json()
const verifiedData = getMembershipCardsSchema.safeParse(
apiJson.data.attributes.memberships
)
if (!verifiedData.success) {
console.info(`Failed to validate Memberships Cards Data`)
console.info(`User: (${JSON.stringify(ctx.session.user)})`)
console.error(verifiedData.error)
return null
}
const cards = getMembershipCards(verifiedData.data)
return cards
}),
})