calcom / cal.com

Scheduling infrastructure for absolutely everyone.
https://cal.com
Other
32.28k stars 7.94k forks source link

Events with availability: free on my calendar still block booking availability #2236

Closed zeorin closed 2 years ago

zeorin commented 2 years ago

Issue Summary

Cannot book event if an "availability: free" event conflicts with the desired time slot.

Steps to Reproduce

  1. Create an all-day event on a linked calendar, but set your availability for this event as free
  2. Go to availability -> troubleshoot
  3. See the event listed there
  4. Try to book an event on that day
  5. Can't ("All booked up")
  6. Remove the all-day event
  7. availability troubleshooter no longer shows event
  8. User is able to book on that day again

Technical details

milospuac commented 2 years ago

Thanks for reporting this. Our team will have a look and address the issue

zacchiro commented 2 years ago

I'm seeing this as well, with cal.com service (as of today) and a self-hosted Nextcloud 22.2.0.

zacchiro commented 2 years ago

Is there any progress/plan on how to fix this? It is my main blocker from adopting cal.com, but I'll need to look for alternatives if fixing this is not an option. Thanks for your work on this great service!

emrysal commented 2 years ago

Hi @zacchiro I'll pick this up over the weekend.

mzocher-gl commented 2 years ago

I see this as well, with a self hosted cal.com (1.5.2) where I have connected my calendar to Microsoft O365.

zacchiro commented 2 years ago

For those facing this issue with Nextcloud as a backend calendar server, note that starting with Nextcloud 23, there is now native Nextcloud support for letting others book appointments with you. Check out the announcement (look for "Appointment scheduling" in the page). It is not as polished as Cal.com in terms of UI, but it goes almost all the way there and it does respect free/busy settings on existing appointments.

arimrubin commented 2 years ago

Commenting to stay updated as to when this gets fixed. I use all-day events as a reminder, but still wish for the calendar to allow bookings - I use Outlook.

samizdis commented 2 years ago

Hey there, just checking in on this. It looks from this PR that there was a code fix added to v1.6, but I still have the issue when using © 2022 Cal.com, Inc. v.1.6.0-h-PRO. (In case it's relevant, I'm using Baikal / CalDav.)

arimrubin commented 2 years ago

All fixed on my end. Thank you. 

On Mon, 23 May 2022 at 7:55, @.***> wrote:

Hey there, just checking in on this. It looks from this PR that there was a code fix added to v1.6, but I still have the issue when using © 2022 Cal.com, Inc. v.1.6.0-h-PRO.

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you commented.Message ID: @.***>

samizdis commented 2 years ago

I think my full-day events are marked TRANSP:TRANSPARENT, see https://icalendar.org/iCalendar-RFC-5545/3-6-1-event-component.html and e.g.

Hour-long blocking event (busy):

BEGIN:VCALENDAR
PRODID:-//Mozilla.org/NONSGML Mozilla Calendar V1.1//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:Europe/London
BEGIN:DAYLIGHT
TZOFFSETFROM:+0000
TZOFFSETTO:+0100
TZNAME:BST
DTSTART:19700329T010000
RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=3
END:DAYLIGHT
BEGIN:STANDARD
TZOFFSETFROM:+0100
TZOFFSETTO:+0000
TZNAME:GMT
DTSTART:19701025T020000
RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
END:STANDARD
END:VTIMEZONE
BEGIN:VEVENT
LAST-MODIFIED:20220516T210128Z
DTSTAMP:20220516T210128Z
UID:4f9d7cd3-e337-403f-aad3-fa8d8b3b73d6
SUMMARY:Lunch with Brian
STATUS:CONFIRMED
RRULE:FREQ=WEEKLY;BYDAY=MO
X-MOZ-LASTACK:20220516T210128Z
DTSTART;TZID=Europe/London:20211206T190000
DTEND;TZID=Europe/London:20211206T210000
X-MOZ-GENERATION:1
BEGIN:VALARM
ACTION:DISPLAY
TRIGGER;VALUE=DURATION:-PT10M
DESCRIPTION:Lunch with Brian
END:VALARM
END:VEVENT
END:VCALENDAR

Full-day non-blocking event (free):

BEGIN:VCALENDAR
PRODID:-//Mozilla.org/NONSGML Mozilla Calendar V1.1//EN
VERSION:2.0
BEGIN:VEVENT
CREATED:20220516T213117Z
LAST-MODIFIED:20220517T073452Z
DTSTAMP:20220517T073452Z
UID:13398daa-26e0-4261-8b04-7d02670c4338
SUMMARY:Craig Birthday
STATUS:CONFIRMED
RRULE:FREQ=WEEKLY;COUNT=8;BYDAY=TU
X-MOZ-LASTACK:20220517T073452Z
DTSTART;VALUE=DATE:20220426
DTEND;VALUE=DATE:20220427
TRANSP:TRANSPARENT
X-MOZ-GENERATION:2
BEGIN:VALARM
ACTION:DISPLAY
TRIGGER;VALUE=DURATION:-PT10M
DESCRIPTION:Craig Birthday
END:VALARM
END:VEVENT
END:VCALENDAR
zacchiro commented 2 years ago

Hey there, just checking in on this. It looks from this PR that there was a code fix added to v1.6, but I still have the issue when using © 2022 Cal.com, Inc. v.1.6.0-h-PRO. (In case it's relevant, I'm using Baikal / CalDav.)

Same here, still not working with Nextcloud: all-day events marked as free still inhibit booking.

PeerRich commented 2 years ago

@alishaz-polymath is now working on CalDav, previously the CalDav integration was community maintained. He'll take a look!

samizdis commented 2 years ago

How is this going? I'm currently straddling GCal/Calendly, but would rather keep with my CalDav setup. I'm also happy to try to help/code, but would require guidance.

alishaz-polymath commented 2 years ago

Hey @samizdis Thanks for your offer. Yeah I've compiled a CalDAV specific thread where we explore and take down all CalDAV issues. https://github.com/calcom/cal.com/issues/3457

You can keep it under tabs there and any help is greatly appreciated. Do let me know what you wish to help out with, and I'll be happy to provide any necessary guidance for it. 🙏

alishaz-polymath commented 2 years ago

Fix merged.

saschafoerster commented 2 years ago

Full-day events created with Kerio are still shown as busy, even though they are marked as free. Here the extract from iCal-file.

Also, they seem to be moved by two hours (which only happens with full day events, regular events in the same calendar are shown in the correct timezone)

BEGIN:VEVENT
DTSTAMP:20220830T062125Z
UID:63e9e460-2a7c-4756-b556-dd9daeaa6cdb
DTSTART;VALUE=DATE;TZID="Amsterdam, Belgrade, Berlin, Brussels, Budapest, Madrid, Paris, Prague, Stockholm":20220902
SUMMARY:All-Day event created with Kerio (free/not busy)
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
DTEND;VALUE=DATE;TZID="Amsterdam, Belgrade, Berlin, Brussels, Budapest, Madrid, Paris, Prague, Stockholm":20220903
X-LABEL:0
PRIORITY:5
BEGIN:VALARM
ACTION:DISPLAY
DESCRIPTION:All-Day event created with Kerio (free/not busy)
TRIGGER;VALUE=DATE-TIME:20220901T070000Z
END:VALARM
END:VEVENT

And the busy event:

BEGIN:VEVENT
DTSTAMP:20220830T062041Z
UID:9e471d57-a2bd-43a1-b5a2-daae7feb8754
DTSTART;VALUE=DATE;TZID="Amsterdam, Belgrade, Berlin, Brussels, Budapest, Madrid, Paris, Prague, Stockholm":20220901
SUMMARY:All-Day-Event created with Kerio (busy)
DTEND;VALUE=DATE;TZID="Amsterdam, Belgrade, Berlin, Brussels, Budapest, Madrid, Paris, Prague, Stockholm":20220902
X-LABEL:0
PRIORITY:5
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
BEGIN:VALARM
ACTION:DISPLAY
DESCRIPTION:All-Day-Event created with Kerio (busy)
TRIGGER;VALUE=DATE-TIME:20220831T070000Z
END:VALARM
END:VEVENT
Bildschirmfoto 2022-08-30 um 08 56 25 Bildschirmfoto 2022-08-30 um 08 56 44
alishaz-polymath commented 2 years ago

It's actually identified by the value of 'transp' and if that's not part of the calendar object, there doesn't seem to be any way of knowing (as far as I know) or identifying the transparent/free state

samizdis commented 2 years ago

Wanna confirm that this works for me now, using Baikal ❤️ Thanks so much

alishaz-polymath commented 2 years ago

Wanna confirm that this works for me now, using Baikal ❤️ Thanks so much

Thank you for confirming this. Glad to know it's working on Baikal. Much appreciated 🙌.

zacchiro commented 2 years ago

Still doesn't work for me with recurrent events using nextcloud caldav has a backend. (It does work now for non-recurrent full-day events though, which is an improvement, thanks!)

Here's a minimal example of an event marked with availability busy but still not blocking booking via cal.com:

BEGIN:VCALENDAR
PRODID:-//Ximian//NONSGML Evolution Calendar//EN
VERSION:2.0
METHOD:PUBLISH
BEGIN:VTIMEZONE
TZID:Europe/Paris
X-LIC-LOCATION:Europe/Paris
BEGIN:DAYLIGHT
TZNAME:CEST
TZOFFSETFROM:+0100
TZOFFSETTO:+0200
DTSTART:19810329T020000
RRULE:FREQ=YEARLY;UNTIL=20370329T010000Z;BYDAY=-1SU;BYMONTH=3
END:DAYLIGHT
BEGIN:STANDARD
TZNAME:CET
TZOFFSETFROM:+0200
TZOFFSETTO:+0100
DTSTART:19961027T030000
RRULE:FREQ=YEARLY;UNTIL=20361026T010000Z;BYDAY=-1SU;BYMONTH=10
END:STANDARD
END:VTIMEZONE
BEGIN:VEVENT
DTSTAMP:20220823T090621Z
DTSTART;TZID=Europe/Paris:20220830T140000
DTEND;TZID=Europe/Paris:20220830T144500
SEQUENCE:2
ORGANIZER;CN=Stefano Zacchiroli:mailto:*censored*
ATTENDEE;CUTYPE=INDIVIDUAL;ROLE=REQ-PARTICIPANT;PARTSTAT=ACCEPTED;
 CN=*censored*;SCHEDULE-STATUS=2.0:mailto:
 *censored*
ATTENDEE;CUTYPE=INDIVIDUAL;ROLE=OPT-PARTICIPANT;PARTSTAT=ACCEPTED;
 CN=*censored*;SCHEDULE-STATUS=2.0:mailto:
 *censored*
SUMMARY:*censored*
LOCATION:*censored*
TRANSP:OPAQUE
RRULE:FREQ=WEEKLY;UNTIL=20221225T130000Z;BYDAY=TU
CLASS:PUBLIC
CREATED:20220824T074516Z
LAST-MODIFIED:20220824T074516Z
RECURRENCE-ID;TZID=Europe/Paris:20220830T140000
END:VEVENT
END:VCALENDAR
PeerRich commented 2 years ago

reopening @alishaz-polymath

alishaz-polymath commented 2 years ago

Still doesn't work for me with recurrent events using nextcloud caldav has a backend. (It does work now for non-recurrent full-day events though, which is an improvement, thanks!)

Here's a minimal example of an event marked with availability busy but still not blocking booking via cal.com:

BEGIN:VCALENDAR
PRODID:-//Ximian//NONSGML Evolution Calendar//EN
VERSION:2.0
METHOD:PUBLISH
BEGIN:VTIMEZONE
TZID:Europe/Paris
X-LIC-LOCATION:Europe/Paris
BEGIN:DAYLIGHT
TZNAME:CEST
TZOFFSETFROM:+0100
TZOFFSETTO:+0200
DTSTART:19810329T020000
RRULE:FREQ=YEARLY;UNTIL=20370329T010000Z;BYDAY=-1SU;BYMONTH=3
END:DAYLIGHT
BEGIN:STANDARD
TZNAME:CET
TZOFFSETFROM:+0200
TZOFFSETTO:+0100
DTSTART:19961027T030000
RRULE:FREQ=YEARLY;UNTIL=20361026T010000Z;BYDAY=-1SU;BYMONTH=10
END:STANDARD
END:VTIMEZONE
BEGIN:VEVENT
DTSTAMP:20220823T090621Z
DTSTART;TZID=Europe/Paris:20220830T140000
DTEND;TZID=Europe/Paris:20220830T144500
SEQUENCE:2
ORGANIZER;CN=Stefano Zacchiroli:mailto:*censored*
ATTENDEE;CUTYPE=INDIVIDUAL;ROLE=REQ-PARTICIPANT;PARTSTAT=ACCEPTED;
 CN=*censored*;SCHEDULE-STATUS=2.0:mailto:
 *censored*
ATTENDEE;CUTYPE=INDIVIDUAL;ROLE=OPT-PARTICIPANT;PARTSTAT=ACCEPTED;
 CN=*censored*;SCHEDULE-STATUS=2.0:mailto:
 *censored*
SUMMARY:*censored*
LOCATION:*censored*
TRANSP:OPAQUE
RRULE:FREQ=WEEKLY;UNTIL=20221225T130000Z;BYDAY=TU
CLASS:PUBLIC
CREATED:20220824T074516Z
LAST-MODIFIED:20220824T074516Z
RECURRENCE-ID;TZID=Europe/Paris:20220830T140000
END:VEVENT
END:VCALENDAR

Hey @zacchiro Is your issue:

  1. Free event is marked busy? or
  2. Busy event doesn't block slots?

This particular ticket is tracking free events being incorrectly blocking the booking slots (i.e. marked busy)

zacchiro commented 2 years ago

Is your issue:

  1. Free event is marked busy? or
  2. Busy event doesn't block slots?

Ah, sorry, my issue is indeed busy events don't block booking availability.

alishaz-polymath commented 2 years ago

Is your issue:

  1. Free event is marked busy? or
  2. Busy event doesn't block slots?

Ah, sorry, my issue is indeed busy events don't block booking availability.

Okay. And can you please confirm if the free status events are currently allowing the slots to be booked or blocking them? We can track the busy events not blocking the booking slots on a separate thread thereon 🙏

alishaz-polymath commented 2 years ago

Closing this as the issue was unrelated to this ticket. Please feel free to re-open it if you face this specific issue 🙏

zacchiro commented 2 years ago

On Tue, Aug 30, 2022 at 11:24:50PM -0700, Syed Ali Shahbaz wrote:

Okay. And can you please confirm if the free status events are currently allowing the slots to be booked or blocking them? We can track the busy events not blocking the booking slots on a separate thread thereon 🙏

Yes, I can confirm that. I've double-checked that for full-day events (as I don't really have non-full-day events with "availability: free" in my calendar) and I am able to book slots in days where I have full-day (but "availability: free") events. I cannot book slots with "availability: busy", as expected.