import { ref } from 'vue' import { useToast } from './useToast' import { useApi } from './useApi' const pieces = ref([]) const loading = ref(false) export function usePieces() { const { showSuccess, showError, showInfo } = useToast() const { get, post, patch, delete: del } = useApi() const loadPieces = async () => { loading.value = true try { const result = await get('/pieces') if (result.success) { pieces.value = result.data showInfo(`Chargement de ${pieces.value.length} pièce(s) réussi`) } } catch (error) { console.error('Erreur lors du chargement des pièces:', error) } finally { loading.value = false } } const getPiecesByMachine = async (machineId) => { loading.value = true try { const result = await get(`/pieces/machine/${machineId}`) if (result.success) { return { success: true, data: result.data } } return { success: false, error: result.error } } catch (error) { console.error('Erreur lors du chargement des pièces:', error) return { success: false, error: error.message } } finally { loading.value = false } } const getPiecesByComposant = async (composantId) => { loading.value = true try { const result = await get(`/pieces/composant/${composantId}`) if (result.success) { return { success: true, data: result.data } } return { success: false, error: result.error } } catch (error) { console.error('Erreur lors du chargement des pièces:', error) return { success: false, error: error.message } } finally { loading.value = false } } const createPiece = async (pieceData) => { loading.value = true try { const result = await post('/pieces', pieceData) if (result.success) { pieces.value.push(result.data) showSuccess(`Pièce "${pieceData.name}" créée avec succès`) } return result } catch (error) { console.error('Erreur lors de la création de la pièce:', error) return { success: false, error: error.message } } finally { loading.value = false } } const updatePieceData = async (id, pieceData) => { loading.value = true try { const result = await patch(`/pieces/${id}`, pieceData) if (result.success) { const index = pieces.value.findIndex(piece => piece.id === id) if (index !== -1) { pieces.value[index] = result.data } showSuccess(`Pièce "${pieceData.name}" mise à jour avec succès`) } return result } catch (error) { console.error('Erreur lors de la mise à jour de la pièce:', error) return { success: false, error: error.message } } finally { loading.value = false } } const deletePiece = async (id) => { loading.value = true try { const result = await del(`/pieces/${id}`) if (result.success) { const deletedPiece = pieces.value.find(piece => piece.id === id) pieces.value = pieces.value.filter(piece => piece.id !== id) showSuccess(`Pièce "${deletedPiece?.name || 'inconnu'}" supprimée avec succès`) } return result } catch (error) { console.error('Erreur lors de la suppression de la pièce:', error) return { success: false, error: error.message } } finally { loading.value = false } } const getPieceById = (id) => { return pieces.value.find(piece => piece.id === id) } const getPieces = () => pieces.value const isLoading = () => loading.value return { pieces, loading, loadPieces, getPiecesByMachine, getPiecesByComposant, createPiece, updatePiece: updatePieceData, deletePiece, getPieceById, getPieces, isLoading } }