Beispielprojekt für die Anwendung von WPF.
Anforderung:
Mit der Applikation soll die Arbeitszeit automatisiert erfast und permanent gespeichert werden.
Dafür wird pro Zeiteinheit ein Element angelegt, das folgenden Eigenschaften besitzt:
- Beschreibung des Elementes
- Von-Zeitpunkt (1/4h genau)
- Bis-Zeitpunkt (1/4h genau)
- Kostenstelle
- Typ (Normal, Pause, Urlaub, Krank)
Die Darstellung des Elementes soll vom Typ abhängig sein, z.B. Hintergrundfarbe ist normal blau und bei Pause gelb.
Es sollen nicht immer alle Elemente dargestellt werden, sondern nur die das selektieren Tages.
Die aktuelle Arbeitszeit, soll graphisch markiert sein, und deren Endezeit soll automatisch angepasst werden.
Beim Sperren/Ruhezustand soll autmoatisch die aktuelle Arbeitszeit abgeschlossen werden und eine neue gestartet
werden, aber nur wenn die aktuelle Arbeitszeit > 15min ist.
Über ein Menü (z.B. Kontextmenü) erstellt man eine neue aktuelle oder löscht eine vorhandene. Zur Einfachheit
darf man die aktuelle Arbeitszeit nicht löschen.
Desweitern soll man die selektierte Arbeitszeit mit der nächsten Arbeitszeit verschmelzen können, wobei nur die
Endezeit auf das selektierte Objekt übernommen wird.
Um einen Überblick über die Daten zu bekommen, soll es eine Diagnoseoberfläche geben, in der man
Beim Start wird die zuletzt gespeicherten Daten geladen und die letzte Arbeitszeit des aktuellen Tages wird als
aktuelle Arbeitszeit hergenommen. Bei Änderungen an den Arbeitszeiten, sollen diese direkt permanent gespeichert
werden, spätestens beim beenden der Anwendung.
Das speichern sollte sehr robust werden, damit die Datei nicht zerstört werden, wenn während des speichern die
Anwendung abstürzt.
Zur Implementierung soll WPF mit dem MVVM-Pattern benutzt werden
Erweiterte Funktionaltiät:
- Bei Sperrungen/Ruhezustände über 8h soll das Element nicht als Arbeitzeit gelten sondern entfernt werden
- Es erscheint eine Nachfrage nach einer Entsperrung/Aufwachen (aus Ruhezustand) wie die Zeit seit der
letzten Sperrung/Ruhezustand eingetragen werden soll
- Kostenstellen-Editor einbauen
- Die Kostenstellen in Task aufteilen
Beschreibung der Struktur:
- Oberflächen sind direkt in der Root
- ViewModel: die ViewModels für die Oberflächen
- Resource: Resourcen die benötigt werden
- Model: Klassen, die die Datenbestände beinhalten
- Domain: Schnittstellen und Implementierungen für die Datenbeschaffung
- Common: Allgmeine Klassen die in jeder WPF-Anwendung benötigt werden