== UC010 - Внесување на оценка '''Иницијален актер:''' Професор '''Други актери:''' - Професорот сака да внесе оценка за студент на предмет кој самиот го предава. Целта е запишана оценка која студентот веднаш ја гледа во своето уверение за положени испити. === Сценарио 1. Професорот ја отвора страницата '''Студенти''' ([wiki:UseCase009 UC009]) и наоѓа студент кој сè уште нема оценка на неговиот предмет. 2. Професорот избира оценка од 6 до 10 и избира '''Внеси оценка'''. 3. Системот го наоѓа редот во semesters_subjects кој одговара на тој студент, тој предмет и тој професор. Ако не најде ред, професорот не го предава тој студент на тој предмет и внесувањето се одбива. {{{#!sql SELECT ss.id FROM project.semesters_subjects ss JOIN project.enrolled_semesters es ON es.id = ss.enrolled_semesters_id WHERE ss.professor_id = 4 AND ss.subjects_id = 2 AND es.user_id = 1; }}} 4. Системот проверува дали предметот веќе е оценет, бидејќи врската е 1:1. {{{#!sql SELECT EXISTS ( SELECT 1 FROM project.passed_subjects ps WHERE ps.enrolled_id = ( SELECT ss.id FROM project.semesters_subjects ss JOIN project.enrolled_semesters es ON es.id = ss.enrolled_semesters_id WHERE ss.professor_id = 4 AND ss.subjects_id = 2 AND es.user_id = 1 ) ) AS already_graded; }}} 5. Ако предметот не е оценет, системот ја запишува оценката. Условите за професорот и студентот се дел од самата наредба, па оценка не може да се внесе на туѓ предмет ниту со рачно составено барање. {{{#!sql INSERT INTO project.passed_subjects (enrolled_id, grade, date_passed) SELECT ss.id, '9', now() FROM project.semesters_subjects ss JOIN project.enrolled_semesters es ON es.id = ss.enrolled_semesters_id WHERE ss.professor_id = 4 AND ss.subjects_id = 2 AND es.user_id = 1; }}} 6. Системот ја освежува табелата и новата оценка е веднаш видлива во колоната ''Оценка''. 7. Истата оценка се појавува и кај студентот, во [wiki:UseCase006 UC006]. === Алтернативни текови * '''3а.''' Професорот не го предава тој предмет на тој студент - наредбата во чекор 5 не менува ниту еден ред и системот прикажува порака за одбиен пристап. * '''4а.''' Предметот веќе е оценет - системот упатува на [wiki:UseCase011 UC011] за измена. * '''2а.''' Избрана е оценка надвор од 6 до 10 - типот grade_type дозволува само вредности од '6' до '10', па базата го одбива записот. === Забелешки * Оценката 5 не постои во типот grade_type, бидејќи непoложен предмет се претставува со отсуство на ред во passed_subjects, а не со оценка.