import { create } from 'zustand'; import { fleetService } from '../services/fleetService'; import { toast } from 'sonner'; export const useVehicles = create((set, get) => ({ vehicles: [], availability: [], // Store availability data statusList: [], // Store status data loading: false, error: null, fetchVehicles: async () => { set({ loading: true, error: null }); try { const data = await fleetService.getVehicles(); // Ensure data is an array, handle different API return structures if needed set({ vehicles: Array.isArray(data) ? data : (data.data || []) }); } catch (error) { set({ error: error.message }); toast.error('Erro ao carregar veículos: ' + error.message); } finally { set({ loading: false }); } }, createVehicle: async (vehicleData) => { set({ loading: true }); try { await fleetService.createVehicle(vehicleData); toast.success('Veículo cadastrado com sucesso!'); get().fetchVehicles(); // Refresh list return true; } catch (error) { toast.error('Erro ao cadastrar veículo: ' + error.message); return false; } finally { set({ loading: false }); } }, updateVehicle: async (id, vehicleData) => { set({ loading: true }); try { await fleetService.updateVehicle(id, vehicleData); toast.success('Veículo atualizado com sucesso!'); get().fetchVehicles(); return true; } catch (error) { toast.error('Erro ao atualizar veículo: ' + error.message); return false; } finally { set({ loading: false }); } }, // --- Disponibilidade --- fetchAvailability: async () => { try { const data = await fleetService.getAvailability(); set({ availability: Array.isArray(data) ? data : (data.data || []) }); } catch (error) { console.error('Erro ao buscar disponibilidade', error); } }, createAvailability: async (data) => { try { await fleetService.createAvailability(data); toast.success('Disponibilidade registrada!'); get().fetchAvailability(); } catch (error) { toast.error('Erro ao registrar disponibilidade: ' + error.message); } }, updateAvailability: async (id, data) => { try { await fleetService.updateAvailability(id, data); toast.success('Disponibilidade atualizada!'); get().fetchAvailability(); } catch (error) { toast.error('Erro ao atualizar disponibilidade: ' + error.message); } }, // --- Status --- fetchStatus: async () => { try { const data = await fleetService.getStatus(); set({ statusList: Array.isArray(data) ? data : (data.data || []) }); } catch (error) { console.error('Erro ao buscar status', error); } }, updateStatus: async (id, data) => { try { await fleetService.updateStatus(id, data); toast.success('Status atualizado!'); get().fetchStatus(); } catch (error) { toast.error('Erro ao atualizar status: ' + error.message); } } }));