// events.rhai - Functions for handling calendar events import "utils" as utils; import "../models/event_model" as event_model; // Get all events fn get_all_events() { return event_model::get_sample_events(); } // Get a specific event by ID fn get_event(event_id) { let events = get_all_events(); return utils::find_by_id(events, event_id); } // Get events for a specific calendar fn get_events_by_calendar(calendar_id) { let events = get_all_events(); return utils::filter_by_property(events, "calendar_id", calendar_id); } // Get events for a specific user (as attendee) fn get_events_by_attendee(user_id) { let events = get_all_events(); let user_events = []; for event in events { if utils::array_contains(event.attendees, user_id) { user_events.push(event); } } return user_events; } // Get events organized by a specific user fn get_events_by_organizer(user_id) { let events = get_all_events(); return utils::filter_by_property(events, "organizer_id", user_id); } // Get events for a specific date range fn get_events_by_date_range(start_date, end_date) { let events = get_all_events(); let filtered_events = []; for event in events { let event_start = event.start_time; // Simple string comparison - in a real app, we would use proper date comparison if event_start >= start_date && event_start <= end_date { filtered_events.push(event); } } return filtered_events; } // Create a new event fn create_event(title, description, start_time, end_time, location, calendar_id, organizer_id, attendees, recurring, status) { // Generate a simple ID (in a real app, we would use a proper ID generation method) let id = "event" + (get_all_events().len() + 1).to_string(); return event_model::create_event( id, title, description, start_time, end_time, location, calendar_id, organizer_id, attendees, recurring, status ); } // Format event details for display fn format_event(event) { if utils::is_empty(event) { return "Event not found"; } let start_date = utils::format_date(event.start_time); let start_time = utils::format_time(event.start_time); let end_time = utils::format_time(event.end_time); return `${event.title} (${start_date}, ${start_time} - ${end_time}) Location: ${event.location} Description: ${event.description} Status: ${event.status}`; }