diff --git a/packages/app/src/stores/admin.ts b/packages/app/src/stores/admin.ts index c12682a..b1adbae 100644 --- a/packages/app/src/stores/admin.ts +++ b/packages/app/src/stores/admin.ts @@ -34,6 +34,25 @@ export interface MemberSummary { cancelledBookings: number } +export interface UserMembership { + userId: string + membership: { + id: string + cardTypeId: string + remainingTimes: number | null + startDate: string + expireDate: string + status: string + cardType: { + id: string + name: string + type: string + totalTimes: number | null + durationDays: number + } + } | null +} + export const useAdminStore = defineStore('admin', () => { // ── Week templates ─────────────────────────────────────────────── const weekTemplates = ref([]) @@ -125,6 +144,26 @@ export const useAdminStore = defineStore('admin', () => { return get>('/admin/members', cleanParams) } + async function getUserMembership(userId: string): Promise { + return get(`/admin/members/${userId}/membership`) + } + + async function updateUserMembership( + userId: string, + dto: { + cardTypeId: string + remainingTimes?: number | null + startDate: string + expireDate: string + }, + ): Promise { + return put(`/admin/members/${userId}/membership`, dto) + } + + async function deleteUserMembership(userId: string): Promise { + return del(`/admin/members/${userId}/membership`) + } + // ── Time slots ─────────────────────────────────────────────────── async function fetchSlotsByDate(date: string): Promise { return get('/admin/time-slots', { date }) @@ -191,6 +230,9 @@ export const useAdminStore = defineStore('admin', () => { fetchAdminBookings, // Members fetchMembers, + getUserMembership, + updateUserMembership, + deleteUserMembership, // Time slots fetchSlotsByDate, createManualSlot,