83 lines
2.3 KiB
JavaScript
83 lines
2.3 KiB
JavaScript
import axios from 'axios'
|
|
|
|
const API_BASE_URL = window.ENV?.VITE_API_URL || import.meta.env.VITE_API_URL || 'http://localhost:8000'
|
|
|
|
const api = axios.create({
|
|
baseURL: API_BASE_URL,
|
|
headers: {
|
|
'Content-Type': 'application/json',
|
|
},
|
|
})
|
|
|
|
// Guest API calls
|
|
export const getGuests = async () => {
|
|
const response = await api.get('/guests/')
|
|
return response.data
|
|
}
|
|
|
|
export const getGuest = async (id) => {
|
|
const response = await api.get(`/guests/${id}`)
|
|
return response.data
|
|
}
|
|
|
|
export const createGuest = async (guest) => {
|
|
const response = await api.post('/guests/', guest)
|
|
return response.data
|
|
}
|
|
|
|
export const updateGuest = async (id, guest) => {
|
|
const response = await api.put(`/guests/${id}`, guest)
|
|
return response.data
|
|
}
|
|
|
|
export const deleteGuest = async (id) => {
|
|
const response = await api.delete(`/guests/${id}`)
|
|
return response.data
|
|
}
|
|
|
|
export const deleteGuestsBulk = async (guestIds) => {
|
|
const response = await api.post('/guests/bulk-delete', guestIds)
|
|
return response.data
|
|
}
|
|
|
|
export const undoImport = async (owner) => {
|
|
const response = await api.delete(`/guests/undo-import/${encodeURIComponent(owner)}`)
|
|
return response.data
|
|
}
|
|
|
|
export const getOwners = async () => {
|
|
const response = await api.get('/guests/owners/')
|
|
return response.data
|
|
}
|
|
|
|
export const searchGuests = async ({ query = '', rsvpStatus = '', mealPreference = '', owner = '' }) => {
|
|
const params = new URLSearchParams()
|
|
if (query) params.append('query', query)
|
|
if (rsvpStatus) params.append('rsvp_status', rsvpStatus)
|
|
if (mealPreference) params.append('meal_preference', mealPreference)
|
|
if (owner) params.append('owner', owner)
|
|
|
|
const response = await api.get(`/guests/search/?${params.toString()}`)
|
|
return response.data
|
|
}
|
|
|
|
export const importGoogleContacts = async (accessToken) => {
|
|
const response = await api.post('/import/google', null, {
|
|
params: { access_token: accessToken }
|
|
})
|
|
return response.data
|
|
}
|
|
|
|
// Public endpoints for guest self-service
|
|
export const getGuestByPhone = async (phoneNumber) => {
|
|
const response = await api.get(`/public/guest/${encodeURIComponent(phoneNumber)}`)
|
|
return response.data
|
|
}
|
|
|
|
export const updateGuestByPhone = async (phoneNumber, guestData) => {
|
|
const response = await api.put(`/public/guest/${encodeURIComponent(phoneNumber)}`, guestData)
|
|
return response.data
|
|
}
|
|
|
|
export default api
|