== UC013 - Отворање на активен семестар '''Иницијален актер:''' Администратор '''Други актери:''' - Администраторот отвора нов активен семестар, со што на студентите им се овозможува да се запишат во него преку [wiki:UseCase007 UC007]. === Сценарио 1. Администраторот избира '''Семестри''' и потоа '''Нов семестар'''. 2. Системот ги прикажува веќе отворените семестри, за да се избегне дупликат. {{{#!sql SELECT id, year, type FROM project.active_semesters ORDER BY year DESC, (type = 'summer') DESC; }}} 3. Администраторот внесува година и тип на семестар (зимски или летен) и потврдува. 4. Системот го отвора семестарот. Ограничувањето UNIQUE (year, type) спречува ист семестар да се отвори двапати. {{{#!sql INSERT INTO project.active_semesters (year, type) VALUES (2027, 'summer') RETURNING id, year, type; }}} 5. Системот проверува дали секој предмет има професор во новиот семестар, бидејќи без тоа студентите не можат да го запишат предметот. {{{#!sql SELECT s.id, s.code, s.name FROM project.subjects s WHERE NOT EXISTS ( SELECT 1 FROM project.professour_subjects ps WHERE ps.subject_id = s.id AND ps.active_semester_id = (SELECT id FROM project.active_semesters WHERE year = 2027 AND type = 'summer') ) ORDER BY s.code; }}} 6. Ако листата не е празна, администраторот преминува на [wiki:UseCase014 UC014] за да ги распореди професорите. === Алтернативни текови * '''4а.''' Семестарот веќе е отворен - ограничувањето UNIQUE (year, type) го одбива записот. === Забелешки * Типот на семестар е набројувачки тип semester_type со вредности 'summer' и 'winter'.