wiki:UseCase0003

Version 1 (modified by 236024, 8 days ago) ( diff )

--

UC0003 - RSVP or Announce Absence for Activity Session

Initiating actor: Member

A Member views upcoming activity sessions, submits an RSVP, or announces an absence. The scenario uses Nikola Spasovski as the logged-in member.

Scenario

  1. The Member opens the list of upcoming activity sessions.
  1. The application lists upcoming sessions with the member's current RSVP and attendance status.
SELECT
    a.at_name,
    a.as_start_time,
    a.as_location,
    COALESCE(p.rsvp_status, 'no_response') AS rsvp_status,
    p.rsvp_at,
    COALESCE(p.attendance_status, 'not_checked') AS attendance_status
FROM activity_sessions a
LEFT JOIN participation p
    ON p.at_name = a.at_name
   AND p.as_start_time = a.as_start_time
   AND p.as_location = a.as_location
   AND p.student_index = 230014
WHERE a.as_start_time >= CURRENT_TIMESTAMP
ORDER BY a.as_start_time, a.at_name;
  1. The Member chooses the IT workshop and marks that they are going.
  1. The application stores the RSVP.
INSERT INTO participation (
    student_index,
    at_name,
    as_start_time,
    as_location,
    rsvp_status,
    rsvp_at,
    attendance_status
)
VALUES (
    230014,
    'IT Workshop',
    TIMESTAMP '2026-11-26 17:00:00',
    'Base42',
    'going',
    CURRENT_TIMESTAMP,
    'not_checked'
);
  1. The Member enters an absence reason for the Hackathon core team meeting.
  1. The application stores the absence announcement.
INSERT INTO announces_absence (
    student_index,
    at_name,
    as_start_time,
    as_location,
    reason,
    announced_at
)
VALUES (
    230014,
    'Core Team Meeting',
    TIMESTAMP '2026-12-01 18:30:00',
    'BEST Office',
    'Faculty obligations at the same time.',
    CURRENT_TIMESTAMP
);
  1. The application updates the participation status for the same session.
UPDATE participation
SET
    rsvp_status = 'not_going',
    rsvp_at = CURRENT_TIMESTAMP,
    attendance_status = 'excused'
WHERE student_index = 230014
  AND at_name = 'Core Team Meeting'
  AND as_start_time = TIMESTAMP '2026-12-01 18:30:00'
  AND as_location = 'BEST Office';
  1. The application shows the saved absence and updated participation status.
SELECT
    p.student_index,
    p.at_name,
    p.as_start_time,
    p.as_location,
    p.rsvp_status,
    p.rsvp_at,
    p.attendance_status,
    aa.reason,
    aa.announced_at
FROM participation p
LEFT JOIN announces_absence aa
    ON aa.student_index = p.student_index
   AND aa.at_name = p.at_name
   AND aa.as_start_time = p.as_start_time
   AND aa.as_location = p.as_location
WHERE p.student_index = 230014
  AND p.at_name = 'Core Team Meeting'
  AND p.as_start_time = TIMESTAMP '2026-12-01 18:30:00'
  AND p.as_location = 'BEST Office';
Note: See TracWiki for help on using the wiki.