diff --git a/backend/src/handlers/events.rs b/backend/src/handlers/events.rs index 500f99f..ba9ca2d 100644 --- a/backend/src/handlers/events.rs +++ b/backend/src/handlers/events.rs @@ -417,11 +417,19 @@ pub async fn create_event( let end_datetime = parse_event_datetime(&request.end_date, &request.end_time, request.all_day) .map_err(|e| ApiError::BadRequest(format!("Invalid end date/time: {}", e)))?; - // Validate that end is after start - if end_datetime <= start_datetime { - return Err(ApiError::BadRequest( - "End date/time must be after start date/time".to_string(), - )); + // Validate that end is after start (allow equal times for all-day events) + if request.all_day { + if end_datetime < start_datetime { + return Err(ApiError::BadRequest( + "End date must be on or after start date for all-day events".to_string(), + )); + } + } else { + if end_datetime <= start_datetime { + return Err(ApiError::BadRequest( + "End date/time must be after start date/time".to_string(), + )); + } } // Generate a unique UID for the event @@ -707,11 +715,19 @@ pub async fn update_event( let end_datetime = parse_event_datetime(&request.end_date, &request.end_time, request.all_day) .map_err(|e| ApiError::BadRequest(format!("Invalid end date/time: {}", e)))?; - // Validate that end is after start - if end_datetime <= start_datetime { - return Err(ApiError::BadRequest( - "End date/time must be after start date/time".to_string(), - )); + // Validate that end is after start (allow equal times for all-day events) + if request.all_day { + if end_datetime < start_datetime { + return Err(ApiError::BadRequest( + "End date must be on or after start date for all-day events".to_string(), + )); + } + } else { + if end_datetime <= start_datetime { + return Err(ApiError::BadRequest( + "End date/time must be after start date/time".to_string(), + )); + } } // Update event properties diff --git a/frontend/src/components/week_view.rs b/frontend/src/components/week_view.rs index 6a5f366..cd9c139 100644 --- a/frontend/src/components/week_view.rs +++ b/frontend/src/components/week_view.rs @@ -319,11 +319,52 @@ pub fn week_view(props: &WeekViewProps) -> Html { week_days.iter().map(|date| { let is_today = *date == props.today; let weekday_name = get_weekday_name(date.weekday()); + let day_events = props.events.get(date).cloned().unwrap_or_default(); + + // Filter for all-day events only + let all_day_events: Vec<_> = day_events.iter().filter(|event| event.all_day).collect(); html! {