W niniejszym zadaniu skorzystamy z biblioteki EntityFramework Core. Poniżej przedstawiony jest diagram na którym będziemy pracować.
-
Stwórz aplikację typu REST Api.
-
Przygotuj końcówkę zwracającą dane z pomocą EntityFramework Core zgodnie z poniższymi informacjami:
- Końcówkę odpowiadającą na żądania HTTP GET wysyłane na adres /api/trips
- Końcówka powinna zwrócić listę podróży w kolejności posortowanej malejącą po dacie rozpoczęcia wycieczki.
- Poniżej przedstawiony przykładowy format zwróconych danych.
{
"Name": "ABC",
"Description": "Lorem ipsum...",
"DateFrom": "",
"DateTo": "",
"MaxPeople": 20,
"Countries": [
{
"Name": "Poland",
},
{
"Name": "Germany",
},
],
"Clients": [
{
"FirstName": "John",
"LastName": "Smith",
},
{
"FirstName": "Jake",
"LastName": "Doe",
},
]
}
-
Przygotuj końcówkę pozwalającą na usunięcie danych klienta.
- Końcówka przyjmująca dane wysłane na adres HTTP DELETE na adres
/api/clients/{idClient}
- Końcówka powinna najpierw sprawdzić czy klient nie posiada żadnych przypisanych wycieczek. Jeśli klient posiada co najmniej jedną przypisaną wycieczkę – zwracamy błąd i usunięcie nie dochodzi do skutku.
- Końcówka przyjmująca dane wysłane na adres HTTP DELETE na adres
-
Przygotuj końcówkę pozwalającą na przypisanie klienta do wycieczki.
- Końcówka powinna przyjmować żądania http POST wysłane na adres
/api/trips/{idTrip}/clients
- Parametry przesłane w ciele żądania powinna wyglądać następująco (format danych może być inny):
"FirstName": "John", "LastName": "Doe", "Email": "[email protected]", "Telephone": "543-323-542", "Pesel": "91040294554", "IdTrip": 10, "TripName": "Rome", "PaymentDate": "4/20/2021",
- Po przyjęciu danych sprawdzamy:
- Czy klient o danym numerze PESEL istnieje. Jeśli nie, dodajemy go do bazy danych.
- Czy klient nie jest już zapisaną na wspomnianą wycieczkę – w takim wypadku zwracamy błąd
- Czy wycieczka istnieje – jeśli nie – zwracamy błąd
- „PaymentDate” może posiadać wartość null, dla tych klientów, którzy jeszcze nie zapłacili za podróż. Ponadto kolumna „RegisteredAt” w tabeli Client_Trip powinna być równa aktualnemu czasowi przetworzenia żądania.
- Końcówka powinna przyjmować żądania http POST wysłane na adres
-
Pamiętaj o poprawnych nazwach zmiennych/metod/klas
-
Wykorzystaj dodatkowe modele dla danych zwracanych i przyjmowanych przez końcówki – DTO (ang. Data Transfer Object)
-
Pamiętaj o SOLID, DI