import { ref } from 'vue' import { useApi, type ApiResponse } from './useApi' export interface CustomFieldValue { id: string customFieldId: string entityType: string entityId: string value: unknown [key: string]: unknown } export function useCustomFields() { const { apiCall } = useApi() const customFieldValues = ref([]) const loading = ref(false) // Créer une valeur de champ personnalisé const createCustomFieldValue = async (customFieldValueData: Record): Promise => { 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: (error as Error).message } } } // Obtenir les valeurs de champs personnalisés pour une entité const getCustomFieldValuesByEntity = async (entityType: string, entityId: string): Promise => { try { loading.value = true const result = await apiCall(`/custom-fields/values/${entityType}/${entityId}`, { method: 'GET', }) if (result.success) { customFieldValues.value = result.data as CustomFieldValue[] } return result } catch (error) { console.error('Erreur lors de la récupération des valeurs de champs personnalisés:', error) return { success: false, error: (error as Error).message } } finally { loading.value = false } } // Mettre à jour une valeur de champ personnalisé const updateCustomFieldValue = async (id: string, updateData: Record): Promise => { 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: (error as Error).message } } } // Créer ou mettre à jour une valeur de champ personnalisé const upsertCustomFieldValue = async ( customFieldId: string | null, entityType: string, entityId: string, value: unknown, metadata: Record = {}, ): Promise => { 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: (error as Error).message } } } // Supprimer une valeur de champ personnalisé const deleteCustomFieldValue = async (id: string): Promise => { 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: (error as Error).message } } } return { customFieldValues, loading, createCustomFieldValue, getCustomFieldValuesByEntity, updateCustomFieldValue, upsertCustomFieldValue, deleteCustomFieldValue, } }