Add employee livesearch lookup

This commit is contained in:
2026-06-07 15:04:50 +02:00
parent b6180867ef
commit 27d28a8767
9 changed files with 77 additions and 4 deletions
+33
View File
@@ -21,6 +21,7 @@ import type {
Logger,
Maschine,
MaschinenKategorie,
Mitarbeiter,
Rechnungsdaten,
} from './types';
@@ -504,6 +505,38 @@ export class AgrarmonitorConnector implements AgrarmonitorConnectorResult {
});
}
async getMitarbeiter(suchstring = '', mitarbeitergruppe = 0): Promise<Mitarbeiter[]> {
const response = await this.http.get('/module/mitarbeiter/livesearch.php', {
params: {
suchstring,
mitarbeiter_aktiv: 1,
mitarbeitergruppe,
itemsperpage: 100000,
seite: 1,
},
});
await this.saveSession();
const document = this.parseHtmlDocument(response.data);
const rows = Array.from(
document.querySelectorAll<HTMLTableRowElement>(
'table#mitarbeiter_table tbody tr, table.mitarbeiter_table tbody tr'
)
);
return rows.map(row => {
const cells = Array.from(row.querySelectorAll<HTMLTableCellElement>('td'));
return {
id: this.parseNumber(row.getAttribute('data-id') ?? row.id),
nummer: cells[0]?.textContent?.trim() ?? '',
nachname: cells[1]?.textContent?.trim() ?? '',
vorname: cells[2]?.textContent?.trim() ?? '',
};
});
}
private createHttpClient(): AxiosInstance {
const client = wrapper(
axios.create({
+8
View File
@@ -60,6 +60,7 @@ export interface AgrarmonitorConnectorResult {
getArtikelEinheiten(): Promise<ArtikelEinheit[]>;
getArtikelKategorien(): Promise<ArtikelKategorie[]>;
getArtikel(artikelGruppe: number, suchstring?: string): Promise<Artikel[]>;
getMitarbeiter(suchstring?: string, mitarbeitergruppe?: number): Promise<Mitarbeiter[]>;
}
export interface AgrarmonitorFreischaltungStatus {
@@ -190,3 +191,10 @@ export interface Artikel {
nummer: string;
bezeichnung: string;
}
export interface Mitarbeiter {
id: number;
nummer: string;
nachname: string;
vorname: string;
}