Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Appointments support #1023

Closed
46 tasks done
Tracked by #1
sumnerevans opened this issue Dec 23, 2018 · 35 comments
Closed
46 tasks done
Tracked by #1

Appointments support #1023

sumnerevans opened this issue Dec 23, 2018 · 35 comments
Assignees
Labels
3. to review Waiting for reviews design Related to design, interface, interaction design, UX, etc. enhancement New feature request Feature: Appointments Feature: Public sharing
Milestone

Comments

@sumnerevans
Copy link

sumnerevans commented Dec 23, 2018

As a user I want to define appointment slots where someone can book a meeting with me.

Basics

Planned improvements

Design Review Details

Some polishing

Edit view:

Overview page:

Booking page(select date, select slot):

When you click a time(hour)

Possible enhancements in the future


Original request

Google Calendar for Business has a feature where you can set up "Appointment Slots". It works as follows:

Create an event on a calendar, and select the "Appointment slots" option. You can configure the slots to have a certain duration, or be a single slot. See screenshot:

2018-12-23-15 19 07

Then, you can share a link to the calendar where people can book time on your calendar in those appointment slots:

2018-12-23-15 20 24

I would like this feature in Nextcloud. I know that the calendar is backed by CalDAV and I have a feeling that this is not an actual feature of CalDav, so it would require some significant changes to the calendar app itself, or possibly not even be part of the calendar app at all?

Is this a feature that would be welcome in the default Nextcloud calendar? If so, I am willing to help implement it (I will need guidance though, I have no familiarity with developing Nextcloud apps).

@dgsiegel

This comment has been minimized.

@georgehrke
Copy link
Member

georgehrke commented Sep 13, 2019

Some possible requirements:

Freebusy and selfbooking module

The idea of this module is to enable my customers to do booking of appointments with me (the operator of the cloud) on their own. For that

  • they need to see which are free time slots
  • they need to reserve their appointments

To do so, that module has to run on the cloud server and needs to provide two web interfaces:

  • configuration interface, where the operator can adjust preferences for the booking
  • customer interface, where customers actually do the booking

The result should be a browser interpretable calendar view, which can be integrated to a web page - as well as CalDAV client readable output.

Config interface needs at least these controls:

  • display time period x days/weeks/monts back & y days/weeks/months forward in time
  • choose display one week / two weeks / one month
  • choose days of the week shown
  • time slots which form the "office hours" in general A user setting to define office hours for calendar scheduling server#27422
  • existing calendars to be summed up to represent the "busy" blocks
  • calendar(s) into which customers should insert their desired appointments
  • personal data customers have to provide (Name, email, phone #, postal address - obligatory or optional)
  • period of time customers are allowed to book (choose multiple of quarters, half, full hours, discrete number of minutes, time limit for an appointment)
  • booking raster which should be observed - appointments start every x minutes, every quarter, third, half, full, even or odd hour)
  • minimum free time between appointments (can be 0)
  • text boxes for customers' comments (yes/no/max characters)
  • confirmation by email to customer and operator (yes or no)
  • text / image bits, sent within confirmation to customer
    booking ID, required to change/cancel the appointment

User interface therefore needs these entries:

  • period of time desired
  • personal data according prefs

@georgehrke georgehrke added 1. to develop Accepted and waiting to be taken care of enhancement New feature request and removed enhancement-proposed labels Sep 13, 2019
@georgehrke georgehrke added this to the Maybe some day milestone Sep 13, 2019
@jancborchardt

This comment has been minimized.

@jancborchardt
Copy link
Member

Here is an example of how Outlook does it on mobile, starting in Mail:
outlook mobile availability flow

@dgsiegel

This comment has been minimized.

@sumnerevans

This comment has been minimized.

@nolens

This comment has been minimized.

@small1

This comment has been minimized.

@small1

This comment has been minimized.

@small1

This comment has been minimized.

@small1

This comment has been minimized.

@georgehrke
Copy link
Member

georgehrke commented Jan 27, 2020

Let me repost something from another ticket here so it doesn't get lost:
It's best if we tackle this issue incrementally:

Once those two things are implemented, adding slot support will be much easier.

@nolens

This comment has been minimized.

@small1

This comment has been minimized.

@SergeyMosin

This comment has been minimized.

@georgehrke

This comment has been minimized.

@kiwy42

This comment has been minimized.

@SergeyMosin

This comment has been minimized.

@SergeyMosin

This comment has been minimized.

@georgehrke

This comment has been minimized.

@georgehrke

This comment has been minimized.

@tcitworld

This comment has been minimized.

@ChristophWurst ChristophWurst removed this from the Maybe some day milestone Aug 17, 2021
@ChristophWurst ChristophWurst changed the title Appointment Slot Support Appointments support Sep 15, 2021
@miaulalala
Copy link
Contributor

miaulalala commented Oct 12, 2021

So, short explanation of the way the logic currently works:

Appointment Config:

Sets the different parameters, such as name, start time, end time, increment, preparation time etc which will be used to generate slots later.
The RRule allows more sophisticated configuration, such as days of the week etc.

Booking:

  1. Slots are defined via an RRule.
  2. We generate all possible slots within the constraints set by the RRule.
  3. The max amount of bookable slots per week is generated
  4. The slots are then intersected with one or more calendars to remove any unavailable times.
    • This should also take into account transparency of a calendar
  5. Slots are returned.

Related PRs are nextcloud/server#29188 and nextcloud/server#28970

I'll add more documentation as I go.

@GretaD

This comment has been minimized.

@miaulalala

This comment has been minimized.

@miaulalala

This comment has been minimized.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
3. to review Waiting for reviews design Related to design, interface, interaction design, UX, etc. enhancement New feature request Feature: Appointments Feature: Public sharing
Projects
None yet
Development

No branches or pull requests