# Arbeitszeitmessung [![Quality Gate Status](https://sonar.letsstein.de/api/project_badges/measure?project=arbeitszeitmessung&metric=alert_status&token=sqb_253028eff30aff24f32b437cd6c484c511b5c33f)](https://sonar.letsstein.de/dashboard?id=arbeitszeitmessung) bis jetzt ein einfaches Backend mit PostgreSQL Datenbank und GO Webserver um Arbeitszeitbuchungen per HTTP PUT einzufügen ## Installation ```bash git clone https://git.letsstein.de/tom/arbeitszeitmessung arbeitszeitmessung cd arbeitszeitmessung/Docker # .env Datei anpassen docker compose up -d ``` ## PREVIEW Zeitverwaltungsansicht (/time): ![time](docs/images/time.png) Ansicht der Führungskraft (/team): ![team](docs/images/team.png) Nutzeransicht (/user): ![user](docs/images/user.png) ## Buchungstypen 1 - Kommen 2 - Gehen 3 - Kommen Manuell 4 - Gehen Manuell 254 - Automatisch abgemeldet ## API Nutzung der API wenn die `dev-docker-compose.yml` Datei gestartet wird, ist direkt ein SwaggerUI Server mit entsprechender Datei inbegriffen. ### Buchungen [/time] #### [GET] Anfrage Parameter: cardID (string) Antwort: `200` ```json [ { "cradID": "test_card", "readerID": "test_reader", "bookingTyp": 2, "loggedTime": "2024-09-05T08:37:53.117641Z", "id": 5 }, { "cradID": "test_card", "readerID": "mytest", "bookingTyp": 1, "loggedTime": "2024-09-05T08:51:12.670827Z", "id": 6 } ] ``` Antwort `500` Serverfehler #### [PUT] Anfrage Parameter: id (int) Body: (veränderte Parameter) ```json { "cradID": "test_card", "readerID": "mytest", "bookingTyp": 1, "loggedTime": "2024-09-05T08:51:12.670827Z" } ``` Antwort `200` ```json { "cradID": "test_card", "readerID": "mytest", "bookingTyp": 1, "loggedTime": "2024-09-05T08:51:12.670827Z", "id": 6 } ``` ### Neue Buchung [/time/new] #### [PUT] Anfrage Parameter: - cardID (string) - readerID (string) - bookingType (string) Antwort `202` Akzeptiert und eingefügt ```json { "cradID": "test_card", "readerID": "mytest", "bookingTyp": 1, "loggedTime": "2024-09-05T08:51:12.670827Z", "id": 6 } ``` Antwort `409` Konflikt Die vorherige Buchung am selben Tag hat den gleichen Buchungstyp # Filestrukture ``` ├── Backend (Webserver) │   ├── doc (Templates for Document Creator --> typst used to create PDF Reports) │   │   ├── static │   │   └── templates │   ├── endpoints (HTML Server endpoints (see main.go for Routes)) │   ├── helper (Helper classes) │   │   ├── logs │   │   └── paramParser │   ├── logs (Log Folder, no sourcecode) │   ├── migrations (DB Migrations Folder, no direct sourcecode) │   ├── models (DB Models and their function) │   ├── src (Tailwind src --> used to config css formatter) │   ├── static (Webserver static, used to server static content, e.g. JS and CSS files) │   │   └── css │   └── templates (HTML Templates for every page written in templ and compiled to go) ├── Cron (all Cron Scripts) ├── DB (local Database mount Point) │   └── initdb (initialization scripts for DB) ├── Docker (Docker Files, only docker-compose.yaml used) ├── docs └── └── images ```