forked from jamesp/sasa-membership
Basic event management
This commit is contained in:
@@ -14,6 +14,10 @@ export interface LoginData {
|
||||
password: string;
|
||||
}
|
||||
|
||||
export interface ForgotPasswordData {
|
||||
email: string;
|
||||
}
|
||||
|
||||
export interface User {
|
||||
id: number;
|
||||
email: string;
|
||||
@@ -62,10 +66,6 @@ export interface Payment {
|
||||
created_at: string;
|
||||
}
|
||||
|
||||
export interface ForgotPasswordData {
|
||||
email: string;
|
||||
}
|
||||
|
||||
export interface ResetPasswordData {
|
||||
token: string;
|
||||
new_password: string;
|
||||
@@ -83,6 +83,14 @@ export interface MembershipCreateData {
|
||||
auto_renew: boolean;
|
||||
}
|
||||
|
||||
export interface MembershipTierUpdateData {
|
||||
name?: string;
|
||||
description?: string;
|
||||
annual_fee?: number;
|
||||
benefits?: string;
|
||||
is_active?: boolean;
|
||||
}
|
||||
|
||||
export interface MembershipUpdateData {
|
||||
status?: string;
|
||||
start_date?: string;
|
||||
@@ -111,12 +119,54 @@ export interface MembershipTierCreateData {
|
||||
benefits?: string;
|
||||
}
|
||||
|
||||
export interface MembershipTierUpdateData {
|
||||
name?: string;
|
||||
export interface Event {
|
||||
id: number;
|
||||
title: string;
|
||||
description: string | null;
|
||||
event_date: string;
|
||||
event_time: string | null;
|
||||
location: string | null;
|
||||
max_attendees: number | null;
|
||||
status: string;
|
||||
created_by: number;
|
||||
created_at: string;
|
||||
updated_at: string;
|
||||
rsvp_status?: string; // Current user's RSVP status
|
||||
}
|
||||
|
||||
export interface EventCreateData {
|
||||
title: string;
|
||||
description?: string;
|
||||
annual_fee?: number;
|
||||
benefits?: string;
|
||||
is_active?: boolean;
|
||||
event_date: string;
|
||||
event_time?: string;
|
||||
location?: string;
|
||||
max_attendees?: number;
|
||||
}
|
||||
|
||||
export interface EventUpdateData {
|
||||
title?: string;
|
||||
description?: string;
|
||||
event_date?: string;
|
||||
event_time?: string;
|
||||
location?: string;
|
||||
max_attendees?: number;
|
||||
status?: string;
|
||||
}
|
||||
|
||||
export interface EventRSVP {
|
||||
id: number;
|
||||
event_id: number;
|
||||
user_id: number;
|
||||
status: string;
|
||||
attended: boolean;
|
||||
notes: string | null;
|
||||
created_at: string;
|
||||
updated_at: string;
|
||||
}
|
||||
|
||||
export interface EventRSVPData {
|
||||
status: string;
|
||||
notes?: string;
|
||||
}
|
||||
|
||||
export const authService = {
|
||||
@@ -245,3 +295,45 @@ export const paymentService = {
|
||||
return response.data;
|
||||
}
|
||||
};
|
||||
|
||||
export const eventService = {
|
||||
async getAllEvents(): Promise<Event[]> {
|
||||
const response = await api.get('/events/');
|
||||
return response.data;
|
||||
},
|
||||
|
||||
async getUpcomingEvents(): Promise<Event[]> {
|
||||
const response = await api.get('/events/upcoming');
|
||||
return response.data;
|
||||
},
|
||||
|
||||
async createEvent(data: EventCreateData): Promise<Event> {
|
||||
const response = await api.post('/events/', data);
|
||||
return response.data;
|
||||
},
|
||||
|
||||
async updateEvent(eventId: number, data: EventUpdateData): Promise<Event> {
|
||||
const response = await api.put(`/events/${eventId}`, data);
|
||||
return response.data;
|
||||
},
|
||||
|
||||
async deleteEvent(eventId: number): Promise<{ message: string }> {
|
||||
const response = await api.delete(`/events/${eventId}`);
|
||||
return response.data;
|
||||
},
|
||||
|
||||
async getEventRSVPs(eventId: number): Promise<EventRSVP[]> {
|
||||
const response = await api.get(`/events/${eventId}/rsvps`);
|
||||
return response.data;
|
||||
},
|
||||
|
||||
async createOrUpdateRSVP(eventId: number, data: EventRSVPData): Promise<EventRSVP> {
|
||||
const response = await api.post(`/events/${eventId}/rsvp`, data);
|
||||
return response.data;
|
||||
},
|
||||
|
||||
async getMyRSVPs(): Promise<EventRSVP[]> {
|
||||
const response = await api.get('/events/my-rsvps');
|
||||
return response.data;
|
||||
}
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user