| 6 | | === Чекори |
| 7 | | 1. Студентот навигира до страната „Испити“ / „Положени предмети“ |
| 8 | | 2. Системот го идентификува студентот врз основа на JWT токенот |
| 9 | | 3. Системот ги презема сите положени предмети на студентот |
| 10 | | 4. За секој положен предмет се прикажуваат кодот, името, кредитите, оценката, датумот на полагање и професорот |
| 11 | | 5. На студентот му се прикажува табела со неговите положени предмети и просек |
| | 5 | '''Други актери:''' - |
| | 6 | |
| | 7 | Студентот сака да го види своето уверение за положени испити: сите предмети кои |
| | 8 | ги положил, со оценка, датум, професор, семестар и кредити, како и вкупниот број |
| | 9 | кредити и просечната оценка. |
| | 10 | |
| | 11 | === Сценарио |
| | 12 | |
| | 13 | 1. Студентот избира '''Испити''' од менито. |
| | 14 | |
| | 15 | 2. Системот ги презема сите положени предмети на студентот. Патеката до студентот оди преку запишаниот семестар, бидејќи во моделот semesters_subjects не содржи директна врска кон студентот. |
| | 16 | {{{#!sql |
| | 17 | SELECT s.code, |
| | 18 | s.name AS subject, |
| | 19 | s.awarded_credits, |
| | 20 | ps.grade, |
| | 21 | ps.date_passed, |
| | 22 | p.name || ' ' || p.surname AS professor, |
| | 23 | a.year, |
| | 24 | a.type |
| | 25 | FROM project.passed_subjects ps |
| | 26 | JOIN project.semesters_subjects ss ON ss.id = ps.enrolled_id |
| | 27 | JOIN project.enrolled_semesters es ON es.id = ss.enrolled_semesters_id |
| | 28 | JOIN project.subjects s ON s.id = ss.subjects_id |
| | 29 | JOIN project.users p ON p.id = ss.professor_id |
| | 30 | JOIN project.active_semesters a ON a.id = es.semester_id |
| | 31 | WHERE es.user_id = 1 |
| | 32 | ORDER BY ps.date_passed; |
| | 33 | }}} |
| | 34 | |
| | 35 | 3. Системот го пресметува просекот и вкупните кредити. Бидејќи grade е набројувачки тип (enum), вредноста прво се претвора во текст, па во цел број за да може да се пресмета просек. |
| | 36 | {{{#!sql |
| | 37 | SELECT round(avg(ps.grade::text::int), 2) AS average_grade, |
| | 38 | sum(s.awarded_credits) AS total_credits |
| | 39 | FROM project.passed_subjects ps |
| | 40 | JOIN project.semesters_subjects ss ON ss.id = ps.enrolled_id |
| | 41 | JOIN project.enrolled_semesters es ON es.id = ss.enrolled_semesters_id |
| | 42 | JOIN project.subjects s ON s.id = ss.subjects_id |
| | 43 | WHERE es.user_id = 1; |
| | 44 | }}} |
| | 45 | |
| | 46 | 4. Системот ја прикажува табелата со положените предмети и, под неа, просекот и вкупните кредити. |
| | 47 | |
| | 48 | 5. Студентот по желба избира '''Преземи PDF''', со што се преминува на [wiki:UseCase008 UC008]. |
| | 49 | |
| | 50 | === Забелешки |
| | 51 | |
| | 52 | * Врската меѓу semesters_subjects и passed_subjects е 1:1, обезбедена со UNIQUE врз passed_subjects.enrolled_id, па еден предмет во еден семестар може да има најмногу една оценка. |
| | 53 | * Ако студентот го слушал истиот предмет во повеќе семестри, секое слушање е посебен ред во semesters_subjects, па се гледа и во кој семестар е положен. |