Files
Inventory/app/composables/useCustomFields.js
2025-09-30 10:46:46 +02:00

105 lines
2.9 KiB
JavaScript

import { ref } from 'vue'
import { useApi } from './useApi'
export function useCustomFields () {
const { apiCall } = useApi()
const customFieldValues = ref([])
const loading = ref(false)
// Créer une valeur de champ personnalisé
const createCustomFieldValue = async (customFieldValueData) => {
try {
const result = await apiCall('/custom-fields/values', {
method: 'POST',
body: JSON.stringify(customFieldValueData)
})
return result
} catch (error) {
console.error('Erreur lors de la création de la valeur de champ personnalisé:', error)
return { success: false, error }
}
}
// Obtenir les valeurs de champs personnalisés pour une entité
const getCustomFieldValuesByEntity = async (entityType, entityId) => {
try {
loading.value = true
const result = await apiCall(`/custom-fields/values/${entityType}/${entityId}`, {
method: 'GET'
})
if (result.success) {
customFieldValues.value = result.data
}
return result
} catch (error) {
console.error('Erreur lors de la récupération des valeurs de champs personnalisés:', error)
return { success: false, error }
} finally {
loading.value = false
}
}
// Mettre à jour une valeur de champ personnalisé
const updateCustomFieldValue = async (id, updateData) => {
try {
const result = await apiCall(`/custom-fields/values/${id}`, {
method: 'PATCH',
body: JSON.stringify(updateData)
})
return result
} catch (error) {
console.error('Erreur lors de la mise à jour de la valeur de champ personnalisé:', error)
return { success: false, error }
}
}
// Créer ou mettre à jour une valeur de champ personnalisé
const upsertCustomFieldValue = async (
customFieldId,
entityType,
entityId,
value,
metadata = {},
) => {
try {
const result = await apiCall('/custom-fields/values/upsert', {
method: 'POST',
body: JSON.stringify({
customFieldId,
entityType,
entityId,
value,
...metadata
})
})
return result
} catch (error) {
console.error('Erreur lors de la création/mise à jour de la valeur de champ personnalisé:', error)
return { success: false, error }
}
}
// Supprimer une valeur de champ personnalisé
const deleteCustomFieldValue = async (id) => {
try {
const result = await apiCall(`/custom-fields/values/${id}`, {
method: 'DELETE'
})
return result
} catch (error) {
console.error('Erreur lors de la suppression de la valeur de champ personnalisé:', error)
return { success: false, error }
}
}
return {
customFieldValues,
loading,
createCustomFieldValue,
getCustomFieldValuesByEntity,
updateCustomFieldValue,
upsertCustomFieldValue,
deleteCustomFieldValue
}
}