import { create } from 'zustand'; import { prafrotService } from '../services/prafrotService'; import { toast } from 'sonner'; import { extractFriendlyMessage } from '../utils/errorMessages'; export const useAvailability = create((set, get) => ({ availabilities: [], loading: false, error: null, fetchAvailabilities: async () => { set({ loading: true, error: null }); try { const data = await prafrotService.getAvailability(); set({ availabilities: Array.isArray(data) ? data : (data.data || []) }); } catch (error) { const friendlyMsg = extractFriendlyMessage(error); set({ error: friendlyMsg }); toast.error(friendlyMsg); } finally { set({ loading: false }); } }, createAvailability: async (payload) => { set({ loading: true }); try { await prafrotService.createAvailability(payload); toast.success('Disponibilidade registrada com sucesso!'); get().fetchAvailabilities(); return true; } catch (error) { const friendlyMsg = extractFriendlyMessage(error); toast.error(friendlyMsg); return false; } finally { set({ loading: false }); } }, updateAvailability: async (id, payload) => { set({ loading: true }); try { await prafrotService.updateAvailability(id, payload); toast.success('Disponibilidade atualizada com sucesso!'); get().fetchAvailabilities(); return true; } catch (error) { const friendlyMsg = extractFriendlyMessage(error); toast.error(friendlyMsg); return false; } finally { set({ loading: false }); } }, deleteAvailability: async (id) => { if (!window.confirm('Tem certeza que deseja excluir este registro de disponibilidade?')) return; set({ loading: true }); try { await prafrotService.deleteAvailability(id); toast.success('Disponibilidade excluĂ­da com sucesso!'); get().fetchAvailabilities(); return true; } catch (error) { const friendlyMsg = extractFriendlyMessage(error); toast.error(friendlyMsg); return false; } finally { set({ loading: false }); } } }));