105 lines
2.9 KiB
JavaScript
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
|
|
}
|
|
}
|