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

109 lines
3.2 KiB
JavaScript

import { ref } from 'vue'
import { useApi } from './useApi'
import { useToast } from './useToast'
const constructeurs = ref([])
const loading = ref(false)
export function useConstructeurs() {
const { get, post, patch, delete: del } = useApi()
const { showSuccess, showError } = useToast()
const loadConstructeurs = async (search = '') => {
loading.value = true
try {
const query = search ? `?search=${encodeURIComponent(search)}` : ''
const result = await get(`/constructeurs${query}`)
if (result.success) {
constructeurs.value = result.data
}
return result
} catch (error) {
console.error('Erreur lors du chargement des constructeurs:', error)
return { success: false, error: error.message }
} finally {
loading.value = false
}
}
const searchConstructeurs = async (search = '') => {
return loadConstructeurs(search)
}
const createConstructeur = async (data) => {
loading.value = true
try {
const result = await post('/constructeurs', data)
if (result.success) {
constructeurs.value = [result.data, ...constructeurs.value]
showSuccess(`Constructeur "${result.data.name}" créé`)
} else if (result.error) {
showError(result.error)
}
return result
} catch (error) {
console.error('Erreur lors de la création du constructeur:', error)
showError("Impossible de créer le constructeur")
return { success: false, error: error.message }
} finally {
loading.value = false
}
}
const updateConstructeur = async (id, data) => {
loading.value = true
try {
const result = await patch(`/constructeurs/${id}`, data)
if (result.success) {
const index = constructeurs.value.findIndex(item => item.id === id)
if (index !== -1) {
constructeurs.value[index] = result.data
}
showSuccess(`Constructeur "${result.data.name}" mis à jour`)
} else if (result.error) {
showError(result.error)
}
return result
} catch (error) {
console.error('Erreur lors de la mise à jour du constructeur:', error)
showError("Impossible de mettre à jour le constructeur")
return { success: false, error: error.message }
} finally {
loading.value = false
}
}
const deleteConstructeur = async (id) => {
loading.value = true
try {
const result = await del(`/constructeurs/${id}`)
if (result.success) {
constructeurs.value = constructeurs.value.filter(item => item.id !== id)
showSuccess('Constructeur supprimé')
} else if (result.error) {
showError(result.error)
}
return result
} catch (error) {
console.error('Erreur lors de la suppression du constructeur:', error)
showError("Impossible de supprimer le constructeur")
return { success: false, error: error.message }
} finally {
loading.value = false
}
}
const getConstructeurById = (id) => constructeurs.value.find(item => item.id === id)
return {
constructeurs,
loading,
loadConstructeurs,
searchConstructeurs,
createConstructeur,
updateConstructeur,
deleteConstructeur,
getConstructeurById,
}
}