digiexpress-io / digiexpress-parent

Apache License 2.0
0 stars 1 forks source link

Client portal myCalendar reservation specification - UI + API #205

Open jocelynmutso opened 9 months ago

jocelynmutso commented 9 months ago

myCalendar API

Based on https://learn.microsoft.com/en-us/graph/api/resources/booking-api-overview?view=graph-rest-1.0

The Client Portal provides customers access to the content and services provided by an organisation. One service which is needed in the future is a reservation booking service. This would allow customers to book and manage service appointments with staff members of the organisation. The organisation would then need a way to create and manage their bookable services, and match available staff to customers based on mutual availability.

Some of the noteworthy challenges involved

  1. Displaying available booking time slots taking business hours and staff availability into account
  2. Ensuring that a staff member is available before a customer can book an appointment
  3. Limiting / specifying the length of a particular service appointment (for example, an appointment with a social worker regarding a child should last 1 hour by default)
  4. Making sure that appointments are booked or cancelled reasonably far enough in advance
  5. Sending notifications when a booking is created / updated
  6. Sending reminders to customers/staff at certain intervals

Directly integrating with Microsoft’s Booking API via Microsoft’s Graph API requires a Microsoft 365 Business Premium subscription (22 dollars per user/month). For this reason, it makes sense to create our own API for local development and testing.

https://www.microsoft.com/en-us/microsoft-365/business/compare-all-microsoft-365-business-products

—————————————

The myCalendar API includes the following resources:

Main resources

bookingBusiness bookingStaffMember bookingService bookingAppointment bookingCustomer bookingSchedulingPolicy bookingCustomQuestion bookingReminder

bookingBusiness

The top level object in the API. Example properties include

Related business objects such as

bookingStaffMember

Represents staff members of the bookingBusiness. Example properties include

bookingService

Information related to the service being provided by a bookingBusiness. Example properties include

bookingAppointment

Represents a customer appointment for a bookingService performed by a set of staff members. Example properties include

bookingCustomer

Represents a customer of the bookingBusiness. Example properties include

bookingSchedulingPolicy

Provide the ability to select staff members for a booking, and provide properties for managing booking time durations and lead times. Example properties include

bookingCustomQuestion

Properties to represent questions to ask a customer when making a reservation. Example properties include

bookingReminder

Represents when and whom to send an email reminder. Example properties include


Create a new booking

Image

Confirmation of booking + Viewing all of my bookings

Image

jocelynmutso commented 4 months ago

Initial mock UI

Booking management view Image

Cancel booking Image

Edit booking Image