import m from "mithril" /** * Datenmodell für einen Kunden. */ export interface iKunde { id: number name: string strasse: string plz: string ort: string land: string } /** * In-Memory-Datenspeicher für Kunden. Wird als Fallback solange verwendet, * bis die serverseitigen REST-Endpunkte verfügbar sind. */ export const kundenDaten: iKunde[] = [ {id: 1, name: "Musterfirma GmbH", strasse: "Musterstraße 1", plz: "12345", ort: "Musterstadt", land: "Deutschland"}, {id: 2, name: "Beispiel AG", strasse: "Beispielweg 2", plz: "54321", ort: "Beispielstadt", land: "Deutschland"}, {id: 3, name: "Test Unternehmen", strasse: "Testallee 3", plz: "67890", ort: "Testdorf", land: "Österreich"} ] /** * Liefert die nächste freie Kunden-ID auf Basis des In-Memory-Speichers. * Sobald die serverseitige ID-Vergabe verfügbar ist, entfällt diese Funktion. */ export function getNewKundeId(): number { if (kundenDaten.length === 0) { return 1 } return Math.max(...kundenDaten.map((kunde: iKunde) => kunde.id)) + 1 } /** * Fügt einen neuen Kunden dem In-Memory-Speicher hinzu. */ export function addKunde(kunde: iKunde): void { kundenDaten.push(kunde) } /** * Aktualisiert einen bestehenden Kunden im In-Memory-Speicher. */ export function updateKunde(kunde: iKunde): void { const index = kundenDaten.findIndex((k: iKunde) => k.id === kunde.id) if (index !== -1) { kundenDaten[index] = kunde } } /** * Liefert eine Kopie aller Kunden aus dem In-Memory-Speicher. */ export function getKunden(): iKunde[] { return [...kundenDaten] } /* ------------------------------------------------------------------ */ /* REST-API-Aufrufe (Client-Seite) */ /* ------------------------------------------------------------------ */ /* Die folgenden Funktionen kapseln die Kommunikation mit den */ /* serverseitigen REST-Endpunkten. Die Endpunkte sind noch nicht */ /* implementiert und werden später nachgereicht. */ /* ------------------------------------------------------------------ */ /** * Basis-Pfad der Kunden-REST-Endpunkte. */ const KUNDE_REST_BASE = "/xhr/kunde" /** * Lädt die Kundenliste vom Server. */ export function fetchKunden(): Promise { return m.request({ method: "GET", url: KUNDE_REST_BASE + "/list" }).then((result) => result as iKunde[]) } /** * Lädt einen einzelnen Kunden anhand seiner ID vom Server. */ export function fetchKundeById(id: number): Promise { return m.request({ method: "GET", url: KUNDE_REST_BASE + "/get", params: {id: id} }).then((result) => result as iKunde) } /** * Legt einen neuen Kunden serverseitig an. */ export function createKundeREST(kunde: iKunde): Promise { return m.request({ method: "POST", url: KUNDE_REST_BASE + "/create", body: kunde }).then((result) => result as iKunde) } /** * Aktualisiert einen bestehenden Kunden serverseitig. */ export function updateKundeREST(kunde: iKunde): Promise { return m.request({ method: "PUT", url: KUNDE_REST_BASE + "/update", body: kunde }).then((result) => result as iKunde) } /** * Löscht einen Kunden serverseitig anhand seiner ID. */ export function deleteKundeREST(id: number): Promise { return m.request({ method: "DELETE", url: KUNDE_REST_BASE + "/delete", params: {id: id} }).then(() => undefined) }