* 당일 예약이 가능한 지
* 예약요청일이 해당 업체가 쉬는 날인지
* 예약 요청시각에 해당 업체에 예약이 없는지
* 고객이 향후 미래에 다가오는 예약이 있는지 없는지 (고객은 미래의 예약을 하나만 가질 수 있음)
* 요청 시간이 영업 오픈이전인지
* 요청 시간이 점심 시간인 지
* 요청 시간이 영업 클로즈이후인지
* 요청 시간이 현재보다 이후인지
등등의 비즈니스 상 제약 조건들을 처리하고자합니다.
또한 제약조건에서 위배될 시 맞는 에러메세지를 리턴하는 것을 목표로 하고 있습니다.
예를 들어 '당일 예약이 가능한 지' 확인 후 위배하면 -> 당일 예약이 불가능합니다. 라는 에러메세지를 리턴.
이때, 이러한 검증을 어디서 처리해주어야할 지 혼란스럽습니다.
현재 개발한 바로는
DentalInformation.class (아래, entity 클래스) 에서 제약사항을 검증하고 에러를 리턴하고 있습니다.
그런데 엔티티에서 비즈니스로직을 수행하고 에러를 리턴하는 것은 아닐까? 하는 의문이 들었습니다.
그래서 엔티티에서는 판별만 하고, boolean 값을 리턴하게 바꾸었더니
service에 수많은 if 문들이 생기게 되었습니다.
위의 제약사항을 처리하기 위해 checkDateTimeAvailable()함수에 더 많은 if 문들이 생기게 될 것 같습니다. 각기 다른 에러메세지를 전달하기 위해서요..!
이렇게 많은 제약사항을 검증하고 다른 에러메세지를 던져야할 때 좋은 방법이 있을까요?
감사합니다.