diff --git a/src/components/Einstellungen.svelte b/src/components/Einstellungen.svelte index 40f92a5..c818136 100644 --- a/src/components/Einstellungen.svelte +++ b/src/components/Einstellungen.svelte @@ -6,6 +6,7 @@ let datensatz_schueler = "", datensatz_medien = "", datensatz_sonstige = { nichtschueler: 1, memo: "" }, + datensatz_block_sonstige = "", warten; const update_sonstige = () => { @@ -26,6 +27,32 @@ notifier.fehler(`Fehler beim Hinzufügen des Nutzers: ${e.message}`); } }; + const block_update_sonstige = async () => { + warten = true; + const { data } = await parse(datensatz_block_sonstige, { + comments: "#", + header: true, + }); + try { + $db.prepare( + `DELETE FROM schueler WHERE nichtschueler=1 AND NOT EXISTS (SELECT * FROM ausleihe WHERE ausleihe.schueler_id = schueler.id)` + ).run(); + const insert = $db.prepare( + `INSERT INTO schueler (schild_id, name, vorname, jahr, nichtschueler) VALUES(:id, :name, :vorname, :jahr, 1) + ON CONFLICT (schild_id) DO UPDATE SET jahr = :jahr` + ); + const insertMany = $db.transaction((entries) => { + for (const e of entries) insert.run(e); + }); + insertMany(data); + // id|name|vorname|jahr + notifier.fertig(`${data.length || 0} Datensätze verarbeitet.`); + } catch (e) { + notifier.fehler(`Fehler beim Lehrerimport: ${e.message}`); + console.log(e); + } + warten = false; + }; const update_schueler = async () => { warten = true; const res = await parse(datensatz_schueler, { @@ -34,8 +61,7 @@ }); // id|name|vorname|jahr|klasse|kurs|kurs_lehrer const values = res.data; - let schueler = {}, - kurse = {}; + let schueler = {} values.forEach((v) => { schueler[v.id] = [v.id, v.jahr, v.klasse, v.name, v.vorname]; }); @@ -47,7 +73,7 @@ .map((v) => `(${v.id}, '${v.kurs_lehrer || ""}', '${v.kurs || ""}')`) .join(","); const query = [ - `DELETE FROM schueler WHERE NOT EXISTS ( SELECT * FROM ausleihe WHERE ausleihe.schueler_id = schueler.id)`, + `DELETE FROM schueler WHERE NOT nichtschueler AND NOT EXISTS ( SELECT * FROM ausleihe WHERE ausleihe.schueler_id = schueler.id)`, `INSERT INTO schueler (schild_id, jahr, klasse, name, vorname) VALUES ${schueler_values} ON CONFLICT (schild_id) DO UPDATE SET jahr = ${jahr}`, `DELETE FROM kurszugehoerigkeit`, @@ -56,8 +82,12 @@ try { query.forEach((q) => $db.prepare(q).run()); datensatz_schueler = ""; - const res = $db.prepare(`SELECT COUNT(*) as anzahl FROM schueler`).get() - notifier.fertig(`${schueler_values.length || 0} Datensätze verarbeitet; ${res.anzahl} Nutzer in der Datenbank.`); + const res = $db.prepare(`SELECT COUNT(*) as anzahl FROM schueler`).get(); + notifier.fertig( + `${schueler_values.length || 0} Datensätze verarbeitet; ${ + res.anzahl + } Nutzer in der Datenbank.` + ); } catch (e) { notifier.fehler(`Fehler beim Schülerimport: ${e.message}`); console.log(e); @@ -65,7 +95,7 @@ warten = false; }; const update_medien = async () => { - const medien = datensatz_medien.split("\n").filter(a=>a) + const medien = datensatz_medien.split("\n").filter((a) => a); const insert = $db.prepare( "INSERT INTO medienbezeichnung (name) VALUES (?)" ); @@ -77,9 +107,10 @@ datensatz_medien = ""; notifier.fertig("Medientitel importiert"); } catch (e) { - const msg = e.code === "SQLITE_CONSTRAINT_UNIQUE" - ? "Mindestens ein Titel ist bereits vorhanden" - : e.message + const msg = + e.code === "SQLITE_CONSTRAINT_UNIQUE" + ? "Mindestens ein Titel ist bereits vorhanden" + : e.message; notifier.fehler(`Fehler beim Medienimport: ${msg}`); console.log(e); } @@ -90,10 +121,10 @@
Ein Drucker muss als Standarddrucker eingestellt sein, damit der Druck aus Bangbib heraus funktioniert.
-
Darüber hinaus lässt sich festlegen, wie nach einer Gruppenausleihe verfahren wird.
+ Ein Drucker muss als Standarddrucker eingestellt sein, damit der Druck aus
+ Bangbib heraus funktioniert.
+
Darüber hinaus lässt sich festlegen, wie nach einer Gruppenausleihe
+ verfahren wird.
+
Diese Einstellung erstellt ein PDF in der Form Jahrgang_Kurs_Datum_Zeit.pdf
im PDF-Verzeichnis
+ Diese Einstellung erstellt ein PDF in der Form
+ Jahrgang_Kurs_Datum_Zeit.pdf
+ im PDF-Verzeichnis
+