import { useState, useEffect } from 'react'; import { apiClient } from '../services/api-client'; import { Chantier } from '../types/btp'; export const useChantiers = () => { const [chantiers, setChantiers] = useState([]); const [loading, setLoading] = useState(true); const [error, setError] = useState(null); const fetchChantiers = async () => { try { setLoading(true); const response = await apiClient.get('/chantiers'); setChantiers(response.data); setError(null); } catch (err) { console.error('Erreur lors du chargement des chantiers:', err); setError('Erreur lors du chargement des chantiers'); } finally { setLoading(false); } }; const getChantierById = async (id: string) => { try { const response = await apiClient.get(`/chantiers/${id}`); return response.data; } catch (err) { console.error('Erreur lors du chargement du chantier:', err); throw err; } }; const createChantier = async (chantier: Partial) => { try { const response = await apiClient.post('/chantiers', chantier); await fetchChantiers(); return response.data; } catch (err) { console.error('Erreur lors de la création du chantier:', err); throw err; } }; const updateChantier = async (id: string, chantier: Partial) => { try { const response = await apiClient.put(`/chantiers/${id}`, chantier); await fetchChantiers(); return response.data; } catch (err) { console.error('Erreur lors de la mise à jour du chantier:', err); throw err; } }; const deleteChantier = async (id: string) => { try { await apiClient.delete(`/chantiers/${id}`); await fetchChantiers(); } catch (err) { console.error('Erreur lors de la suppression du chantier:', err); throw err; } }; useEffect(() => { fetchChantiers(); }, []); return { chantiers, loading, error, refresh: fetchChantiers, getChantierById, createChantier, updateChantier, deleteChantier }; };