import api from '../../../services/api'; import type { LocationCreateRequest, LocationCreateResponse, LocationDeleteResponse, LocationListResponse, LocationPaginatedResponse, LocationUpdateRequest, LocationUpdateResponse, } from '../types/locations.interfaces'; const locationServices = { async getLocations( paginated?: boolean, name?: string, city?: string, state?: string, country?: string ): Promise { try { const params: any = {}; if (paginated === false) params.paginate = false; if (name) params.name = name; if (city) params.city = city; if (state) params.state = state; if (country) params.country = country; const response = await api.get('/api/locations', { params }); return response.data; } catch (error) { console.error('Error fetching locations:', error); throw error; } }, async getLocationById(locationId: number): Promise { try { const response = await api.get(`/api/locations/${locationId}`); return response.data; } catch (error) { console.error(`Error fetching location with ID ${locationId}:`, error); throw error; } }, async createLocation(data: LocationCreateRequest): Promise { try { const response = await api.post('/api/locations', data); return response.data; } catch (error) { console.error('Error creating location:', error); throw error; } }, async updateLocation( locationId: number, data: LocationUpdateRequest, method: 'patch' | 'put' = 'patch' ): Promise { try { const response = await api[method](`/api/locations/${locationId}`, data); return response.data; } catch (error) { console.error(`Error updating location with ID ${locationId}:`, error); throw error; } }, async deleteLocation(locationId: number): Promise { try { const response = await api.delete(`/api/locations/${locationId}`); return response.data; } catch (error) { console.error(`Error deleting location with ID ${locationId}:`, error); throw error; } }, }; export { locationServices };