javaFx/달력

javaFx 예약시스템 날짜표시해주기!(2) with oracleDB

디비드킴 2021. 8. 8. 23:50

이제 함수를 보면

reservationService.java

접속 날을 구한다

LocalDate today=LocalDate.now();

접속 날의 달의 마지막 날을 구한다

YearMonth yearMonth=YearMonth.from(today);

이름 표시 함수

showName(root, name);

월표 시 해주는 함수

getMonth(root, today);

월에 맞는 일자 표시해주는 함수

getDays(root, lastDay);

페이지 띄어주는 함수 

showStage(root, "reservationPage");

 

showName(root, name)

reservationService.java

#name이라는 라벨에

접속자 이름을 띄어준다

 

getMonth(root,today);

reservationService.java

#month이라는 라벨에

접속 월을 띄어준다

 

getDays(Parent root,int lastDay)

reservationService.java

얘가 좀 복잡하다

지날 일/에약이 다찬일은 선택할 수없게 해줘야 한다

28/29/30/31 끝 달이 며칠인지 알고 표시해 줘야 한다

 

총 일수 중 

다 찬 날이나 지난날은 disable을 해준다

예를 들어 8/8일인데 8/6일 예약이 다 찼었든 안찼어든 disable 추가

for(int i=1;i<=lastDay;i++) {
Button button=(Button) root.lookup("#day"+i);
button.setText(Integer.toString(i));
if(checkFullDay(stringToTimestamp(month.getText(),i))||compareDate(stringToTimestamp(month.getText(), i),LocalDateTime.now())) {
System.out.println(i+"일은 예약이 다 찼거나 지난 요일입니다");
button.setDisable(true);
}
}

 

(checkFullDay(stringToTimestamp(month.getText(),i))

reservationService.java

 

db에서 해당 월의 일을 검색해서 

총개수가 설정해놓은 일일 총 예약량의 넘는지 안 넘는지 검사한다

if(array.size()>=maxOfDay) {
return true;
}
return false;

 

compareDate(stringToTimestamp(month.getText(), i),LocalDateTime.now())

reservationService.java

현재 날짜와 비교해서 이전인지 검사한다

 

위 두 개의 검사 중 하나라도 해당되면 disable!

 

다시 돌아가서

checkCloseHour(root);

reservationService.java

영업일의 예약 종료시간이 지나면

예약이 다 찼든 안찼든 선택 불가능하게 해 준다

 

각달의 마지막일 검사

if(lastDay==30) {
System.out.println("끝달이 31이 아닙니다");
Button button=(Button) root.lookup("#day31");
button.setText("x");
button.setDisable(true);
}
else if(lastDay==29||lastDay==28) {
System.out.println("끝달이 28/29입니다");
List<Button>buttons=new ArrayList<Button>();
for(int i=29;i<=31;i++) {
buttons.add((Button) root.lookup("#day"+i));
}
int temp=0;
if(lastDay==29) {
temp=1;
}
for(int i=temp;i<buttons.size();i++) {
Button button=buttons.get(i);
button.setText("x");
button.setDisable(true);
}
}

 

테스트

8/8일 기준

1.1~7일까지는 예약에 상관없이 disable완료

2.12일은 모두 예약이 다 찼으니 disable완료

3.8일 현재 오후 11시 47분 예약 개수에 상관없이

영업 종료시간(18시) 이후 이므로 disable완료

 

dao/dto

reservationDao.java
reservationDto.java