wiki:UseCase008

Version 2 (modified by 233149, 2 weeks ago) ( diff )

--

UC008 - Генерирање и преземање на документ

Иницијален актер: Студент

Други актери: -

Студентот сака да побара документ, на пример уверение за положени испити или потврда за редовен студент, и да го преземе како PDF со своите реални податоци.

Сценарио

  1. Студентот избира Документи од менито.
  1. Системот ги презема достапните видови документи со нивната цена.
    SELECT id, type, cost
    FROM project.documents
    ORDER BY type;
    
  1. Студентот избира вид документ и потврдува.
  1. Системот ја запишува врската меѓу студентот и документот. Доколку студентот веќе го побарал истиот документ, повторното барање не создава дупликат, бидејќи примарниот клуч е составен од двете колони.
    INSERT INTO project.user_documents (user_id, document_id)
    VALUES (1, 1)
    ON CONFLICT (user_id, document_id) DO NOTHING;
    
  1. Системот го презема текстот на документот и податоците на студентот кои се вметнуваат во него.
    SELECT d.type, d.body, d.cost,
           u.name, u.surname, u."index", u.embg, u.enrollment_year
    FROM project.documents d
    CROSS JOIN project.users u
    WHERE d.id = 1 AND u.id = 1;
    
  1. За уверение за положени испити, системот ги презема и положените предмети, како во UC006.
  1. Системот го генерира PDF документот и го испраќа на преземање.
  1. Студентот подоцна може да ги види сите претходно побарани документи.
    SELECT d.type, d.cost
    FROM project.user_documents ud
    JOIN project.documents d ON d.id = ud.document_id
    WHERE ud.user_id = 1
    ORDER BY d.type;
    

Забелешки

  • Табелата user_documents е врска M:N меѓу users и documents, со составен примарен клуч (user_id, document_id).
  • Цената се чува во documents, па измена на цената важи за сите идни барања.
Note: See TracWiki for help on using the wiki.