1. Aanmaken werkplek
Om een werkplek aan te maken ga je naar het volgende endpoint:
url: api/werkplek-aanmaken
method: POST
De volgende gegevens moeten worden mee gestuurd in de POST request als JSON:
{
"locatieNaam":"Hoofdkantoor",
"werkplekNaam":"Flexwerkplek B",
"soort":"Flex",
"capaciteit": 10
}
Variabele | Type |
---|---|
locatieNaam | String |
werkplekNaam |
String |
soort |
String |
capaciteit | int |
De response terug zal zijn:
Situatie | Status code |
---|---|
Werkplek is toegevoegd | 200 |
Locatie bestaat niet | 404 |
Werkplek bestaat al | 409 |
2. Authenticatie
2.1. Inloggen
Om in te loggen is het nodig om het volgende endpoint te benaderen:
url: api/login
method: POST
Vervolgens moet deze informatie mee worden gestuurd in de body van de request om correcte gegevens terug te krijgen. Gebeurt dit niet dan zal er een fout melding komen.
{
"username" : "NielsvdHoeven",
"password" : "wachtwoord",
"remember" : true
}
Wanneer de meegestuurde body klopt met wat er verwacht wordt zal er de volgende response gestuurd worden.
{
"token": "2af80fdb-7dda-4f9c-b24a-16342f74fcc0",
"expires": 1650627217106
}
Hierin is de token de manier van verifieren voor komende request die naar de backend gaan komen. De expires is een epoch waarmee in de front end extra uitgerekend kan worden of de token bijna expired is. Dit wordt ook in de backend gecheckt in een verifyToken() methode.
2.2. Gebruikersgegevens ophalen
Voor het ophalen van gebruikersgegevens aan de hand van een bestaande token wordt het volgende endpoint benadert:
url: api/login/me
method: GET
Het enige wat er hierbij mee gestuurd wordt is een token in de header van de request onder de header 'Authorization'. Deze token is een UUID token dus die zal er ongeveer zo uit moeten zien: '2af80fdb-7dda-4f9c-b24a-16342f74fcc0'
Wanneer de token bestaat en nog geldig is zal de volgende response teruggestuurd worden:
{
"werknemerid": 11,
"voornaam": "Niels",
"achternaam": "van der Hoeven",
"gebruikersnaam": "NielsvdHoeven",
"wachtwoord": null,
"locatienaam": "Thuis werknemer 1",
"token": null,
"permissie": 2
"cirkel": 1
}
Hierin staan alle gegevens van de gebruiker behalve het wachtwoord en de desbetreffende token
3. Verwijderen declaratie
Om een declaratie te verwijderen ga je naar het volgende endpoint:
url: api/declaratie/declaratie-verwijderen/{declaratieId}
method: DELETE
Ook word de token gebruikt om de gebruiker te indentificeren.
Variabele |
Type |
---|---|
declaratieId | int |
token | String |
De response terug zal zijn:
Situatie |
Status code |
---|---|
Declaratie is verwijderd | 200 |
Er is iets fout gegaan | 500 |
4. Ophalen van het flexwerkplekken overzicht voor een week op een locatie
url: /api/werkplekoverzicht/:jaar/:week/:locatie
method: GET
:jaar - het jaar waarvoor een overzicht wordt opgehaald (moet numeriek zijn)
:week - de week waarvoor een overzicht wordt opgehaald (moet numeriek zijn)
:locatie - de naam van de locatie waarvoor een overzicht wordt opgehaald
Ophalen van het werkplekoverzicht resulteert momenteel in 7 dagen, met bij iedere dag een overzicht van de werknemers per werkplek. Alle werknemers die op een werkdag nog niet bij een plek staan, komen onder 'Thuiswerkplek' te staan.
Onderstaand is een voorbeeld gegeven aan de hand van de eerste 2 dagen;
{
"werkplekOverzicht": [
{
"datum": "2022-05-02",
"werkplekOverzichtVoorDatum": [
{
"werkplek": {
"werkplekNaam": "voorbeeld plek",
"soort": "Flex",
"capaciteit": 15
},
"werknemers": []
},
{
"werkplek": {
"werkplekNaam": "andere voorbeeld plek",
"soort": "Flex",
"capaciteit": 7
},
"werknemers": [
{
"werknemerId": 2,
"voornaam": "Tobias",
"achternaam": "Feld"
}
]
},
{
"werkplek": {
"werkplekNaam": "Thuiswerkplek",
"soort": "Thuis",
"capaciteit": 0
},
"werknemers": [
{
"werknemerId": 3,
"voornaam": "Gino",
"achternaam": "Janssen"
}
]
} ]
},
{
"datum": "2022-05-03",
"werkplekOverzichtVoorDatum": [
{
"werkplek": {
"werkplekNaam": "voorbeeld plek",
"soort": "Flex",
"capaciteit": 15
},
"werknemers": []
},
{
"werkplek": {
"werkplekNaam": "andere voorbeeld plek",
"soort": "Flex",
"capaciteit": 7
},
"werknemers": []
},
{
"werkplek": {
"werkplekNaam": "Thuiswerkplek",
"soort": "Thuis",
"capaciteit": 0
},
"werknemers": [
{
"werknemerId": 3,
"voornaam": "Gino",
"achternaam": "Janssen"
}
]
} ]
}
]
}
5. Handmatig opgeven van extra reiskosten tussen een begin- en eindpunt
ReiskostDeclaratie
locatieA
locatieB
opmerking
type
datum
bijlage (optioneel, max 5 mb)
bedrag (optioneel)
url: /api/declareer-reis/
method: POST
ReiskostDeclaratieMetMeters
aantalMeters
opmerking
type
datum
bijlage (optioneel, max 5 mb)
bedrag (optioneel)
url: /api/declareer-reis-meters/
method: POST
Voor de handmatige reiskosten declaratie zijn er twee mogelijkheden. Een werknemer kan kiezen om de beginlocatie, de eindlocatie en de datum op te geven. Een werknemer kan er ook voor kiezen om i.p.v. de locaties, het aantal kilometers op te geven en het doel van de reis (zodat dit nog beoordeeld kan worden). doel van de reis komt momenteel in de opmerking te staan.
Bijlage bij de declaratie is optioneel. Dit kan bijvoorbeeld gebruikt worden om een treinreis aan te tonen. Als een bedrag wordt opgegeven wordt dit bedrag bij de declaratie gezet. Als bedrag null is of niet groter dan 0 wordt het bedrag uitgerekend op basis van de afstand en het type reis.
6. Doorgeven beschikbaarheid
url: /beschikbaarheid/:locatie/:weeknummer
method: POST
Het is de bedoeling dat op basis van de onderstaande JSON de data op de juiste plek komt, NOG TE BEPALEN = DE RESPONSE.
{
"user": "connor newton",
"beschikbaarheid": [
{
"maandag": "thuiswerkplek",
"dinsdag": "algemeneWerkplek",
"woensdag": "thuiswerkplek",
"donderdag": "focusWerkplek",
"vrijdag": "thuiswerkplek"
}
]
}
7. Ophalen van beschikbare werkplekken
url: /api/beschikbaarheidplekken/:locatie/:weeknummer
method: GET
Op de plekker waar een getal staat, moet de aantal beschikbare plekken komen te staan.
{
"maandag": [
{
"flexwerkplek": 0,
"algemeneWerkplek": 0,
"datum": "16-07-2022"
}
],
"dinsdag": [
{
"flexwerkplek": 0,
"algemeneWerkplek": 0,
"datum": "16-07-2022"
}
],
"woensdag": [
{
"flexwerkplek": 0,
"algemeneWerkplek": 0,
"datum": "16-07-2022"
}
],
"donderdag": [
{
"flexwerkplek": 0,
"algemeneWerkplek": 0,
"datum": "16-07-09"
}
],
"vrijdag": [
{
"flexwerkplek": 0,
"algemeneWerkplek": 0,
"datum": "16-07-2022"
}
]
}
8. Aanmaken bedrijfslocatie
url : /api/locaties/maak-bedrijfslocatie-aan
method: POST
Hierbij wordt er een body verwacht met de volgende gegevens:
{
"locatieNaam" : "HoofdKantoor 4",
"adres" : "Professor molkenboerstraat 3",
"plaatsnaam" : "Nijmegen"
}
Er wordt ook een bijpassende message meegegeven wanneer de request wordt verstuurd.
9. Ophalen declaratieoverzicht
url: api/declaratie/overzicht/{jaar}/{maand}
method: GET
Hierin zijn de jaar en maand variabelen beide een jaarnummer en maandnummer dus bijvoorbeeld 2022 voor het jaar en 5 voor de maand.
Bij een succesvolle request wordt er een volledig overzicht gegenereerd voor 1 werknemer die geverifieerd en opgehaald wordt door een token. Dat overzicht ziet er als volgt uit:
{
"declaratieOverzichtPerDatum": [
{
"datum": "2022-05-01",
"declaraties": []
},
{
"datum": "2022-05-02",
"declaraties": []
},
{
"datum": "2022-05-03",
"declaraties": []
},
{
"datum": "2022-05-04",
"declaraties": []
},
{
"datum": "2022-05-05",
"declaraties": []
},
{
"datum": "2022-05-06",
"declaraties": []
},
{
"datum": "2022-05-07",
"declaraties": []
},
{
"datum": "2022-05-08",
"declaraties": []
},
{
"datum": "2022-05-09",
"declaraties": []
},
{
"datum": "2022-05-10",
"declaraties": []
},
{
"datum": "2022-05-11",
"declaraties": []
},
{
"datum": "2022-05-12",
"declaraties": []
},
{
"datum": "2022-05-13",
"declaraties": [
{
"datum": "2022-05-13T00:00:00.000+00:00",
"omschrijving": "Reizen van huis naar werk en terug",
"type": "woon-werk",
"waarde": "13.65"
}
]
},
{
"datum": "2022-05-14",
"declaraties": [
{
"datum": "2022-05-14T00:00:00.000+00:00",
"omschrijving": "Reizen van huis naar werk en terug",
"type": "woon-werk",
"waarde": "13.65"
}
]
},
{
"datum": "2022-05-15",
"declaraties": [
{
"datum": "2022-05-15T00:00:00.000+00:00",
"omschrijving": "Reizen van huis naar werk en terug",
"type": "woon-werk",
"waarde": "13.65"
}
]
},
{
"datum": "2022-05-16",
"declaraties": []
},
{
"datum": "2022-05-17",
"declaraties": []
},
{
"datum": "2022-05-18",
"declaraties": []
},
{
"datum": "2022-05-19",
"declaraties": []
},
{
"datum": "2022-05-20",
"declaraties": []
},
{
"datum": "2022-05-21",
"declaraties": []
},
{
"datum": "2022-05-22",
"declaraties": []
},
{
"datum": "2022-05-23",
"declaraties": []
},
{
"datum": "2022-05-24",
"declaraties": []
},
{
"datum": "2022-05-25",
"declaraties": []
},
{
"datum": "2022-05-26",
"declaraties": []
},
{
"datum": "2022-05-27",
"declaraties": []
},
{
"datum": "2022-05-28",
"declaraties": []
},
{
"datum": "2022-05-29",
"declaraties": []
},
{
"datum": "2022-05-30",
"declaraties": []
}
]
}
Voor het opvragen van de declaratie van een bepaalde werknemer zonder dat diegene is ingelogd kan het volgende endpoint gebruikt worden
url: api/declaratie/overzicht/{jaar}/{maand}/{medewerkerid}
method: GET
Hierbij zal dezelfde soort structuur aan informatie getoond worden zoals hierboven.
10. Ophalen lijst locaties
url: /api/locaties/
method: GET
Successvol resultaat:
```
[
{
"locatieNaam": "<Naam locatie hier>",
"adres": "<adres hier>",
"plaatsnaam": "<plaatsnaam hier>"
"soort" : "<soort hier>"
}
]
```
11. Ophalen maanddeclaraties alle medewerkers
url : api/declaratie/overzichtmedewerkers/{jaar}/{maand}
method: GET
Hierin is {jaar} het jaar nummer en {maand} het maandnummer.
De resultaten van het endpoint komen er als volgt uit te zien.
{
"maandnr": 5,
"maandDeclaratiesPerWerknemers": [
{
"werknemerid": 1,
"voornaam": "Gino",
"achternaam": "Janssen",
"maandDeclaraties": [
{
"declaratieId": 1,
"type": "thuis",
"totaalbedrag": 4.0
},
{
"declaratieId": 1,
"type": "woon-werk",
"totaalbedrag": 13.65
}
]
},
{
"werknemerid": 11,
"voornaam": "Niels",
"achternaam": "van der Hoeven",
"maandDeclaraties": [
{
"declaratieId": 1,
"type": "woon-werk",
"totaalbedrag": 40.95
}
]
}
]
}
12. Reserveren flexwerkplek
url: /api/reserveerwerkplek/:datum/:locatie/:werkpleknaam
method: POST
:datum - datum voor de reservering in het formaat yyyy-MM-dd
:locatie - naam van de locatie waarop een plek wordt gereserveerd
:werkpleknaam - naam van de werkplek die wordt gereserveerd
Aan de hand van deze URL, wordt voor de ingelogde gebruiker een werkplek gereserveerd op de aangegeven datum, locatie en werkplek.
Hierbij wordt voor de zekerheid gechecked of;
- de locatie bestaat
- De datum geldig is, en niet vóór vandaag valt
- de werkplek bestaat op de aangegeven locatie
- de plek nog niet door deze gebruiker is gereserveerd
- de plek niet vol zit
Deze URL produceert geen json, het retourneert alleen een http status.
0 Comments