feat: room booking workflow

Fixes #9
This commit is contained in:
Michael Fink Amores 2021-12-18 14:48:13 +01:00
parent 39640b53fb
commit ee3831ecf3
2 changed files with 782 additions and 0 deletions

View File

@ -85,5 +85,32 @@ general-eo-tickets:
- "General Exam-Office-Tickets"
- |
Here you can view all the general exam-office-tickets that concern you.
instances:
- { tag: school, school: "IfI" }
room-booking:
graph-file: room-booking.yaml
category: "booking"
definition-scope: school
definition-description:
fallback-lang: de-de-formal
fallback:
- "Raumbuchungen"
- null
translations:
en-eu:
- "Room Bookings"
- null
instance-description:
fallback-lang: de-de-formal
fallback:
- "Raumbuchungen"
- |
Hier können Klausurräume/Prüfungstermine beantragt und Einzelraumbuchungen vorgenommen werden.
translations:
en-eu:
- "Room Bookings"
- |
Here exam rooms/dates can be requested and individual room bookings can be made.
instances:
- { tag: school, school: "IfI" }

755
room-booking.yaml Normal file
View File

@ -0,0 +1,755 @@
"antrag, klausur": &antrag-klausur-node
viewers:
display-label:
fallback: "Raumbuchungsantrag (Klausurraum und Prüfungstermin) angelegt"
fallback-lang: de-de-formal
translations:
en-eu: ""
viewers:
- &pruefungsamt
tag: authorized
authorized: { "dnf-terms": [[{"tag": "variable", "var": "exam-office"}]] }
- &zugriffspersonen
tag: payload-reference
payload-label: "zugriffspersonen"
payload-view: &payload-view-klausur
"zugriffspersonen": &zugriffspersonen-payload
viewers: &view-alle
- *pruefungsamt
- *zugriffspersonen
- {"tag": "initiator"}
display-label:
fallback: "Zugriffspersonen"
fallback-lang: de-de-formal
translations:
en-eu: ""
"kommunikation": &kommunikation-payload
viewers: *view-alle
display-label:
fallback: "Kommunikation"
fallback-lang: de-de-formal
translations:
en-eu: ""
"personenzahl": &personenzahl-payload
viewers: *view-alle
display-label:
fallback: "Personenanzahl"
fallback-lang: de-de-formal
translations:
en-eu: ""
"titel": &titel-payload
viewers: *view-alle
display-label:
fallback: "Veranstaltungstitel"
fallback-lang: de-de-formal
translations:
en-eu: ""
"pruefungstyp": &pruefungstyp-payload
viewers: *view-alle
display-label:
fallback: "Prüfungstyp"
fallback-lang: de-de-formal
translations:
en-eu: ""
"wunschtermin": &wunschtermin-payload
viewers: *view-alle
display-label:
fallback: "Wunschtermin"
fallback-lang: de-de-formal
translations:
en-eu: ""
"wunschzeitraum": &wunschzeitraum-payload
viewers: *view-alle
display-label:
fallback: "Wunschzeitraum"
fallback-lang: de-de-formal
translations:
en-eu: ""
"ausweichzeitraum": &ausweichzeitraum-payload
viewers: *view-alle
display-label:
fallback: "Ausweichzeitraum"
fallback-lang: de-de-formal
translations:
en-eu: ""
"samstagstermin": &samstagstermin-payload
viewers: *view-alle
display-label:
fallback: "Samstagstermin"
fallback-lang: de-de-formal
translations:
en-eu: ""
"buchungszeitraum": &buchungszeitraum-payload
viewers: *view-alle
display-label:
fallback: "Buchungszeitraum"
fallback-lang: de-de-formal
translations:
en-eu: ""
"raum": &raum-payload
viewers: *view-alle
display-label:
fallback: "Raum"
fallback-lang: de-de-formal
translations:
en-eu: ""
"zeit": &zeit-payload
viewers: *view-alle
display-label:
fallback: "Zeit"
fallback-lang: de-de-formal
translations:
en-eu: ""
final: false
messages: []
edges:
"anlegen, pa, klausur": &anlegen-pa-klausur-edge
display-label:
fallback: "Raumbuchungsantrag (Klausurraum und Prüfungstermin) anlegen (als Prüfungsamt)"
fallback-lang: de-de-formal
translations:
en-eu: ""
mode: initial
actors:
- *pruefungsamt
view-actor: *view-alle
form: &klausur-pa-form
"zugriffspersonen": &zugriffspersonen-form
- "1": &zugriffspersonen-field
tag: multiple
label:
fallback: "Zugriffspersonen"
fallback-lang: de-de-formal
translations:
en-eu: "”"
tooltip: null
default: null
min: 1
range: null
sub:
tag: user
label:
fallback: "Weitere Zugriffspersonen"
fallback-lang: de-de-formal
translations:
en-eu: ""
tooltip: null
default: null
optional: false
"kommunikation": &kommunikation-form
- "2": &kommunikation-field
tag: text
large: true
label:
fallback: "Kommunikation"
fallback-lang: de-de-formal
translations:
en-eu: "Communication"
tooltip:
fallback: "Einsehbar für alle Beteiligten"
fallback-lang: de-de-formal
translations:
en-eu: "Visible for all parties involved"
default: null
optional: true
"personenzahl": &personenzahl-form
- "3": &personenzahl-field
tag: text
label:
fallback: "Personenanzahl"
fallback-lang: de-de-formal
translations:
en-eu: ""
tooltip:
fallback: ""
fallback-lang: de-de-formal
translations:
en-eu: ""
default: null
optional: false
"titel": &titel-form
- "4": &titel-field
tag: text
label:
fallback: "Veranstaltungstitel"
fallback-lang: de-de-formal
translations:
en-eu: ""
tooltip:
fallback: "Titel der Veranstaltung für die Prüfungsübersichtliste"
fallback-lang: de-de-formal
translations:
en-eu: ""
default: null
optional: false
"raum": &raum-form
- "5": &raum-field
tag: text
label:
fallback: "Raum"
fallback-lang: de-de-formal
translations:
en-eu: ""
tooltip:
fallback: ""
fallback-lang: de-de-formal
translations:
en-eu: ""
default: null
optional: true
"zeit": &zeit-form
- "6": &zeit-field
tag: text
label:
fallback: "Zeit"
fallback-lang: de-de-formal
translations:
en-eu: ""
tooltip:
fallback: ""
fallback-lang: de-de-formal
translations:
en-eu: ""
default: null
optional: true
"anlegen, zugriffspersonen, klausur": &anlegen-zugriffspersonen-klausur-edge
display-label:
fallback: "Raumbuchungsantrag (Klausurraum und Prüfungstermin) anlegen (als Dozent:in)"
fallback-lang: de-de-formal
translations:
en-eu: ""
mode: initial
actors:
- &lecturer
tag: authorized
authorized: { "dnf-terms": [[{"tag": "variable", "var": "lecturer" }]] }
view-actor: *view-alle
form: &klausur-zugriffspersonen-initial-form
"zugriffspersonen": &zugriffspersonen-initial-form
- "1":
tag: capture-user
- "1.1":
tag: multiple
label:
fallback: "Zugriffspersonen"
fallback-lang: de-de-formal
translations:
en-eu: "”"
tooltip: null
default: null
min: 0
range: null
sub:
tag: user
label:
fallback: "Weitere Zugriffspersonen"
fallback-lang: de-de-formal
translations:
en-eu: ""
tooltip: null
default: null
optional: false
"kommunikation": *kommunikation-form
"personenzahl": *personenzahl-form
"titel": *titel-form
"pruefungstyp": &pruefungstyp-form
- "5": &pruefungstyp-field
tag: text
label:
fallback: "Prüfungstyp"
fallback-lang: de-de-formal
translations:
en-eu: ""
tooltip:
fallback: ""
fallback-lang: de-de-formal
translations:
en-eu: ""
default: null
optional: false
presets:
- text: "pruefung"
label:
fallback: "Prüfung"
fallback-lang: de-de-formal
translations:
en-eu: ""
- text: "nachpruefung"
label:
fallback: "Nachprüfung"
fallback-lang: de-de-formal
translations:
en-eu: ""
- text: "anderes"
label:
fallback: "Anderes"
fallback-lang: de-de-formal
translations:
en-eu: ""
"wunschtermin": &wunschtermin-form
- "6": &wunschtermin-field
tag: day
max-past: 240 # about 8 months
max-future: 240 # about 8 months
label:
fallback: "Wunschtermin Datum"
fallback-lang: de-de-formal
translations:
en-eu: ""
tooltip: null
default: null
optional: true
"wunschzeitraum": &wunschzeitraum-form
- "7": &-wunschzeitraumfield
tag: text
large: true
label:
fallback: "Wunschzeitraum"
fallback-lang: de-de-formal
translations:
en-eu: ""
tooltip:
fallback: ""
fallback-lang: de-de-formal
translations:
en-eu: ""
default: null
optional: false
"ausweichzeitraum": &ausweichzeitraum-form
- "8": &ausweichzeitraum-field
tag: text
large: true
label:
fallback: "Ausweichzeitraum"
fallback-lang: de-de-formal
translations:
en-eu: ""
tooltip:
fallback: "Akzeptabler Ausweichzeitraum"
fallback-lang: de-de-formal
translations:
en-eu: ""
default: null
optional: false
"samstagstermin": &samstagstermin-form
- "9": &samstagstermin-field
tag: text
label:
fallback: "Samstagstermin"
fallback-lang: de-de-formal
translations:
en-eu: ""
tooltip:
fallback: ""
fallback-lang: de-de-formal
translations:
en-eu: ""
default: null
optional: false
presets:
- text: "not-ok"
label:
fallback: "kein Samstagstermin"
fallback-lang: de-de-formal
translations:
en-eu: ""
- text: "ok"
label:
fallback: "Samstagstermin möglich"
fallback-lang: de-de-formal
translations:
en-eu: ""
"buchungszeitraum": &buchungszeitraum-form
- "10": &buchungszeitraum-field
tag: text
large: true
label:
fallback: "Buchungszeitraum"
fallback-lang: de-de-formal
translations:
en-eu: ""
tooltip:
fallback: ""
fallback-lang: de-de-formal
translations:
en-eu: ""
default: null
optional: true
"anpassen, antrag, klausur, pa": &anpassen-pa-klausur-edge
display-label:
fallback: "Raumbuchungsinformationen anpassen (als Prüfungsamt)"
fallback-lang: de-de-formal
translations:
en-eu: ""
mode: manual
source: "antrag, klausur"
actors:
- *pruefungsamt
view-actor: *view-alle
form: *klausur-pa-form
"anpassen, antrag, klausur, zugriffspersonen": &anpassen-zugriffspersonen-klausur-edge
display-label:
fallback: "Raumbuchungsinformationen anpassen (als Dozent:in)"
fallback-lang: de-de-formal
translations:
en-eu: ""
mode: manual
source: "antrag, klausur"
actors:
- *zugriffspersonen
view-actor: *view-alle
form: &klausur-zugriffspersonen-form
<<: *klausur-zugriffspersonen-initial-form
"zugriffspersonen": *zugriffspersonen-form
"geplant, klausur": &geplant-klausur-node
viewers:
display-label:
fallback: "Raumbuchungsplanung (Klausurraum und Prüfungstermin)"
fallback-lang: de-de-formal
translations:
en-eu: ""
viewers: *view-alle
payload-view: *payload-view-klausur
final: false
edges:
"planen, klausur": &planen-klausur-edge
display-label:
fallback: "Raumbuchungsplanung einleiten"
fallback-lang: de-de-formal
translations:
en-eu: ""
mode: manual
source: "antrag, klausur"
actors:
- *pruefungsamt
view-actor: *view-alle
form: *klausur-pa-form
"anpassen, geplant, klausur, pa":
<<: *anpassen-pa-klausur-edge
source: "geplant, klausur"
"anpassen, geplant, klausur, zugriffspersonen":
<<: *anpassen-zugriffspersonen-klausur-edge
source: "geplant, klausur"
"gebucht, klausur": &gebucht-klausur-node
viewers:
display-label:
fallback: "Raum (Klausurraum und Prüfungstermin) gebucht"
fallback-lang: de-de-formal
translations:
en-eu: ""
viewers: *view-alle
payload-view: *payload-view-klausur
final: false
edges:
"buchen, klausur": &buchen-klausur-edge
display-label:
fallback: "Raum buchen"
fallback-lang: de-de-formal
translations:
en-eu: ""
mode: manual
source: "geplant, klausur"
actors:
- *pruefungsamt
view-actor: *view-alle
form: *klausur-pa-form
"anpassen, gebucht, klausur, pa":
<<: *anpassen-pa-klausur-edge
source: "gebucht, klausur"
"anpassen, gebucht, klausur, zugriffspersonen":
<<: *anpassen-zugriffspersonen-klausur-edge
source: "gebucht, klausur"
"fertig, klausur": &fertig-klausur-node
viewers:
display-label:
fallback: "Raumbuchung (Klausurraum und Prüfungstermin) abgeschlossen"
fallback-lang: de-de-formal
translations:
en-eu: ""
viewers: *view-alle
payload-view: *payload-view-klausur
final: ok
edges:
"abschliessen, antrag, klausur": &abschliessen-edge
display-label:
fallback: "Raumbuchung abschließen"
fallback-lang: de-de-formal
translations:
en-eu: ""
mode: manual
source: "antrag, klausur"
actors:
- *pruefungsamt
view-actor: *view-alle
form: *klausur-pa-form
"abschliessen, geplant, klausur":
<<: *abschliessen-edge
source: "geplant, klausur"
"abschliessen, gebucht, klausur":
<<: *abschliessen-edge
source: "gebucht, klausur"
"abgebrochen, klausur": &abgebrochen-node
viewers:
display-label:
fallback: "Raumbuchung (Klausurraum und Prüfungstermin) agebrochen"
fallback-lang: de-de-formal
translations:
en-eu: ""
viewers: *view-alle
payload-view: *payload-view-klausur
final: not-ok
edges:
"abbrechen, antrag, klausur": &abbrechen-edge
display-label:
fallback: "Raumbuchung abbrechen"
fallback-lang: de-de-formal
translations:
en-eu: ""
mode: manual
source: "antrag, klausur"
actors:
- *pruefungsamt
view-actor: *view-alle
form: *klausur-pa-form
"abbrechen, geplant, klausur":
<<: *abbrechen-edge
source: "geplant, klausur"
"abbrechen, gebucht, klausur":
<<: *abbrechen-edge
source: "gebucht, klausur"
# Einzelraumbuchung:
"antrag, einzelraum": &antrag-einzelraum-node
viewers:
display-label:
fallback: "Raumbuchungsantrag (Einzelraumbuchung) angelegt"
fallback-lang: de-de-formal
translations:
en-eu: ""
viewers: *view-alle
payload-view: &payload-view-einzelraum
"zugriffspersonen": *zugriffspersonen-payload
"kommunikation": *kommunikation-payload
"zeitraum": &zeitraum-payload
viewers: *view-alle
display-label:
fallback: "Zeitraum"
fallback-lang: de-de-formal
translations:
en-eu: ""
"raumwunsch": &raumwunsch-payload
viewers: *view-alle
display-label:
fallback: "Raumwunsch"
fallback-lang: de-de-formal
translations:
en-eu: ""
"personenzahl": *personenzahl-payload
"raum": *raum-payload
"zeit": *zeit-payload
final: false
edges:
"anlegen, pa, einzelraum": &anlegen-pa-einzelraum-edge
display-label:
fallback: "Raumbuchungsantrag (Einzelraumbuchung) anlegen (als Prüfungsamt)"
fallback-lang: de-de-formal
translations:
en-eu: ""
mode: initial
actors:
- *pruefungsamt
view-actor: *view-alle
form: &einzelraum-pa-form
"zugriffspersonen": *zugriffspersonen-form
"kommunikation": *kommunikation-form
"zeitraum": &zeitraum-form
- "3": &zeitraum-field
tag: text
label:
fallback: "Zeitraum"
fallback-lang: de-de-formal
translations:
en-eu: ""
tooltip:
fallback: ""
fallback-lang: de-de-formal
translations:
en-eu: ""
default: null
optional: true
"raum": *raum-form
"zeit": *zeit-form
"anlegen, zugriffspersonen, einzelraum": &anlegen-zugriffspersonen-einzelraum-edge
display-label:
fallback: "Raumbuchungsantrag (Einzelraumbuchung) anlegen (als Dozent:in)"
fallback-lang: de-de-formal
translations:
en-eu: ""
mode: initial
actors:
- *lecturer
view-actor: *view-alle
form: &einzelraum-zugriffspersonen-initial-form
"zugriffspersonen": *zugriffspersonen-initial-form
"kommunikation": *kommunikation-form
"zeitraum": *zeitraum-form
"raumwunsch": &raumwunsch-form
- "4": &raumwunsch-field
tag: text
label:
fallback: "Raumwunsch"
fallback-lang: de-de-formal
translations:
en-eu: ""
tooltip:
fallback: ""
fallback-lang: de-de-formal
translations:
en-eu: ""
default: null
optional: true
"personenzahl":
- "5": *personenzahl-field
"anpassen, antrag, einzelraum, pa": &anpassen-pa-einzelraum-edge
display-label:
fallback: "Raumbuchungsinformationen anpassen"
fallback-lang: de-de-formal
translations:
en-eu: ""
mode: manual
source: "antrag, einzelraum"
actors:
- *pruefungsamt
view-actor: *view-alle
form: *einzelraum-pa-form
"anpassen, antrag, einzelraum, zugriffspersonen": &anpassen-zugriffspersonen-einzelraum-edge
display-label:
fallback: "Raumbuchungsinformationen anpassen"
fallback-lang: de-de-formal
translations:
en-eu: ""
mode: manual
source: "antrag, einzelraum"
actors:
- *zugriffspersonen
view-actor: *view-alle
form: &einzelraum-zugriffspersonen-form
<<: *einzelraum-zugriffspersonen-initial-form
"zugriffspersonen": *zugriffspersonen-form
"geplant, einzelraum": &geplant-einzelraum-node
viewers:
display-label:
fallback: "Raumbuchungsplanung (Einzelraumbuchung)"
fallback-lang: de-de-formal
translations:
en-eu: ""
viewers: *view-alle
payload-view: *payload-view-einzelraum
final: false
edges:
"planen, einzelraum": &planen-einzelraum-edge
display-label:
fallback: "Raumbuchungsplanung einleiten"
fallback-lang: de-de-formal
translations:
en-eu: ""
mode: manual
source: "antrag, einzelraum"
actors:
- *pruefungsamt
view-actor: *view-alle
form: *einzelraum-pa-form
"anpassen, geplant, einzelraum, pa":
<<: *anpassen-pa-einzelraum-edge
source: "geplant, einzelraum"
"anpassen, geplant, einzelraum, zugriffspersonen":
<<: *anpassen-zugriffspersonen-einzelraum-edge
source: "geplant, einzelraum"
"gebucht, einzelraum": &gebucht-einzelraum-node
viewers:
display-label:
fallback: "Raum (Einzelraumbuchung) gebucht"
fallback-lang: de-de-formal
translations:
en-eu: ""
viewers: *view-alle
payload-view: *payload-view-einzelraum
final: false
messages: []
edges:
"buchen, einzelraum": &buchen-einzelraum-edge
display-label:
fallback: "Raum buchen"
fallback-lang: de-de-formal
translations:
en-eu: ""
mode: manual
source: "geplant, einzelraum"
actors:
- *pruefungsamt
view-actor: *view-alle
form: *einzelraum-pa-form
"anpassen, gebucht, einzelraum, pa":
<<: *anpassen-pa-einzelraum-edge
source: "gebucht, einzelraum"
"anpassen, gebucht, einzelraum, zugriffspersonen":
<<: *anpassen-zugriffspersonen-einzelraum-edge
source: "gebucht, einzelraum"
"fertig, einzelraum": &fertig-einzelraum-node
viewers:
display-label:
fallback: "Raumbuchung (Einzelraumbuchung) abgeschlossen"
fallback-lang: de-de-formal
translations:
en-eu: ""
viewers: *view-alle
payload-view: *payload-view-einzelraum
final: ok
edges:
"abschliessen, antrag, einzelraum": &abschliessen-einzelraum-edge
display-label:
fallback: "Raumbuchung abschließen"
fallback-lang: de-de-formal
translations:
en-eu: ""
mode: manual
source: "antrag, einzelraum"
actors:
- *pruefungsamt
view-actor: *view-alle
form: *einzelraum-pa-form
"abschliessen, geplant, einzelraum":
<<: *abschliessen-einzelraum-edge
source: "geplant, einzelraum"
"abschliessen, gebucht, einzelraum":
<<: *abschliessen-einzelraum-edge
source: "gebucht, einzelraum"
"abgebrochen, einzelraum": &abgebrochen-einzelraum-node
viewers:
display-label:
fallback: "Raumbuchung (Einzelraumbuchung) abgebrochen"
fallback-lang: de-de-formal
translations:
en-eu: ""
viewers: *view-alle
payload-view: *payload-view-einzelraum
final: not-ok
edges:
"abbrechen, antrag, einzelraum": &abbrechen-einzelraum-edge
display-label:
fallback: "Raumbuchungsplanung abbrechen"
fallback-lang: de-de-formal
translations:
en-eu: ""
mode: manual
source: "antrag, einzelraum"
actors:
- *pruefungsamt
view-actor: *view-alle
form: *einzelraum-pa-form
"abbrechen, geplant, einzelraum":
<<: *abbrechen-einzelraum-edge
source: "geplant, einzelraum"
"abbrechen, gebucht, einzelraum":
<<: *abbrechen-einzelraum-edge
source: "gebucht, einzelraum"