import { MockupExposeLeadProvider } from '../provider/MockupExposeLeadProvider' import type { CreateExposeLeadInput, ExposeLead } from '../domain/exposeLead' import type { ItemResponse, ListResponse } from './types' import { throwServiceError } from './errors' import { useSessionStore } from '../stores/sessionStore' const provider = MockupExposeLeadProvider export const exposeLeadService = { async getAll(): Promise> { try { const data = await provider.getAll() return { data, meta: { total: data.length, page: 1, pageSize: data.length, hasMore: false } } } catch (err) { throwServiceError(err) } }, async getById(id: string): Promise> { try { return { data: await provider.getById(id) } } catch (err) { throwServiceError(err) } }, /** * Weiterleitung von Nora an Livia. * * Ohne mindestens ein Objekt hätte Livia nichts, woraus sie ein Exposé bauen * könnte — deshalb ist die Objektempfehlung Pflicht und keine Kür. */ async create(input: CreateExposeLeadInput): Promise> { try { if (input.propertyIds.length === 0) { throw new Error('Bitte mindestens ein Objekt auswählen.') } const user = useSessionStore.getState().currentUser const data = await provider.create({ ...input, forwardedBy: input.forwardedBy ?? user?.name, }) return { data } } catch (err) { throwServiceError(err) } }, async archive(id: string): Promise> { try { return { data: await provider.archive(id) } } catch (err) { throwServiceError(err) } }, }