| 6 | | === Чекори |
| 7 | | 1. Студентот навигира до страната „Предмети“ |
| 8 | | 2. Системот го идентификува студентот врз основа на JWT токенот |
| 9 | | 3. Системот ги презема запишаните семестри и предметите поврзани со секој семестар |
| 10 | | 4. Предметите се групираат по семестар |
| 11 | | 5. За секој предмет се прикажуваат кодот, името, професорот и статусот на потпис |
| 12 | | 6. На студентот му се прикажуваат неговите предмети групирани по семестар |
| | 5 | '''Други актери:''' - |
| | 6 | |
| | 7 | Студентот сака да ги види предметите кои ги слуша во одреден запишан семестар, |
| | 8 | со професорот, кредитите, потписот и оценката доколку предметот е положен. |
| | 9 | |
| | 10 | === Сценарио |
| | 11 | |
| | 12 | 1. Студентот ја отвора страницата '''Предмети''' или избира семестар од [wiki:UseCase004 UC004]. |
| | 13 | |
| | 14 | 2. Системот ги презема предметите на избраниот запишан семестар. Оценката е LEFT JOIN, бидејќи предметите кои сè уште не се положени немаат ред во passed_subjects. |
| | 15 | {{{#!sql |
| | 16 | SELECT s.code, |
| | 17 | s.name AS subject, |
| | 18 | s.awarded_credits, |
| | 19 | ss.signature, |
| | 20 | p.name || ' ' || p.surname AS professor, |
| | 21 | ps.grade, |
| | 22 | ps.date_passed |
| | 23 | FROM project.semesters_subjects ss |
| | 24 | JOIN project.subjects s ON s.id = ss.subjects_id |
| | 25 | JOIN project.users p ON p.id = ss.professor_id |
| | 26 | LEFT JOIN project.passed_subjects ps ON ps.enrolled_id = ss.id |
| | 27 | WHERE ss.enrolled_semesters_id = 1 |
| | 28 | ORDER BY s.name; |
| | 29 | }}} |
| | 30 | |
| | 31 | 3. Системот го пресметува бројот на потписи и освоените кредити во тој семестар. |
| | 32 | {{{#!sql |
| | 33 | SELECT count(*) FILTER (WHERE ss.signature) AS signatures, |
| | 34 | count(*) AS total_subjects, |
| | 35 | coalesce(sum(s.awarded_credits) FILTER (WHERE ps.id IS NOT NULL), 0) AS earned_credits |
| | 36 | FROM project.semesters_subjects ss |
| | 37 | JOIN project.subjects s ON s.id = ss.subjects_id |
| | 38 | LEFT JOIN project.passed_subjects ps ON ps.enrolled_id = ss.id |
| | 39 | WHERE ss.enrolled_semesters_id = 1; |
| | 40 | }}} |
| | 41 | |
| | 42 | 4. Системот ја прикажува табелата со предметите и резимето со потписи и кредити. |
| | 43 | |
| | 44 | === Забелешки |
| | 45 | |
| | 46 | * Ограничувањето UNIQUE (enrolled_semesters_id, subjects_id) гарантира дека ист предмет не може да се појави двапати во ист запишан семестар. |
| | 47 | * Предуслови за предметите се чуваат во dependency_subject и можат да се прикажат дополнително. |