This commit is contained in:
Matthias Hochmeister
2026-03-13 21:35:12 +01:00
parent 7245cd577e
commit 8941dc7e09

View File

@@ -92,35 +92,34 @@ export async function scrapeAll(username: string, password: string): Promise<{
member.wohnort = profileFields.wohnort; member.wohnort = profileFields.wohnort;
member.plz = profileFields.plz; member.plz = profileFields.plz;
// Extract mitgliedschaft params from the current URL for constructing sub-section URLs. // Extract mitgliedschaft + person params from the current URL for constructing sub-section URLs.
// PersonenForm.aspx is in the personen module; sub-sections are in mitgliedschaften module. // PersonenForm.aspx is in the personen module; sub-sections are each in their own module.
// The links to Beförderungen/Untersuchungen/Fahrgenehmigungen live in the navigation // URL pattern: ?search=1&searchid_mitgliedschaften=X&id_personen=Y&id_mitgliedschaften=X&searchid_personen=Y&searchid_maskmode=
// frame (not the content mainFrame), so we construct the URLs directly.
const currentUrl = mainFrame.url(); const currentUrl = mainFrame.url();
const urlObj = new URL(currentUrl); const urlObj = new URL(currentUrl);
const idMitgliedschaft = urlObj.searchParams.get('id_mitgliedschaften'); const idMitgliedschaft = urlObj.searchParams.get('id_mitgliedschaften');
const idInstanzen = urlObj.searchParams.get('id_instanzen') ?? ID_INSTANZEN; const idPersonen = urlObj.searchParams.get('id_personen');
const idFeuerwehren = urlObj.searchParams.get('id_feuerwehren') ?? ID_FEUERWEHREN; const idInstanzen = urlObj.searchParams.get('id_instanzen') ?? ID_INSTANZEN;
// Ausbildungen // Ausbildungen
const quals = await scrapeAusbildungenFromDetailPage(mainFrame, member); const quals = await scrapeAusbildungenFromDetailPage(mainFrame, member);
ausbildungen.push(...quals); ausbildungen.push(...quals);
// Beförderungen // Beförderungen
const befos = idMitgliedschaft const befos = (idMitgliedschaft && idPersonen)
? await scrapeMemberBefoerderungen(mainFrame, member.standesbuchNr, idMitgliedschaft, idInstanzen, idFeuerwehren) ? await scrapeMemberBefoerderungen(mainFrame, member.standesbuchNr, idMitgliedschaft, idPersonen)
: []; : [];
befoerderungen.push(...befos); befoerderungen.push(...befos);
// Untersuchungen // Untersuchungen
const unters = idMitgliedschaft const unters = (idMitgliedschaft && idPersonen)
? await scrapeMemberUntersuchungen(mainFrame, member.standesbuchNr, idMitgliedschaft, idInstanzen, idFeuerwehren) ? await scrapeMemberUntersuchungen(mainFrame, member.standesbuchNr, idMitgliedschaft, idPersonen)
: []; : [];
untersuchungen.push(...unters); untersuchungen.push(...unters);
// Fahrgenehmigungen // Fahrgenehmigungen
const fahrg = idMitgliedschaft const fahrg = (idMitgliedschaft && idPersonen)
? await scrapeMemberFahrgenehmigungen(mainFrame, member.standesbuchNr, idMitgliedschaft, idInstanzen, idFeuerwehren) ? await scrapeMemberFahrgenehmigungen(mainFrame, member.standesbuchNr, idMitgliedschaft, idPersonen, idInstanzen)
: []; : [];
fahrgenehmigungen.push(...fahrg); fahrgenehmigungen.push(...fahrg);
@@ -677,11 +676,11 @@ async function scrapeMemberBefoerderungen(
frame: Frame, frame: Frame,
standesbuchNr: string, standesbuchNr: string,
idMitgliedschaft: string, idMitgliedschaft: string,
idInstanzen: string, idPersonen: string,
idFeuerwehren: string,
): Promise<FdiskBefoerderung[]> { ): Promise<FdiskBefoerderung[]> {
const url = `${BASE_URL}/fdisk/module/mgvw/mitgliedschaften/befoerderungenList.aspx` const url = `${BASE_URL}/fdisk/module/mgvw/befoerderungen/befoerderungenList.aspx`
+ `?id_mitgliedschaften=${idMitgliedschaft}&id_instanzen=${idInstanzen}&id_feuerwehren=${idFeuerwehren}`; + `?search=1&searchid_mitgliedschaften=${idMitgliedschaft}&id_personen=${idPersonen}`
+ `&id_mitgliedschaften=${idMitgliedschaft}&searchid_personen=${idPersonen}&searchid_maskmode=`;
const rows = await navigateAndGetTableRows(frame, url); const rows = await navigateAndGetTableRows(frame, url);
if (!rows) return []; if (!rows) return [];
@@ -706,11 +705,11 @@ async function scrapeMemberUntersuchungen(
frame: Frame, frame: Frame,
standesbuchNr: string, standesbuchNr: string,
idMitgliedschaft: string, idMitgliedschaft: string,
idInstanzen: string, idPersonen: string,
idFeuerwehren: string,
): Promise<FdiskUntersuchung[]> { ): Promise<FdiskUntersuchung[]> {
const url = `${BASE_URL}/fdisk/module/mgvw/mitgliedschaften/UntersuchungenList.aspx` const url = `${BASE_URL}/fdisk/module/mgvw/untersuchungen/UntersuchungenList.aspx`
+ `?id_mitgliedschaften=${idMitgliedschaft}&id_instanzen=${idInstanzen}&id_feuerwehren=${idFeuerwehren}`; + `?search=1&searchid_mitgliedschaften=${idMitgliedschaft}&id_personen=${idPersonen}`
+ `&id_mitgliedschaften=${idMitgliedschaft}&searchid_personen=${idPersonen}&searchid_maskmode=`;
const rows = await navigateAndGetTableRows(frame, url); const rows = await navigateAndGetTableRows(frame, url);
if (!rows) return []; if (!rows) return [];
@@ -743,11 +742,13 @@ async function scrapeMemberFahrgenehmigungen(
frame: Frame, frame: Frame,
standesbuchNr: string, standesbuchNr: string,
idMitgliedschaft: string, idMitgliedschaft: string,
idPersonen: string,
idInstanzen: string, idInstanzen: string,
idFeuerwehren: string,
): Promise<FdiskFahrgenehmigung[]> { ): Promise<FdiskFahrgenehmigung[]> {
const url = `${BASE_URL}/fdisk/module/mgvw/mitgliedschaften/Ges_fahrgenehmigungenListEdit.aspx` const url = `${BASE_URL}/fdisk/module/mgvw/ges_fahrgenehmigungen/Ges_fahrgenehmigungenListEdit.aspx`
+ `?id_mitgliedschaften=${idMitgliedschaft}&id_instanzen=${idInstanzen}&id_feuerwehren=${idFeuerwehren}`; + `?search=1&searchid_mitgliedschaften=${idMitgliedschaft}&id_personen=${idPersonen}`
+ `&id_mitgliedschaften=${idMitgliedschaft}&searchid_personen=${idPersonen}&searchid_maskmode=`
+ `&searchid_instanzen=${idInstanzen}`;
const rows = await navigateAndGetTableRows(frame, url); const rows = await navigateAndGetTableRows(frame, url);
if (!rows) return []; if (!rows) return [];