I am very impressed with Appointment+. It's a powerful plugin that offers a ton of features and looks great from the front end. I'm looking at Appointments+ and scheduling appointments in general as a means of offering support or activating in-game features to members of a gaming community who register as premium members on the community site. The issue for me is that most of the mods/admins who would be offering the support participate in gaming for fun/as a hobby and do not have a regular weekly schedule. While you can restrict how far in advance users can reserve appointments and service providers may set their own hours, when those hours of availability change day by day or week by week, the scheduling system becomes unreliable or requires constant day-to-day editing.
I'm sure it would be a lot of work, but it would be awesome to extend Appointments+ to allow for the following operating mode:
Step 1) The Site Admin determines what days-of-the-week are the start and end of his business' work week. For our example I'll use the days we use at the theater chain I part time at: Week Begins on Friday, ends on Thursday (optionally opening/closing time as well).
Step 2) The Site Admin determines what period he would like to use (weekly, bi-weekly, monthly ought to be default options). Let's use weekly for this example.
Step 3) The Site Admin Specifies how many days in advance the following period/weeks appointments will automatically be made visible, or if he will make this happen manually when he so chooses. For our example we'll use two days.
Step 4) Individual service providers log in to their back-end and under their working hours/breaks settings, they find two sets to configure. One is a daily breakdown for the active period/week, the other is for the upcoming period/week. Both "breakdowns" list the business week from start to end, in our case Friday, Saturday, Sunday, Monday, Tuesday, Wednesday and Thursday. Just as they can now, users can configure their start/end and break times per day.
Step 5) The service provider enters his availability for the current week, and this availability remains editable for the duration of the current week, but hours for days passed and the current day may not be edited.
Step 6) The user enters his availability for the following week, and clicks "save".
Let's review the example so far:
The work week is Friday > Thursday
Our availability period is Weekly
The next week's availability will be published Two Days in advance.
Let's use the current month of 11/2012
Let's pretend the current, active week is 11/16 - 11/22
Let's pretend the upcoming week is 11/22 - 11/28
The Admin has configured his settings.
The Service Providers have configured their hours/breaks.
Step 6) A user logs in on 11/16 and sees that no appointments are available after Thursday, 11/22.
Step 7) On 11/20 at a set time(or manually by the admin at an unspecified time), the system activates the upcoming week's availability (based on what hours/breaks the service providers filled in in the "upcoming week" settings).
Step 8) A user logs in on 11/20 and sees that he can book appointments through Thursday, 11/28. (side note - I would suggest that if a service provider fails to provide his hours for the upcoming week the system defaults to no available hours).
Step 9) The Service Provider logs in after the deadline (after the upcoming week's availability has been activated) and tries to change his upcoming week's availability - but he can't because it's grayed-out and he doesn't have the override permission.
Step 10) at 12:01 on Friday, 11/23, the Service Provider logs in and sees that his "Upcoming Week's" Availability is now his "current week's" availability, and Yay!, he can edit it again. He also forgot the "remember my availability" checkbox, so his availability for the upcoming week has been cleared.
Step 11) Bake at 400 Degrees for 35 Minutes, or until center is golden-brown.
Step 12) Repeat for following weeks.
I hope that all makes sense. I don't know how many others would find this useful, but I would forever love the developer who made it happen........
Just an idea - either way thanks for this awesome plugin. - JD