Files
Inventory_frontend/app/composables/useComposants.js
2025-09-17 15:10:01 +02:00

136 lines
4.0 KiB
JavaScript

import { ref } from 'vue'
import { useToast } from './useToast'
import { useApi } from './useApi'
const composants = ref([])
const loading = ref(false)
export function useComposants() {
const { showSuccess, showError, showInfo } = useToast()
const { get, post, patch, delete: del } = useApi()
const loadComposants = async () => {
loading.value = true
try {
const result = await get('/composants')
if (result.success) {
composants.value = result.data
showInfo(`Chargement de ${composants.value.length} composant(s) réussi`)
}
} catch (error) {
console.error('Erreur lors du chargement des composants:', error)
} finally {
loading.value = false
}
}
const getComposantsByMachine = async (machineId) => {
loading.value = true
try {
const result = await get(`/composants/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 composants:', error)
return { success: false, error: error.message }
} finally {
loading.value = false
}
}
const getComposantHierarchy = async (machineId) => {
loading.value = true
try {
const result = await get(`/composants/hierarchy/${machineId}`)
if (result.success) {
return { success: true, data: result.data }
}
return { success: false, error: result.error }
} catch (error) {
console.error('Erreur lors du chargement de la hiérarchie:', error)
return { success: false, error: error.message }
} finally {
loading.value = false
}
}
const createComposant = async (composantData) => {
loading.value = true
try {
const result = await post('/composants', composantData)
if (result.success) {
composants.value.push(result.data)
showSuccess(`Composant "${composantData.name}" créé avec succès`)
}
return result
} catch (error) {
console.error('Erreur lors de la création du composant:', error)
return { success: false, error: error.message }
} finally {
loading.value = false
}
}
const updateComposantData = async (id, composantData) => {
loading.value = true
try {
const result = await patch(`/composants/${id}`, composantData)
if (result.success) {
const updated = result.data
const index = composants.value.findIndex(comp => comp.id === id)
if (index !== -1) {
composants.value[index] = updated
}
showSuccess(`Composant "${updated?.name || composantData.name || ''}" mis à jour avec succès`)
}
return result
} catch (error) {
console.error('Erreur lors de la mise à jour du composant:', error)
return { success: false, error: error.message }
} finally {
loading.value = false
}
}
const deleteComposant = async (id) => {
loading.value = true
try {
const result = await del(`/composants/${id}`)
if (result.success) {
const deletedComposant = composants.value.find(comp => comp.id === id)
composants.value = composants.value.filter(comp => comp.id !== id)
showSuccess(`Composant "${deletedComposant?.name || 'inconnu'}" supprimé avec succès`)
}
return result
} catch (error) {
console.error('Erreur lors de la suppression du composant:', error)
return { success: false, error: error.message }
} finally {
loading.value = false
}
}
const getComposantById = (id) => {
return composants.value.find(comp => comp.id === id)
}
const getComposants = () => composants.value
const isLoading = () => loading.value
return {
composants,
loading,
loadComposants,
getComposantsByMachine,
getComposantHierarchy,
createComposant,
updateComposant: updateComposantData,
deleteComposant,
getComposantById,
getComposants,
isLoading
}
}