Changes between Version 1 and Version 2 of UseCase007


Ignore:
Timestamp:
09/15/26 11:39:22 (2 weeks ago)
Author:
233149
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • UseCase007

    v1 v2  
    1 == UseCase007 - Пријавување на испит
     1== UC007 - Запишување на семестар
    22
    3 === Актери
    4  * Најавен студент
     3'''Иницијален актер:''' Студент
    54
    6 === Чекори
    7  1. Студентот навигира до страната „Пријави“
    8  2. Студентот избира испитна сесија
    9  3. Системот ги прикажува предметите достапни за пријавување
    10  4. Студентот избира предмет и кликнува на копчето „Пријави“
    11  5. Системот креира нова пријава за испит за избраниот предмет и сесија
    12  6. На студентот му се прикажува потврда со сервисен и архивски број
     5'''Други актери:''' -
     6
     7Студентот сака да запише нов семестар и да избере точно пет предмети од својата
     8студиска програма. Целта е креиран запишан семестар со петте избрани предмети,
     9на секој од нив доделен професор кој тој семестар го предава предметот.
     10
     11=== Сценарио
     12
     13 1. Студентот ја отвора страницата '''Семестри''' и избира '''Запиши семестар'''.
     14
     15 2. Системот ги презема активните семестри во кои студентот сè уште не е запишан.
     16{{{#!sql
     17SELECT a.id, a.year, a.type
     18FROM project.active_semesters a
     19WHERE NOT EXISTS (
     20    SELECT 1 FROM project.enrolled_semesters es
     21    WHERE es.user_id = 3 AND es.semester_id = a.id
     22)
     23ORDER BY a.year, (a.type = 'summer');
     24}}}
     25
     26 3. Системот ги презема предметите кои ги нуди избраната студиска програма, подредени по семестарот во кој се слушаат.
     27{{{#!sql
     28SELECT s.id, s.code, s.name, s.awarded_credits, ms.mandatory_semester
     29FROM project.major_subjects ms
     30JOIN project.subjects s ON s.id = ms.subject_id
     31WHERE ms.major_id = 2
     32ORDER BY ms.mandatory_semester, s.name;
     33}}}
     34
     35 4. Системот прикажува формулар со избор на семестар, избор на студиска програма и листа на предмети со полиња за штиклирање. Бројачот покажува колку предмети се избрани, а копчето за потврда е неактивно сè додека не се избрани точно пет.
     36
     37 5. Студентот избира семестар, програма и пет предмети, па го потврдува запишувањето.
     38
     39 6. Системот отвора трансакција и го креира запишаниот семестар.
     40{{{#!sql
     41INSERT INTO project.enrolled_semesters
     42    (user_id, quota, major_id, semester_id, created_at, last_change)
     43VALUES (3, 'drzavna', 2, 3, now(), now())
     44RETURNING id;
     45}}}
     46
     47 7. Системот ги додава петте предмети на новиот запишан семестар. За секој предмет професорот се презема од professour_subjects, односно од распоредот кој професор го предава тој предмет во тој семестар.
     48{{{#!sql
     49INSERT INTO project.semesters_subjects
     50    (enrolled_semesters_id, subjects_id, professor_id, signature)
     51SELECT e.id,
     52       v.subject_id,
     53       (SELECT min(ps.prof_id)
     54          FROM project.professour_subjects ps
     55         WHERE ps.subject_id = v.subject_id
     56           AND ps.active_semester_id = e.semester_id),
     57       FALSE
     58FROM project.enrolled_semesters e,
     59     (VALUES (1), (9), (10), (11), (12)) AS v(subject_id)
     60WHERE e.user_id = 3 AND e.semester_id = 3;
     61}}}
     62
     63 8. Системот ја потврдува трансакцијата и се враќа на листата на семестри, каде новиот семестар е веќе видлив.
     64
     65=== Алтернативни текови
     66
     67 * '''5а.''' Избрани се помалку или повеќе од пет предмети - системот не го дозволува испраќањето на формуларот.
     68 * '''6а.''' Студентот веќе е запишан во тој семестар - ограничувањето UNIQUE (user_id, semester_id) го отфрла записот и системот прикажува порака.
     69 * '''7а.''' За некој предмет нема професор во тој семестар - вредноста за professor_id би била NULL, што ограничувањето NOT NULL го спречува, па целата трансакција се враќа назад.
     70
     71=== Забелешки
     72
     73 * Чекорите 6 и 7 мораат да бидат во иста трансакција, за да не остане запишан семестар без предмети.