Files
Inventory_frontend/app/composables/useMachines.js

178 lines
5.3 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import { ref } from 'vue'
import { useToast } from './useToast'
import { useApi } from './useApi'
const machines = ref([])
const loading = ref(false)
export function useMachines() {
const { showSuccess, showError, showInfo } = useToast()
const { get, post, patch, delete: del } = useApi()
const loadMachines = async () => {
loading.value = true
try {
const result = await get('/machines')
if (result.success) {
machines.value = result.data
showInfo(`Chargement de ${machines.value.length} machine(s) réussi`)
}
} catch (error) {
console.error('Erreur lors du chargement des machines:', error)
} finally {
loading.value = false
}
}
const createMachine = async (machineData) => {
loading.value = true
try {
const result = await post('/machines', machineData)
if (result.success) {
machines.value.push(result.data)
showSuccess(`Machine "${machineData.name}" créée avec succès`)
}
return result
} catch (error) {
console.error('Erreur lors de la création de la machine:', error)
return { success: false, error: error.message }
} finally {
loading.value = false
}
}
const createMachineFromType = async (machineData, typeMachine) => {
// Créer la machine avec la structure héritée du type
const machineWithStructure = {
...machineData,
typeMachineId: typeMachine.id,
// La structure sera automatiquement héritée du type
// Les composants et pièces seront créés automatiquement
}
return await createMachine(machineWithStructure)
}
const updateMachineData = async (id, machineData) => {
loading.value = true
try {
const result = await patch(`/machines/${id}`, machineData)
if (result.success) {
const index = machines.value.findIndex(machine => machine.id === id)
if (index !== -1) {
machines.value[index] = result.data
}
showSuccess(`Machine "${result.data?.name || machineData.name || ''}" mise à jour avec succès`)
}
return result
} catch (error) {
console.error('Erreur lors de la mise à jour de la machine:', error)
return { success: false, error: error.message }
} finally {
loading.value = false
}
}
const reconfigureSkeleton = async (machineId, payload) => {
if (!machineId) {
return { success: false, error: 'Identifiant de machine manquant' }
}
loading.value = true
try {
const result = await patch(`/machines/${machineId}/skeleton`, payload)
if (result.success) {
const index = machines.value.findIndex(machine => machine.id === machineId)
if (index !== -1) {
machines.value[index] = result.data?.machine || result.data
}
showSuccess('Structure de la machine mise à jour avec succès')
}
return result
} catch (error) {
console.error('Erreur lors de la reconfiguration du squelette de la machine:', error)
return { success: false, error: error.message }
} finally {
loading.value = false
}
}
const addMissingCustomFields = async (machineId, { showToast: shouldShowToast = true } = {}) => {
if (!machineId) {
const error = 'Identifiant de machine manquant'
if (shouldShowToast) {
showError(error)
}
return { success: false, error }
}
try {
const result = await post(`/machines/${machineId}/add-custom-fields`)
if (result.success) {
if (shouldShowToast) {
showSuccess('Champs personnalisés complétés avec succès')
}
} else if (shouldShowToast && result.error) {
showError(result.error)
}
return result
} catch (error) {
console.error('Erreur lors de lajout des champs personnalisés manquants:', error)
if (shouldShowToast) {
showError('Erreur lors de la complétion des champs personnalisés')
}
return { success: false, error: error.message }
}
}
const deleteMachine = async (id) => {
loading.value = true
try {
const result = await del(`/machines/${id}`)
if (result.success) {
const deletedMachine = machines.value.find(machine => machine.id === id)
machines.value = machines.value.filter(machine => machine.id !== id)
showSuccess(`Machine "${deletedMachine?.name || 'inconnu'}" supprimée avec succès`)
}
return result
} catch (error) {
console.error('Erreur lors de la suppression de la machine:', error)
return { success: false, error: error.message }
} finally {
loading.value = false
}
}
const getMachineById = (id) => {
return machines.value.find(machine => machine.id === id)
}
const getMachinesBySite = (siteId) => {
return machines.value.filter(machine => machine.siteId === siteId)
}
const getMachinesByType = (typeMachineId) => {
return machines.value.filter(machine => machine.typeMachineId === typeMachineId)
}
const getMachines = () => machines.value
const isLoading = () => loading.value
return {
machines,
loading,
loadMachines,
createMachine,
createMachineFromType,
updateMachine: updateMachineData,
reconfigureSkeleton,
deleteMachine,
getMachineById,
getMachinesBySite,
getMachinesByType,
getMachines,
isLoading,
addMissingCustomFields
}
}