Some thoughts:
- If using the calendar view, it will be easier to manage full days rather than having mulitple slots per day.
- If you let them book full days it could be as easy as letting them create new events on the calendar as the input/request method. New events could have a status (and corresponding conditional formatting colour) for “Requested” and eventually you change it to “Declined” or “Confirmed”
- Buttons to pop up forms can be a good way to go (and you can pre-fill visible and hidden fields for them like their clientId, etc)