Files
kbcrm/Client/models/kontaktadresse.ts
T
gg e9a2f48ede Kontaktadresse: Neues Feld Position, Filter-Funktionen null-sicher, Projektnamen-Spalte entfernt
- Server: Neue Spalte position in Kontaktadresse-Modell (String(200), nullable)
- Server: Migration V01_04 (ALTER TABLE kontaktadressen ADD COLUMN position)
- Server: position in Geschäftslogik create/update aufgenommen
- Server: CLI-Musterdaten um Position ergänzt (Geschäftsführer, IT-Leiter etc.)
- Client: position in iKontaktadresse-Interface, View nach Firma, Columnmapper, Filter
- Client: Projektnamen-Spalte aus Kontaktadressenliste entfernt (steht in Überschrift)
- Client: Filter-Funktionen in allen Listen null-sicher (kunde, kontakt, projekt, kontaktadresse, call_log)

Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
2026-09-04 14:58:52 +02:00

92 lines
2.8 KiB
TypeScript

import m from "mithril"
/**
* Datenmodell für eine Kontaktadresse (Akquise-Ziel innerhalb eines Projekts).
* Jede Kontaktadresse ist genau einem Projekt zugeordnet (FK projekt_id).
* Die Feldnamen entsprechen den serverseitigen ORM-Spalten (snake_case).
* projekt_name ist keine ORM-Spalte, sondern wird serverseitig aus der
* Projekt-Relationship abgeleitet und im JSON ergänzt.
*/
export interface iKontaktadresse {
id: number
projekt_id: number
projekt_name: string
anrede: string
name: string
firma: string
position: string
telefon: string
email: string
strasse: string
plz: string
ort: string
land: string
notiz: string
}
/* ------------------------------------------------------------------ */
/* REST-API-Aufrufe (Client-Seite) */
/* ------------------------------------------------------------------ */
/* Die folgenden Funktionen kapseln die Kommunikation mit den */
/* serverseitigen REST-Endpunkten (/xhr/kontaktadresse/*). */
/* ------------------------------------------------------------------ */
/**
* Basis-Pfad der Kontaktadressen-REST-Endpunkte.
*/
const KONTAKTADRESSE_REST_BASE = "/xhr/kontaktadresse"
/**
* Lädt die Kontaktadressenliste vom Server.
*/
export function fetchKontaktadressen(): Promise<iKontaktadresse[]> {
return m.request({
method: "GET",
url: KONTAKTADRESSE_REST_BASE + "/list"
}).then((result) => result as iKontaktadresse[])
}
/**
* Lädt eine einzelne Kontaktadresse anhand ihrer ID vom Server.
*/
export function fetchKontaktadresseById(id: number): Promise<iKontaktadresse> {
return m.request({
method: "GET",
url: KONTAKTADRESSE_REST_BASE + "/get",
params: {id: id}
}).then((result) => result as iKontaktadresse)
}
/**
* Legt eine neue Kontaktadresse serverseitig an.
*/
export function createKontaktadresseREST(kontaktadresse: iKontaktadresse): Promise<iKontaktadresse> {
return m.request({
method: "POST",
url: KONTAKTADRESSE_REST_BASE + "/create",
body: kontaktadresse
}).then((result) => result as iKontaktadresse)
}
/**
* Aktualisiert eine bestehende Kontaktadresse serverseitig.
*/
export function updateKontaktadresseREST(kontaktadresse: iKontaktadresse): Promise<iKontaktadresse> {
return m.request({
method: "PUT",
url: KONTAKTADRESSE_REST_BASE + "/update",
body: kontaktadresse
}).then((result) => result as iKontaktadresse)
}
/**
* Löscht eine Kontaktadresse serverseitig anhand ihrer ID.
*/
export function deleteKontaktadresseREST(id: number): Promise<void> {
return m.request({
method: "DELETE",
url: KONTAKTADRESSE_REST_BASE + "/delete",
params: {id: id}
}).then(() => undefined)
}