119 lines
3.4 KiB
Plaintext
119 lines
3.4 KiB
Plaintext
// main.rhai - Main script for the calendar backend
|
|
|
|
// Import all modules
|
|
import "scripts/events" as events;
|
|
import "scripts/users" as users;
|
|
import "scripts/calendars" as calendars;
|
|
import "scripts/utils" as utils;
|
|
|
|
// Example function to get a user's upcoming events
|
|
fn get_user_upcoming_events(user_id, days_ahead) {
|
|
let user = users::get_user(user_id);
|
|
|
|
if utils::is_empty(user) {
|
|
return "User not found";
|
|
}
|
|
|
|
// Get current date
|
|
let current_date = utils::get_current_date();
|
|
|
|
// Calculate end date
|
|
let end_date = utils::add_days_to_date(current_date, days_ahead);
|
|
|
|
// Get events in the date range
|
|
let upcoming_events = events::get_events_by_date_range(current_date, end_date);
|
|
|
|
// Filter to only include events where the user is an attendee
|
|
let user_events = [];
|
|
for event in upcoming_events {
|
|
if utils::array_contains(event.attendees, user_id) {
|
|
user_events.push(event);
|
|
}
|
|
}
|
|
|
|
return user_events;
|
|
}
|
|
|
|
// Example function to get a user's calendar summary
|
|
fn get_user_calendar_summary(user_id) {
|
|
let user = users::get_user(user_id);
|
|
|
|
if utils::is_empty(user) {
|
|
return "User not found";
|
|
}
|
|
|
|
let user_calendars = calendars::get_accessible_calendars(user_id);
|
|
let calendar_count = user_calendars.len();
|
|
|
|
let user_events = events::get_events_by_attendee(user_id);
|
|
let event_count = user_events.len();
|
|
|
|
let organized_events = events::get_events_by_organizer(user_id);
|
|
let organized_count = organized_events.len();
|
|
|
|
return #{
|
|
user_name: user.name,
|
|
calendar_count: calendar_count,
|
|
event_count: event_count,
|
|
organized_count: organized_count
|
|
};
|
|
}
|
|
|
|
// Example function to get details of a specific event
|
|
fn get_event_details(event_id) {
|
|
let event = events::get_event(event_id);
|
|
|
|
if utils::is_empty(event) {
|
|
return "Event not found";
|
|
}
|
|
|
|
let organizer = users::get_user(event.organizer_id);
|
|
let calendar = calendars::get_calendar(event.calendar_id);
|
|
|
|
let attendees_info = [];
|
|
for attendee_id in event.attendees {
|
|
let attendee = users::get_user(attendee_id);
|
|
if !utils::is_empty(attendee) {
|
|
attendees_info.push(attendee.name);
|
|
}
|
|
}
|
|
|
|
return #{
|
|
title: event.title,
|
|
description: event.description,
|
|
start_time: event.start_time,
|
|
end_time: event.end_time,
|
|
location: event.location,
|
|
organizer: organizer.name,
|
|
calendar: calendar.name,
|
|
attendees: attendees_info,
|
|
status: event.status
|
|
};
|
|
}
|
|
|
|
// Example function to create a new event
|
|
fn create_new_event(title, description, start_time, end_time, location, calendar_id, organizer_id, attendees) {
|
|
// Validate inputs
|
|
let calendar = calendars::get_calendar(calendar_id);
|
|
if utils::is_empty(calendar) {
|
|
return "Calendar not found";
|
|
}
|
|
|
|
let organizer = users::get_user(organizer_id);
|
|
if utils::is_empty(organizer) {
|
|
return "Organizer not found";
|
|
}
|
|
|
|
// Create the event
|
|
let new_event = events::create_event(
|
|
title, description, start_time, end_time, location,
|
|
calendar_id, organizer_id, attendees, false, "confirmed"
|
|
);
|
|
|
|
return #{
|
|
message: "Event created successfully",
|
|
event_id: new_event.id,
|
|
title: new_event.title
|
|
};
|
|
}
|