Daty i godziny , szukanie rozwiązania

0

Hej , będę pisał pewien system czytaj rest api w javie i springu + angular front , ale mam jedną zagwozdkę i chciałbym pomocy od bardziej doświadczonych ludzi.
Mianowicie w systemie tym będzie możliwość rejestracji powiedzmy wizyty tak jak u lekarza , rejestrować się będzie można w danych godzinach podanych wcześniej przez admina przy tworzeniu tego zasobu lekarza powiedzmy np, 8:00 -16:00 i będzie można wyznaczyć czas wizyty przy tworzeniu np.15 minut na pacjenta.
Czyli dostepnę wizyty : 8:00 , 8:15 , 8:30 itd itd, dodatkowo wiadomo że te daty i godziny mają być tylko w tygodniu jakby.
Dodatkowo przy tworzeniu można wybrać przerwę powiedzmy w funkcjonowaniu gabinetu np . od 10-11 przerwa i na jedną godziną np .8 :00 mogą się zapisać dwie osoba np. nie jedna to też podajemy przy tworzeniu bo np . w gabinecie obsługuje 2 lekarzy więc mamy dostepne jakby tą godzinę x2.

Nie mam zielonego pojęcia i żadnego pomysłu jak to zaimplementować , jak myślałem żeby np. te weekendy wyłączyć po prostu w datepickerze w Angularze tak jakoś na resztę, jak to zaimplementować po stronie backendu nie mam pomysłu.

Liczę na pomoc i nakierowaniu , jak to jakoś zaimplementować.
Z góry dzięki za pomoc.

0

Zrob tabele (settings) w niej daj pola office_id, key,value i dasz office_id = 345, disable_weekends = 1, slot_per_day = 2 to beda ustawienia ogolne dla danego gabinetu ktory sam sobie kazdy lekarz tam utworzy.

Nastpenie daj tabele (breaks) w niej dajesz office_id, dzien tygodnia, i przerwa od godziny takiej do takiej, mozesz wpisac wtedy np dwa wpisy ze w czwartek jest przerwa od 10do11 a poyem od 17 do 19 z tej tabeli system pobierze info o tym czy moze bookowac czy nie oraz

tabela (holidays) tutaj ustawiasz daty kiedy planowane sa i do ktorej nieczynne gabinety. wpisujesz sobie dni w ktorych w ciagu roku gabinet nie bedzie czynny , przerwa, choroba lekarza cokolwiek

teraz tabela (slots) tutaj poala typu week_day, date, slots_available, status - tutaj wpisujesz sobie w okreslone dni czy np w poniedzailek slotow ma byc 3 , albo akurat w danym dniu bedza 4 sloty tylkio w tym jednym dniu czyli pole date. system najpierw sprawdza czy sa tu jakies wartosci, jak nie ma to bierze dane z tabeli settings

tabela (reservation) office_id, date_in, date_out, client_id, status - i tu wpisujesz jaki gabinet, data godzina od kiedy , do kiedy, jak klient sie zarejestroal to client id, stataus itd,

0

Po kolei:

  1. Zapisujesz się na wizytę do konkretnego lekarza, czyli każdy lekarz powinien mieć godziny przyjęć (np. 8:00-16:00) i dni kiedy pracuje
  2. Admin może tworzyć wpis lekarza i określić jego dni i godziny przyjęć.
  3. Wizyta powinna mieć przypisanego lekarza i czas (np. doktor Iksiński, termin 8:15-8:30).

Jeśli chodzi o rezerwację wizyty to masz dwa punkty widzenia - frontend (aplikacja w przeglądarce) i backend (aplikacja na serwerze).

Frontend (Angular):
1a. plikacja pobiera listę lekarzy (a więc i ich godziny pracy) oraz zarezerwowane wizyty (czyli jeśli lekarz pracuje od 8:00 do 16:00, ale ma wizyty od 14:00 do 15:00 to powinna pokazać wolne terminy 8:00-14:00 oraz 15:00-16:00)
1b. na podstawie tego pokazuje wolne terminy
1c. klient sobie wybiera termin, który mu pasuje

Backend (Java):
2a. aplikacja przyjmuje zapytanie o rejestrację wizyty - tzn. do jakiego lekarza i na kiedy
2b. sprawdza, czy wizytę można zarejestrować - tj. czy w zapytaniu nie przyszła prośba o rejestrację w czasie gdy już była umówiona wizyta
2c. jeśli wszystko jest OK to wpisuje do bazy danych informację

Jak już masz taki model to dorzucenie gabinetów będzie proste i będzie wymagało zmiany kroków 1a,1b oraz 2b.

1 użytkowników online, w tym zalogowanych: 0, gości: 1