Witam
Jestem w trakcie pisania aplikacji z wykorzystaniem Springa. Miałbym do Was prośbę - chciałbym abyście spojrzeli na mój kod i ocenili go (wskazali co robię źle, co powinienem poprawić itd.)
Jest to harmonogram pracowników. Mam w nim obiekt Employee, który reprezentuje pracownika. Poza polami jak imię, nazwisko czy adres, zawiera też listę dni. Moja koncepcja jest taka, że pracownik posiada dni, które są dla niego robocze (nie dla wszystkich dany dzien jest roboczy). Dzień z kolei posiada kilka pól - datę, ilość zadeklarowanych godzin, ilość godzin faktycznie przepracowanych, obecność planowana, obecność faktyczna. Aplikację chciałby oprzeć o REST. Udostępniłem już kilka metod i obecnie aplikacja umożliwia:
- dodanie pracownika - wiadomo,
- pobranie wszystkich pracowników - jw.,
- pobranie pracownika na podstawie id - jw.,
- pobranie dni roboczych w danym miesiącu dla danego pracownika (EmployeeService.getDaysFromMonth) - metoda zwraca listę obiektów typu dzień, który posiada wskazany pracownik z wskazanym miesiącem i rokiem
- pobranie par pracownik, lista dni - zwraca mapę <Employee, List<Day>> zawierającą wszystkie dni robocze dla danego miesiąca i roku
- druga metoda robi to co powyższa z tym, że nie zwraca mapy tylko listę obiektów EmployeeAndDaysList - ma to na celu umożliwienie przekazania tego jako JSON RESTowy
- ustawienie dla danego pracownika, w danym miesiącu ilości planowanych godzin
Aplikakcja to na razie sam backend i to jeszcze nie gotowy, ale nie chce podawać ocenie od razu całej aplikacji, tylko część, abym mógł poprawić błędy i dalej pisac już z uwzględnieniem moich błędów.
Ogólnie najbardziej zależy mi żebyście ocenili strukturę samego projektu (podział na warstwy domeny, usług, repozytorium) i koncepcję tzn., że pracownika posiada listę dni (przy tych założeniach - dzień posiada dodatkowe wtrybuty - wydało mi się to najlepszą opcją).
Repozytorium to na razie taka atrapa w pamięci, ale docelowa chciałbym wykorzystać Spring Data. Sama aplikacja nie ma zbyt wiele konfiguracji bo jest to Spring Boot