SergeyMosin / Appointments

Nextcloud Appointments App
GNU Affero General Public License v3.0
162 stars 48 forks source link

Calendar Updates Outside of App #100

Closed LittleDuke closed 4 years ago

LittleDuke commented 4 years ago

I just added a lot of open availability slots via my desktop (Mac) calendar and set them as recurring weekly. So much easier to manage availability via that tool.

Is there away to have your app scan that linked calendar and auto-populate your database?

Screen Shot 2020-06-17 at 10 18 47
SergeyMosin commented 4 years ago

Not at the moment, but definitely something to look into.

P.S. Next major release will probably have some sort of weekly template that would only need to be set once.

LittleDuke commented 4 years ago

That would be very helpful to have a template.

But if you could scan the calendar for the word "Available" to synchronize that would be awesome and have greater utility IMHO instead of spending too much time building your own calendar management function :-)

We're happy to pay / donate to the project because we think it would be incredibly valuable.

krheinwald commented 4 years ago

Or the other way round… Scan a calendar for free timeslots and assign appointments to them as they fit.

From: David V Duccini notifications@github.com Sent: Wednesday, June 17, 2020 6:54 PM To: SergeyMosin/Appointments Appointments@noreply.github.com Cc: Subscribed subscribed@noreply.github.com Subject: Re: [SergeyMosin/Appointments] Calendar Updates Outside of App (#100)

That would be very helpful to have a template.

But if you could scan the calendar for the word "Available" to synchronize that would be awesome and have greater utility IMHO instead of spending too much time building your own calendar management function :-)

We're happy to pay / donate to the project because we think it would be incredibly valuable.

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/SergeyMosin/Appointments/issues/100#issuecomment-645494471 , or unsubscribe https://github.com/notifications/unsubscribe-auth/AADOQR6JJWWWEMP3VEXNAN3RXDYLFANCNFSM4OAWTCCA . https://github.com/notifications/beacon/AADOQRZVHZRP53RSSITDOLLRXDYLFA5CNFSM4OAWTCCKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEZ4XNRY.gif

LittleDuke commented 4 years ago

Or the other way round… Scan a calendar for free timeslots and assign appointments to them as they fit.

The challenge here would be time-boxing it, but yes I could see pointing it at the group calendar and then filling in around that with options.

We prefer however to have an Appointments only calendar that we can turn on and off since our team calendar would get cluttered up.

Also no point in keeping past/expired appointment slots which can be deleted in the calendar itself or set a feature to "auto-purge" the Available slots but leave any that had been scheduled for posterity/archiving.

krheinwald commented 4 years ago

Different Use Cases, I guess ;)

I am now using Calendly and – as a solo consultant – I like the simplicity of making my free time automatically available for customer meetings/appointments.

From: David V Duccini notifications@github.com Sent: Wednesday, June 17, 2020 7:11 PM To: SergeyMosin/Appointments Appointments@noreply.github.com Cc: krheinwald krheinwald@web.de; Comment comment@noreply.github.com Subject: Re: [SergeyMosin/Appointments] Calendar Updates Outside of App (#100)

Or the other way round… Scan a calendar for free timeslots and assign appointments to them as they fit.

The challenge here would be time-boxing it, but yes I could see pointing it at the group calendar and then filling in around that with options.

We prefer however to have an Appointments only calendar that we can turn on and off since our team calendar would get cluttered up.

Also no point in keeping past/expired appointment slots which can be deleted in the calendar itself or set a feature to "auto-purge" the Available slots but leave any that had been scheduled for posterity/archiving.

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/SergeyMosin/Appointments/issues/100#issuecomment-645503588 , or unsubscribe https://github.com/notifications/unsubscribe-auth/AADOQR2ZAT7K6TS7BWN5BMDRXD2JHANCNFSM4OAWTCCA . https://github.com/notifications/beacon/AADOQR6L2G34GZP7FHTBY33RXD2JHA5CNFSM4OAWTCCKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEZ4ZUZA.gif

LittleDuke commented 4 years ago

> Different Use Cases, I guess ;) I am now using Calendly and – as a solo consultant – I like the simplicity of making my free time automatically available for customer meetings/appointments.

I started with that but found it annoying to have to manage the calendar separately.

The nextcloud built in calendar is an AWESOME replacement to MS Exchange and this app really fulfills the use case without having to pay for outside services / a separate login and calendar to manage, not to mention all the data leakage using a third party site can lead to.

I would seriously pay the equivalent fee to the developer for the pro version of calendly.

SergeyMosin commented 4 years ago

@LittleDuke

... if you could scan the calendar for the word "Available" to synchronize

Using word "Available" might be in conflict with #97 if that feature is implemented. Is it hard to set event's "Category" to "Appointment" for example, in "(Mac) calendar" so that would be the "trigger" for synchronization ?

Plus there are different languages

SergeyMosin commented 4 years ago

Similar to #39

LittleDuke commented 4 years ago

@LittleDuke

... if you could scan the calendar for the word "Available" to synchronize

Using word "Available" might be in conflict with #97 if that feature is implemented. Is it hard to set event's "Category" to "Appointment" for example, in "(Mac) calendar" so that would be the "trigger" for synchronization ?

Plus there are different languages

I was only using that as an illustrative example :-)

You could also simply copy in a UUID into the notes section as well that would solve it.

-dvd

nolens commented 4 years ago

I would seriously pay the equivalent fee to the developer for the pro version of calendly.

@LittleDuke

For funding, @SergeyMosin has made available this page: https://www.srgdev.com/gh-support/nextcloudapps

I have funded this project as well and I am sure Sergej has put a lot of work and will continue to do so. So I would like to encourage everyone to fund ongoing development via the link above.

nolens commented 4 years ago

Good feature request from my point of view.

a162624 commented 4 years ago

one thumbs up for managing the calendar externaly. i sync with outlook via caldav which also has management of approved or canceled. or simply display all events with a certain category?

ccoenen commented 4 years ago

I'm managing my calendar from Thunderbird's built in Calendar (what used to be called Lightning). I just need to set three things, and it works flawlessly?

and they automatically show up in the tool and can be selected just fine.

a162624 commented 4 years ago

Hi Claudius Thanks for shareing. Do you also use CalDavSync to sync to Nextcloud? Don't your run in to things likte this?

SergeyMosin commented 4 years ago

Status needs to be preliminary Show as "available" Needs a category "Appointment"

Just FYI ORGANIZER must have SCHEDULE-AGENT=CLIENT otherwise email notifications might not work.

ccoenen commented 4 years ago

I did get a few reports that email notifications were sketchy (i use simple notifications with no further confirmation, so this never really bothered me enough to chase down) But that's good to know.

SergeyMosin commented 4 years ago

"External Mode" is available in v1.6.0 Manage Appointment Slots > Advanced Settings > Time slot mode

Two calendars are required: a Source Calendar to keep track of your availability timeslots and a Destination Calendar for booked appointments.

Nextcloud's Calendar App or any other CalDAV compatible client can be used to add "available" timeslots into the Source Calendar. Most recurrence rules are supported in this mode.

Any event with "Category" set to Appointment (in Engilsh) AND "Show As" a.k.a. "Time As" a.k.a. "Free/Busy" a.k.a. "Time Transparency" set to Free (RFC5545 specs "TRANSP:TRANSPARENT") will be available for booking in the public form.

app-v1 6 0-external-settings

SergeyMosin commented 4 years ago

@krheinwald I am going to reopen #87 for the "Template Mode"

nolens commented 4 years ago

I am using Mac Calendar App on latest Mac OSX.

I was also trying a workaround:

@SergeyMosin Is there anything that can be done to make the "external" feature work with OSX Calendar App?

LittleDuke commented 4 years ago

I am using Mac Calendar App on latest Mac OSX.

  • I am not able to set "Appointment" category in Mac Calendar App. There simply is no entry for "categories". As a consequence, Mac users don't seem to be able to use the new "external" mode.

I also am on Mac and what I had to do was create the appointments on Monday and set to custom recurring so that i could get them to repeat M-T then I went Calendar on NextCloud and was able to set the category there and "Apply to All"

Worked like a charm!

And Kudo's to the Dev for the clever idea to separate the Schedule calendar from the Booked calendar!

LittleDuke commented 4 years ago

I would seriously pay the equivalent fee to the developer for the pro version of calendly.

@LittleDuke

For funding, @SergeyMosin has made available this page: https://www.srgdev.com/gh-support/nextcloudapps

I have funded this project as well and I am sure Sergej has put a lot of work and will continue to do so. So I would like to encourage everyone to fund ongoing development via the link above.

Done and Done! Should have an option to enter another amount ;-)

I'll just be sure to keep donating with updates!

-dvd

nolens commented 4 years ago

I also am on Mac and what I had to do was create the appointments on Monday and set to custom recurring so that i could get them to repeat M-T then I went Calendar on NextCloud and was able to set the category there and "Apply to All"

Thanks for your suggestion! BUT:

LittleDuke commented 4 years ago
  • That requires to go back to the nextcloud backend. Not too elegant.
  • That is only a "solution" for "recurring" events. The initial idea was to be able to set single events, too. That does not seem to be possible from the OSX calendar app - or am I missing something?

Right, not ideal for sure, but in theory you should be able to cut-copy-paste another entry and it probably drags the attributes along? Clearly the built in Mac Calendar app doesn't seem to know anything about the RFC compliant Categories. There's probably a more pro Calendar app for Mac but I have not bothered looking for one since the built in to this point has been totally sufficient for my needs. I don't even know if its pluggable (like the mail client can have additional modules added like GPG etc)

SergeyMosin commented 4 years ago

to be able to set single events, too

Single events CAN be set as long as they are Free and have Appointment category.

Since Mac Calendar App does not support "Categories" rfc5545#section-3.8.1.2 I can make Appointment category optional. A couple of check-boxes in the External mode settings, something like:

Do not require Appointment category for the Source calendar

and

Any "Busy" event can block for the Destination calendar

@LittleDuke Thanks

nolens commented 4 years ago

something like:

Do not require Appointment category for the Source calendar

and

Any "Busy" event can block for the Destination calendar

I have just tested this scenario from OSX Calendar App. Any Calendar entries created by the app are marked "busy" in nextcloud calendar.

As a consequence, a different solution is needed.

How about filtering for a naming convention? Something like

all entries containing a string like "free slot"

and

Any "Busy" event can block for the Destination calendar ?

That would be dead simple. Just give a calendar entry a certain defined name, and they will be "seen" by "appointments" app and made bookable.

From a user perspective, no other settings in the backend are needed (and any other check boxes would therefore be obsolete) and any outside calendar app (not only OSX) should be able to play along nicely.

What do you think, @SergeyMosin ?

ccoenen commented 4 years ago

This will not work well with an international audience. Granted, "Appointment" categoriy is english, too, but it's not as important as the title.

LittleDuke commented 4 years ago

What if the word Appointment is then instead used as the name of the event or in the notes?

Screen Shot 2020-07-05 at 10 58 38
SergeyMosin commented 4 years ago

In v1.6.1 "Appointment" category is optional, but this functionality is available for user who want more control via Manage Appointment Slots > External Mode Settings > Require "Appointment" category

Available time-slots MUST be marked as Free otherwise Free/Busy reports will not work and there is going to be trouble any kind of group/sharing environment. See #57 for example...

However, for the external clients that do not allow users to set Free/Busy I can: Add some kind of Fix time-slots button. Which would scan events where summary/name start with "_" like _free abc for example and set ShowAs to "Free" and add "Appointment" category. This can probably be done automatically when an event is created, but I like the button approach better.

P.S. This should also play nicely with #97 where if the last character is the "_" as well, the text can be displayed as an Appointment Title.

nolens commented 4 years ago

Add some kind of Fix time-slots button. Which would scan events where summary/name start with "_" like _free abc for example and set ShowAs to "Free" and add "Appointment" category. This can probably be done automatically when an event is created, but I like the button approach better.

In my mind, automatic scanning would be even better, because it would fit those workflows better, where users want to manage their entire appointment process from their native calendars, without using the nextcloud backend.

From a users perspective, this would be very beneficial and convenient, no?

SergeyMosin commented 4 years ago

Manage Appointment Slots > External Mode Settings > Auto-fix "Source" timeslots in version 1.6.3

If this option is enabled AND the first character of the Description/Notes is "_" then the Free/Busy will be set to "Free" and "Appointment" category will be added automatically when a new event is created in the "Source" calendar.

P.S. Gnome Calendar requires additional work around

nolens commented 4 years ago

@SergeyMosin

What am I missing?

SergeyMosin commented 4 years ago

@noles can I see the .ics file?

nolens commented 4 years ago

Here you go...

FB6F7EA7-DAF3-4D57-B6B4-5FB55677A6E5.ics.zip

SergeyMosin commented 4 years ago

@nolens The event has the following line SUMMARY:_superevent whish is used for titles as per #97 "Auto-fix" requires DESCRIPTION:_abc..., I think it is called "Notes" on Macs

SergeyMosin commented 4 years ago

It also only works when an event is created for the first time.

nolens commented 4 years ago

So I summarize (tested on MacOS Calendar app):

Same thing works for Standard Android Calendar App.

Cool, @SergeyMosin . Works like a charm, thanks!

nolens commented 4 years ago

I am now using the "external Mode", and the booking process works fine!!

However, there is one little glitch:

If an attendee books an appointment,

In my opinion, booked slots should be deleted in the source calendar, which used to be the behavior before "external mode" was introduced.

@SergeyMosin Any chance to restore that ?

Very good work, overall!!

Best Thomas

SergeyMosin commented 4 years ago

... booked slots should be deleted in the source calendar...

The source calendar is a sort of a (hidden) template or a placeholder, and unfortunately deleting booked time-slots from it in "external mode" is infeasible.

Let's say you have a booked appointments at 14:00 and an open time-slot at 16:00, and your client wants to reschedule the appointment to 16:00. You can just simply drag-and-drop the appointment (in the destination calendar) to 16:00 using a calendar app, and this will open-up the 14:00 time-slot and the 16:00 slot will be blocked-off. Would the 14:00 time-slot have been deleted, the code for implementing this simple operation, would be over complicated and bug prone.

LittleDuke commented 4 years ago

I agree with developer (though I'm pretty sure they could be deleted) -- I just "hide" the base appointment calendar from regular view unless i want to update availability.

As long as the system is not allowing people to double-book against it I'm completely satisfied the the current implementation.

Now the my question is this: Can we have multiple overlapping options?

For example I want to have a calendar with 20 minute slots available for introductory calls but ALSO want to have a calendar with 60 minute slots for people I already know (existing customers) so if someone books a 20 minute slot the 60 minute option for that hour would no longer be available.

SergeyMosin commented 4 years ago

...have a calendar with 20 minute slots available for introductory calls but ALSO want to have a calendar with 60 minute slots... Now the my question is this: Can we have multiple overlapping options?

This should be possible when #81 is implemented

LittleDuke commented 4 years ago

...have a calendar with 20 minute slots available for introductory calls but ALSO want to have a calendar with 60 minute slots... Now the my question is this: Can we have multiple overlapping options?

This should be possible when #81 is implemented

Great -- started watching that as well -- that has high value to me so will tip generously when available :-)

-dvd

nolens commented 4 years ago

@LittleDuke Would you like to close this issue, since the functionality has been successfully implemented?