# Hochladen von neuen PKT-Dateien
Erfolgt über POST /system/forms via  SystemControllers\SystemMenueForms@store

Das PKT-Datei wird einfach in storage/app/app/ gespeichert.

# Einbinden von PKTs in Formulare
Auf der Config-Seite für ein AGB

`Route::get('/config/{ID}', 'ConfigController@configByTypeAndID');`

e.g. `/config/AGB8871`

wird die `view('frontend.Configs.configadmin')` angezeigt.

Irgendwie wird `ConfigAGB.blade.php` eingebunden.

Dort wird `configTabPoints.blade.php` eingebunden, um das "Punkte"-Tab abzubilden.  Das hat das Template-Parameter 'PktTyp',  was ein Array ist von allen PKT-Schemen mit ID und namen:

`$PunktTypen = \App\Http\Controllers\ConfigControllers\GetFelderController::getFelder();`

In der Funktion werden PKT-Dateien mit ID-Nummern von 0 bis 999 in den Verzeichnissen /public/api/app/ und /storage/app/app/ gesucht.  Dadurch erhält man einen Array von zwei-elementigen Arrays mit `el[0] ==  <PKT-ID>` und `el[1] == <Richtiger Name>`, der in dem obengenannten Template abgebildet werden kann.

Wenn man auf Speichern klickt, wird eine Anfrage an `/konfig/saveMWT/<agb_id>` gesendet.  Die vom Nutzer eingegebenen Punkte werden unter dem Form-Parameter 'punkt' an den Server gesendet.

```
action=SAVEMWT
&agb_nfc=
&agb_id=8871
&agb_typ=WTG
&agb_name=Fahrzeug
&agb_activefunc=265
&agb_barcode=20008871
&agb_erfassungsstartzeit=00%3A00%3A00
&agb_erfassungsEndzeit=00%3A00%3A00
&agb_intervall=0
&agb_wdhintervall=00%3A00%3A00
&agb_dyn=8863
&agb_report=dopdf.php
&agb_wct=1
&agb_kurzbemerkung=
&agb_rep=dopdf.php
&agb_alarmzeit=1
&agb_alarmzeitinterval=1
&agb_intervallMaske=127
&agb_rnd=1
&agb_htmlinfos=<...>
&agb_rechte_usg=0
&agb_mail=j.schreiner%40bayern-park.de
&agb_mailids=j.schreiner%40bayern-park.de
&agb_rechte=63488
&agb_TagimJahr=1
&punkt=1%3BGesamteindruck%3B%3B205%3B0%3B15599%3B0%3B%3B0%3Cbr%3E
&berichte=dre6844%3B2206%3Cbr%3E
&delpunkte=del0
&deleteBerichte=dre0
&agb_rpt=1
&dyn_rechte=0
&dyn_rechte_usg=0
&dyn_rechte_usr=0
&agb_lmsk=0
&logic=
&agb_edt=Aufgaben+beendet
&agb_wtlcond=0
&agb_mailmask=1
&DirtyDate=false
&_token=yPLnKJvVd2bJXAc4eSXnxwejmwLZtyHSsOvyzjaa
```

In dem Route-Handler `ConfigSaveController@SaveMWT` werden fünf Prozeduren aufgerufen:

```
switch ($request->agb_type) {
    [...]
case 'WTG':
case 'MLD':
case 'STR':
case 'BST':
    $basics = \App\Model\Configs\AGBsaveModel::SaveBasic($request);
    $punkte = \App\Model\Configs\AGBsaveModel::SaveWTGPoints($request->agb_id, $request->punkt);
    $punkte = \App\Model\Configs\AGBsaveModel::deleteWTGPoints($request->delpunkte);
    $basics = \App\Model\Configs\AGBLinksModel::setAllClients($request->agb_id);
    $punkte = \App\Model\Configs\AGBsaveModel::SaveReports($request->agb_id, $request);
    break;
```

SaveWTGPoints speichert die Informationen über die einzelnen Abschnitten (aka "Punkten") des Formels für das gegebene AGB ID in der Datenbanktabelle `mbd_pkt` ab.

deleteWTGPoints habe ich mir nicht genau angeschaut, aber ich glaube, dass es dazu da ist, die vom Client als nicht mehr genutzt geachteten Punkte aus `mbd_pkt` zu entfernen.

Die anderen drei Funktionsaufrufe scheinen dazu da zu sein, andere Daten von dieser Seite zu verwalten, die für meine Zwecke nicht relevant sind.

# Ausfüllen des durch Punkte erzeugten Formulars

Über die Route `/api/ProceedTask/scanqr/<agb_id>` (`CommissionController@newqr`) kommt man an das Formular, das anhand der auf der Config-Seite eingebundenen PKT-Dateien für diese AGB erzeugt wurde.

Siehe `view('frontend.Commission.scanqr')`: 

Das Formular wird durch die Funktion `PunktExt` in `forms.js` auf der Seite eingebunden.

* Das PKT wird über die Route `GET /api/agb/<agb_id>.json` geladen
* Das JSON-Datei wird auf aufwändiger Art anhand der Code in `forms.js` interpretiert, um das Formular zu erzeugen
* Beim Submitten werden die Daten aus dem Formular via `POST /api/agbdata.php` an den Server gesendet: `MobileInterfaceController@AgbDataSend`
* Dort werden die vom Client übersendeten Daten als JSON-String in der Tabelle `mbd_log` abgespeichert.
* Es ist nicht offensichtlich wo/wie diese Daten aufgerufen werden können.  (Ich glaube, dass mbd_log als übergreifender Speicherort dient für verschiedene Arten von Log-Daten, die sonst keinen festen Platz haben.)

# (Ende)