86 lines
2.5 KiB
Plaintext
86 lines
2.5 KiB
Plaintext
// 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}`;
|
|
}
|