Aplikacja jest zaprojektowana do zarządzania zadaniami w organizacji. Wszystkie zapytania do API sa autoryzowane co gwarantuje, że menedżer nie ma dostepu do endpointów przeznaczonych dla pracowników i odwrotnie. Przy tworzeniu bazy zasosowlem podejście code first, przy uruchomieniu aplikacji, jesli baza danych nie istnieje, zostanie automatycznie utworzona i wypełniona danymi początkowymi, w tym dwoma pracownikami oraz menedżerem. Aby odpalić aplikację należy najpierw odpalić API w visual studio a następnie klienta. Pod adresem https://localhost:5001/swagger dostepna jest dokumentacja wszsytkich endpointów. Endpoint login Accounts/Login zwraca token który można wykorzystać dalej do autoryzacji i autentykacji.
Poniższe dane logowania mogą być użyte do uzyskania dostępu do aplikacji:
- Manager:
- Login:
Manager1
- Email:
[email protected]
- Login:
- Pracownik 1:
- Login:
Employee1
- Email:
[email protected]
- Login:
- Pracownik 2:
- Login:
Employee2
- Email:
[email protected]
- Login:
Hasło dla wszystkich użytkowników: Test.123
Po zalogowaniu się jako menedżer, zostaniesz przeniesiony do widoku menedżera. Menedżer posiada następujące możliwości:
- Rejestrowanie nowych pracowników
- Podgląd listy zadań dla każdego pracownika
- Przeglądanie statystyk z podziałem na miesiące
Po zalogowaniu się jako pracownik, zostaniesz przeniesiony do widoku pracownika. Pracownik posiada następujące możliwości:
- Tworzenie nowych zadań
- Przeglądanie zadań, w których jest kontrybutorem
- Edytowanie zadań, oznaczanie zadań jako skończone oraz dodawanie kontrybutorów do zadań, w których uczestniczy
Rozwiązanie jest podzielone na trzy projekty: API, Klient oraz Testy.
- Baza danych: SQLServer zarządzany za pomocą EntityFramework.
- Wzorce projektowe pomagające w obsłudze bazy: Unit Of Work oraz Repository.
- Autentykacja i autoryzacja: Token JWT Bearer.
- Wzorzec Mediator: Zaimplementowany przy użyciu biblioteki MediatR.
- Logowanie: Serilog do logowania błędów i informacji, wyświetlający informacje do konsoli oraz zapisujący je do pliku.
- Obsługa błędów: Middleware do automatycznego przechwytywania i obsługi błędów.
- Walidacja zapytań: Middleware do automatycznej walidacji zapytań.
- Aplikacja kliencka została zbudowana przy użyciu WinForms.
- Testy jednostkowe: Wykorzystując biblioteki XUnit i Moq.
- Testy integracyjne: Dodatkowo wykorzystując bibliotekę MVC.Testing.