| | 1 | = UC0004 - Check Full Member Meeting Attendance = |
| | 2 | |
| | 3 | '''Initiating actor:''' Board Member |
| | 4 | |
| | 5 | A Board Member records attendance for a Full Member Meeting. The scenario checks attendance for the Full Member Meeting held on 12 March 2026. |
| | 6 | |
| | 7 | == Scenario == |
| | 8 | |
| | 9 | 1. The Board Member opens the attendance screen for the Full Member Meeting. |
| | 10 | |
| | 11 | 2. The application lists full members with their RSVP, attendance status, and absence reason if one exists. |
| | 12 | |
| | 13 | {{{#!sql |
| | 14 | SELECT |
| | 15 | s.student_index, |
| | 16 | s.first_name, |
| | 17 | s.last_name, |
| | 18 | COALESCE(p.rsvp_status, 'no_response') AS rsvp_status, |
| | 19 | COALESCE(p.attendance_status, 'not_checked') AS attendance_status, |
| | 20 | aa.reason |
| | 21 | FROM full_members fm |
| | 22 | JOIN students s |
| | 23 | ON s.student_index = fm.student_index |
| | 24 | LEFT JOIN participation p |
| | 25 | ON p.student_index = fm.student_index |
| | 26 | AND p.at_name = 'Full Member Meeting' |
| | 27 | AND p.as_start_time = TIMESTAMP '2026-03-12 18:00:00' |
| | 28 | AND p.as_location = 'BEST Office' |
| | 29 | LEFT JOIN announces_absence aa |
| | 30 | ON aa.student_index = fm.student_index |
| | 31 | AND aa.at_name = 'Full Member Meeting' |
| | 32 | AND aa.as_start_time = TIMESTAMP '2026-03-12 18:00:00' |
| | 33 | AND aa.as_location = 'BEST Office' |
| | 34 | ORDER BY s.last_name, s.first_name; |
| | 35 | }}} |
| | 36 | |
| | 37 | 3. The Board Member marks Mila Jovanovska as excused. |
| | 38 | |
| | 39 | 4. The application updates the attendance status. |
| | 40 | |
| | 41 | {{{#!sql |
| | 42 | UPDATE participation |
| | 43 | SET attendance_status = 'excused' |
| | 44 | WHERE student_index = 230005 |
| | 45 | AND at_name = 'Full Member Meeting' |
| | 46 | AND as_start_time = TIMESTAMP '2026-03-12 18:00:00' |
| | 47 | AND as_location = 'BEST Office'; |
| | 48 | }}} |
| | 49 | |
| | 50 | 5. The application refreshes the attendance list. |
| | 51 | |
| | 52 | {{{#!sql |
| | 53 | SELECT |
| | 54 | p.student_index, |
| | 55 | s.first_name, |
| | 56 | s.last_name, |
| | 57 | p.rsvp_status, |
| | 58 | p.rsvp_at, |
| | 59 | p.attendance_status |
| | 60 | FROM participation p |
| | 61 | JOIN students s |
| | 62 | ON s.student_index = p.student_index |
| | 63 | WHERE p.at_name = 'Full Member Meeting' |
| | 64 | AND p.as_start_time = TIMESTAMP '2026-03-12 18:00:00' |
| | 65 | AND p.as_location = 'BEST Office' |
| | 66 | ORDER BY s.last_name, s.first_name; |
| | 67 | }}} |