Skip to content
Draft
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
47 changes: 9 additions & 38 deletions drivers/place/room_booking_approval.cr
Original file line number Diff line number Diff line change
Expand Up @@ -87,45 +87,9 @@ class Place::RoomBookingApproval < PlaceOS::Driver
end

@[Security(Level::Support)]
def accept_recurring_event(calendar_id : String, recurring_event_id : String, user_id : String? = nil, period_start : Int64? = nil, period_end : Int64? = nil, notify : Bool = false, comment : String? = nil)
def accept_recurring_event(calendar_id : String, recurring_event_id : String, user_id : String? = nil, notify : Bool = false, comment : String? = nil)
logger.debug { "accepting recurring event #{recurring_event_id} on #{calendar_id}" }

if period_start || period_end
# Use provided dates or default to now and 1 year ahead
now = Time.utc
start_time = period_start || now.to_unix
end_time = period_end || (now + 1.year).to_unix

# Find all instances of this recurring event
events = Array(PlaceCalendar::Event).from_json calendar.list_events(
calendar_id: calendar_id,
period_start: start_time,
period_end: end_time,
user_id: user_id,
include_cancelled: false
).get.to_json
logger.debug { "Found #{events.size} events on calendar #{calendar_id}" }

recurring_instances = events.select { |event| event.recurring_event_id == recurring_event_id }
logger.info { "Found #{recurring_instances.size} instances of recurring event #{recurring_event_id}" }

# Accept each instance
accepted_count = 0
recurring_instances.each do |event|
begin
calendar.accept_event(calendar_id, event.id, user_id: user_id, notify: notify, comment: comment)
accepted_count += 1
logger.debug { "Accepted recurring event instance #{event.id}" }
rescue error
logger.warn(exception: error) { "Failed to accept recurring event instance #{event.id}" }
end
end

logger.info { "Accepted #{accepted_count} instances of recurring event #{recurring_event_id}" }
else
calendar.accept_event(calendar_id: calendar_id, event_id: recurring_event_id, user_id: user_id, notify: notify, comment: comment)
end

calendar.accept_event(calendar_id: calendar_id, event_id: recurring_event_id, user_id: user_id, notify: notify, comment: comment)
clear_cache(event_id: recurring_event_id)
end

Expand All @@ -134,4 +98,11 @@ class Place::RoomBookingApproval < PlaceOS::Driver
calendar.decline_event(calendar_id: calendar_id, event_id: event_id, user_id: user_id, notify: notify, comment: comment)
clear_cache(event_id: event_id)
end

@[Security(Level::Support)]
def decline_recurring_event(calendar_id : String, recurring_event_id : String, user_id : String? = nil, notify : Bool = false, comment : String? = nil)
logger.debug { "declining recurring event #{recurring_event_id} on #{calendar_id}" }
calendar.decline_event(calendar_id: calendar_id, event_id: recurring_event_id, user_id: user_id, notify: notify, comment: comment)
clear_cache(event_id: recurring_event_id)
end
end
Loading