@CNST I would not go for a big prepared calendar you have to maintain regularly.
- Each company should have a pattern of working hours/shifts based on weekdays.
For work with weekdays see: How to derive weekdays from a date - #2 by Ben - Each company has a holiday calendar (public holidays etc.).
- During the operating hours (standard working days and opening hours except holidays) a company has one or many shifts. (=> Closed during lunch break)
- Each shift has one or many employees assigned.
- A shift can have multiple slots/session to be booked.
- A customer can book a session in a certain time slot with an available employee.