Pārlūkot izejas kodu

ermögliche Schülersuche mit scan

hmt 4 gadi atpakaļ
vecāks
revīzija
1a0865dc67
3 mainītis faili ar 46 papildinājumiem un 19 dzēšanām
  1. 14 1
      src/components/Scanner.svelte
  2. 1 1
      src/components/Schueler.svelte
  3. 31 17
      src/getter.js

+ 14 - 1
src/components/Scanner.svelte

@@ -1,8 +1,10 @@
 <script>
-  import { configData, db, scan_status } from "./../stores.js";
+  import { configData, db, scan_status, view } from "./../stores.js";
   import { DontBubbleException } from './../exceptions.js'
   import { onDestroy } from 'svelte';
   import { focus, sort_by_name, sql } from './../helpers.js';
+  import { get_schueler_by_schild_id } from "./../getter.js";
+  import Schueler from "./Schueler.svelte";
 	onDestroy(() => $scan_status = {})
 
   export let scaninterface
@@ -50,6 +52,17 @@
   }
 
   function scan() {
+    if (barcode.startsWith('schild')) {
+      const id = barcode.substring('schild'.length)
+      console.log('öffne Nutzer: ', id)
+      try {
+        get_schueler_by_schild_id({ id });
+      } catch (e) {
+        console.log(`Nutzer mit ID ${id} nicht gefunden`)
+      }
+      $view = Schueler;
+      return
+    }
     const res = $db
       .prepare(
         sql`

+ 1 - 1
src/components/Schueler.svelte

@@ -75,7 +75,7 @@
   <Scanner {scaninterface} />
 {/if}
 <h2 class="title">{s.name}, {s.vorname}</h2>
-<h2 class="sub-title">{s.klasse || 'Sonstiger Nutzer'}</h2>
+<h2 class="sub-title">{s.klasse || 'Sonstiger Nutzer'}, ID: {s.schild_id}</h2>
 <div class="field">
   {#if yes}
     <button class="button is-danger" on:click={()=>remove_schueler()}>Nutzer aus Datenbank löschen</button>

+ 31 - 17
src/getter.js

@@ -1,27 +1,41 @@
-import { get } from 'svelte/store';
+import { get } from "svelte/store";
 import { schueler, db } from "./stores.js";
-  export function get_schueler (item) {
-    const res = get(db)
-      .prepare(
-        `
+import { sql } from "./helpers.js";
+export function get_schueler(item) {
+  const res = get(db)
+    .prepare(
+      sql`
       SELECT s.*
       FROM schueler AS s
       WHERE s.id = ?
     `
-      )
-      .all(item.id);
-    schueler.set(res)
-  };
-  export function get_kurs (item) {
-    const res = get(db)
-      .prepare(
-        `
+    )
+    .all(item.id);
+  schueler.set(res);
+}
+export function get_schueler_by_schild_id(item) {
+  const res = get(db)
+    .prepare(
+      sql`
+      SELECT s.*
+      FROM schueler AS s
+      WHERE s.schild_id = ?
+    `
+    )
+    .all(item.id);
+  if (!res.length) throw "Kein Schüler mit dieser ID gefunden";
+  schueler.set(res);
+}
+export function get_kurs(item) {
+  const res = get(db)
+    .prepare(
+      sql`
       SELECT DISTINCT s.*, k.kurs, k.kurs_lehrer
       FROM kurszugehoerigkeit AS k
       LEFT JOIN schueler AS s ON (k.schild_id = s.schild_id)
       WHERE k.kurs = ? AND s.klasse = ? AND s.jahr = ?
     `
-      )
-      .all(item.id, item.klasse, item.jahr);
-    schueler.set(res)
-  };
+    )
+    .all(item.id, item.klasse, item.jahr);
+  schueler.set(res);
+}