Files
calendar/specs/cancellation-reason-requirement/implementation.md
T
Udit TakkarGitHubKeith WilliamsDevin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
e3a9f54ba5 feat: Configure cancellation reason (#26872)
* feat: Configure cancellation reason

* fix: use enums

* tests: add unit tests

* fix: type error

* chore: remove duplicate dialog

* fix: type erro

* refator: improvements

* refator: improvements

---------

Co-authored-by: Keith Williams <keithwillcode@gmail.com>
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-02-24 13:35:51 -03:00

1.2 KiB

Cancellation Reason Requirement Implementation

Status: complete

Completed

  1. Added CancellationReasonRequirement enum to schema.prisma (line 129)
  2. Added requiresCancellationReason column to EventType model (line 269)
  3. Created database migration (20260115111819_add_cancellation_reason_require)
  4. Added translation keys to English locale (common.json)
  5. Added dropdown setting in EventAdvancedTab (lines 691-719)
  6. Added requiresCancellationReason to getEventTypesFromDB select (apps/web/lib/booking.ts)
  7. Passed requiresCancellationReason prop through:
    • bookings-single-view.tsx → CancelBooking
    • CancelBookingDialog.tsx → CancelBooking
  8. Updated CancelBooking component Props and validation logic
  9. Added server-side validation in handleCancelBooking
  10. Added requiresCancellationReason to getBookingToDelete select
  11. Fixed dynamic label to show "(optional)" only when isReasonRequiredForUser() returns false

In Progress

Blocked

Next Steps

  • Test the feature end-to-end
  • Verify all dropdown options work correctly
  • Verify dynamic label shows "(optional)" only when appropriate

Session Notes

  • Enum and column were already added to schema during planning phase
  • Migration was already created