Appointments+ is a nice appointment booking solution. The original concept assumes that there is one or a few providers of some services who are also administrators of the website or they have an "in-house" admin serving for them. And their clients from the outside world are booking their working time slots.
My needs are a bit different, I am developing a community site where there are many members (can be hundreds) who are not admins at all, and they are both providers and clients, i.e. all of them can both initiate and accept appointment requests.
I would like to point to a number of issues which pose essential drawback regarding my desired plugin usage. I have seen some of the issues reported in numerous other tickets but yet unsolved or abandoned. Several of the issues are also problematic from point of view of the original concept.
First, I name the issues:
1. Providers cannot confirm their pending appointments on front-end (only in their BuddyPress profile if the site is BP based).
2. Providers cannot cancel their confirmed appointments on front-end. (There is only a CANCEL link possible in confirmation emails).
3. Providers cannot cancel their pending appointments on front-end (i.e. remove instead of confirm).
4. Providers cannot mark individual time-slots in their own calendar busy.
5. The calendar does not indicate busy time-slots that are busy by the provider's appointments as client (appointment with another provider).
6. Pending client's appointments are absent in the client appointments list as well as in the calendar time-slot view.
7. Pending provider appointments are also absent in the provider's appointments list (but visible in the time-slot calendar view).
8. There is the default "No preference" service provider selected by default and identical to the site admin.
9. All appointment-related emails are being sent to the site admin by default (in addition to the provider and client).
10. It is necessary to select (define) the service providers one at a time.
Notes to issues 1-7:
- It is desirable that service providers (i.e. workers, community members, ... who are NOT ADMIN PROFESSIONALS) remain only on the front-end and are not bothered to enter the administration dashboard where they can spoil something easily. Unlike in the list of client appointments listed by the short-code [app_my_appointments], the parameter allow_cancel="1" does not work in the short-code [app_my_appointments provider="1"] listing providers' appointments so there is no way for providers to cancel confirmed appointments on front-end. The same problem is with pending appointments which are not even listed by the short-code - there is no way to cancel them and can only be confirmed on front-end if BuddyPress is installed - in the user's profile tab.
- The workers, members, etc. may have some other work to do, not just meetings and appointments; and each day is unique, so they need the ability to fully control their individual time-slots to leave them available or mark as busy.
- The users' time slot calendar has to indicate slots busy by both client and provider appointments so that others do not book them when they have another appointment as client.
- For the same reason, each user's calendar slots view should also show pending appointments as client just like it does for provider appointments.
My solution suggestions:
- I suggest that for both client and provider the short-code [app_my_appointments] would list pending appointments, too. And for provider let each entry contain a drop-down list to enable either to confirm or cancel the request, while for client just the cancel possibility, of course. Confirmed appointments entries should contain a cancel checkbox for both client and provider's appointments.
- In fact, I do not see a sense to differentiate between appointments as client or provider on the front-end. It would be more practical to distinguish just pending and confirmed appointments.
- The calendar time-slot view should indicate busy slots not only as provider but also as client.
- Each user when clicking his own calendar time-slots shall be able to mark them as busy (unavailable for booking).
For BuddyPress integration, in the BuddyPress profile of each user let all remain as is, with the following enhancements:
- Instead of "My Appointments as Provider" let the tab be named just "My Appointments" and list all user's appointments both pending and confirmed, as well as both as client and provider, with the controlling capabilities (confirm, cancel...), exactly the same as on the ordinary "Make an Appointment" page as I suggested above. In addition, let here be the current week's own calendar view shown with the possibility to click any free time-slots to mark them as busy (unavailable for booking).
- The "Appointments Settings" tab remain as is, but please make it working again :slight_smile:
- Add a new tab to the BP profile visible to other users (unlike the previous two tabs), containing the Appointments booking workflow where other users can book appointments with the selected user.
According to my searching in your support forum the last above mentioned BuddyPress new tab feature has already been done by Jude Rosario although outdated and currently not working:
Also, in the thread
Jude Rosario mentions that he "created the function to allow for users to cancel their own appointments".
So probably, a big part of my suggested solution has already been done, just has to be refreshed and included in the A+ regular version, perhaps as one or more Add-ons.
Notes and suggestions regarding issues 8-10:
- The default "No preference" service provider is not desirable because users may easily book him by mistake if they forget to select the desired provider. The person administering the site may not be involved in the community and if so he can rather be configured and listed by his name.
- It is not desirable for the site admin to be involved in all those appointment bookings among hundreds of users so do not bother him by all those notification, confirmation, cancellation, etc. e-mails. Just make it optional in the settings whether the emails are sent only to the involved providers and clients or to admin as well.
- Defining each service provider one at a time when there are hundreds of them? Please, make it possible in bulk, i.e. "select all" and/or select manually but in a bulk way.
Perhaps, you can imagine that it took me many days studying, experimenting with the plugin and searching the support forum, and writing this text!
So, what do you say, WPMUdevs, to bringing the A+ plugin to the next level?