= UC0004 - Check Full Member Meeting Attendance = '''Initiating actor:''' Board Member A Board Member records attendance for a Full Member Meeting. The scenario checks attendance for the Full Member Meeting held on 12 March 2026. == Scenario == 1. The Board Member opens the attendance screen for the Full Member Meeting. 2. The application lists full members with their RSVP, attendance status, and absence reason if one exists. {{{#!sql SELECT s.student_index, s.first_name, s.last_name, COALESCE(p.rsvp_status, 'no_response') AS rsvp_status, COALESCE(p.attendance_status, 'not_checked') AS attendance_status, aa.reason FROM full_members fm JOIN students s ON s.student_index = fm.student_index LEFT JOIN participation p ON p.student_index = fm.student_index AND p.at_name = 'Full Member Meeting' AND p.as_start_time = TIMESTAMP '2026-03-12 18:00:00' AND p.as_location = 'BEST Office' LEFT JOIN announces_absence aa ON aa.student_index = fm.student_index AND aa.at_name = 'Full Member Meeting' AND aa.as_start_time = TIMESTAMP '2026-03-12 18:00:00' AND aa.as_location = 'BEST Office' ORDER BY s.last_name, s.first_name; }}} 3. The Board Member marks Mila Jovanovska as excused. 4. The application updates the attendance status. {{{#!sql UPDATE participation SET attendance_status = 'excused' WHERE student_index = 230005 AND at_name = 'Full Member Meeting' AND as_start_time = TIMESTAMP '2026-03-12 18:00:00' AND as_location = 'BEST Office'; }}} 5. The application refreshes the attendance list. {{{#!sql SELECT p.student_index, s.first_name, s.last_name, p.rsvp_status, p.rsvp_at, p.attendance_status FROM participation p JOIN students s ON s.student_index = p.student_index WHERE p.at_name = 'Full Member Meeting' AND p.as_start_time = TIMESTAMP '2026-03-12 18:00:00' AND p.as_location = 'BEST Office' ORDER BY s.last_name, s.first_name; }}}