/*
|--------------------------------------------------------------------------
| Agência PSI
|--------------------------------------------------------------------------
| Criado e desenvolvido por Leonardo Nohama
|
| Tecnologia aplicada à escuta.
| Estrutura para o cuidado.
|
| Arquivo: src/features/agenda/composables/useAgendaEvents.js
| Data: 2026
| Local: São Carlos/SP — Brasil
|--------------------------------------------------------------------------
| © 2026 — Todos os direitos reservados
|--------------------------------------------------------------------------
*/
/**
 * useAgendaEvents.js
 *
 * Wrapper fino sobre agendaRepository — agrega estado reativo (rows/loading/error)
 * e delega toda a lógica de I/O ao repository. Mesmo padrão de useAgendaClinicEvents.
 *
 * Só gerencia eventos reais (agenda_eventos). Ocorrências virtuais de séries são
 * responsabilidade do useRecurrence.
 */

import { ref } from 'vue';
import {
    listMyAgendaEvents,
    createAgendaEvento,
    updateAgendaEvento,
    deleteAgendaEvento
} from '@/features/agenda/services/agendaRepository';

export function useAgendaEvents() {
    const rows = ref([]);
    const loading = ref(false);
    const error = ref(null);

    async function loadMyRange(startISO, endISO, ownerId) {
        if (!ownerId) return;
        loading.value = true;
        error.value = null;
        try {
            rows.value = await listMyAgendaEvents({ startISO, endISO, ownerId });
        } catch (e) {
            error.value = e?.message || 'Erro ao carregar eventos';
            rows.value = [];
        } finally {
            loading.value = false;
        }
    }

    async function create(payload) {
        return createAgendaEvento(payload);
    }

    async function update(id, patch) {
        return updateAgendaEvento(id, patch);
    }

    async function remove(id) {
        await deleteAgendaEvento(id);
    }

    return { rows, loading, error, loadMyRange, create, update, remove };
}
