UseCaseB - Администратор
UseCaseB01 – Додавање состојка во каталогот
- Актер кој го иницира: Администратор
- Други актери: Нема
Опис: Администраторот го одржува централниот каталог на прехранбени производи. Новата состојка се додава со нејзината енергетска вредност и нутритивен состав на 100 g, со цел пресметките на рецептите на сите корисници да можат да ги користат овие податоци.
- Администраторот ја избира опцијата „Додај состојка“.
- Системот прикажува форма со следните полиња:
- Име
- Опис
- Енергетска вредност (kJ на 100 g)
- Kcal (на 100 g)
- Тип (млечни производи, месо, риба, јаглехидрати, зеленчук, …)
- Нутритивен состав на 100 g
- Администраторот ги внесува податоците и ја испраќа формата.
- Системот ја внесува состојката.
INSERT INTO ingredient (name, description, energy, kcal, type) VALUES (:name, :description, :energy, :kcal, :type);
- Системот внесува по еден запис за секоја хранлива материја пронајдена во состојката.
INSERT INTO ingredient_contains_nutrient (ingredient_name, nutrient_id, quantity) VALUES (:ingredient_name, :nutrient_id, :quantity);
UseCaseB02 – Модерирање на пријавена објава
- Актер кој го иницира: Администратор
- Други актери: Редовен корисник (авторот на објавата)
Опис: Администраторот прегледува објава која била пријавена од други корисници и ја отстранува од почетната страница со нејзино архивирање или брише поединечен навредлив коментар. Архивирањето го зачувува записот за авторот наместо целосно да ја уништи неговата објава.
- Администраторот ја избира опцијата „Модерирај содржина“.
- Системот ги прикажува објавените објави заедно со бројот на коментари на секоја објава.
SELECT p.id, u.username, r.name AS recipe, p.created_at, COUNT(c.id) AS comment_count FROM post p JOIN "user" u ON u.email = p.created_by LEFT JOIN recipe r ON r.id = p.recipe_id LEFT JOIN comment c ON c.post_id = p.id WHERE p.status = 'published' GROUP BY p.id, u.username, r.name, p.created_at ORDER BY p.created_at DESC; - Администраторот отвора објава и ја чита нишката со коментари.
SELECT c.id, c.description, c.created_at, u.username FROM comment c JOIN "user" u ON u.email = c.created_by WHERE c.post_id = :post_id ORDER BY c.created_at;
- Администраторот ја отстранува објавата од почетната страница.
UPDATE post SET status = 'archived' WHERE id = :post_id;
- Администраторот брише поединечен коментар доколку само коментарот бил навредлив.
DELETE FROM comment WHERE id = :comment_id;
UseCaseB03 – Промовирање корисник во тренер
- Актер кој го иницира: Администратор
- Други актери: Редовен корисник (сметката која се промовира)
Опис: Администраторот му ја доделува улогата на тренер на корисник, со што корисникот добива пристап до тренерските функционалности на апликацијата.
- Администраторот ја избира опцијата „Управување со сметки“.
- Системот ги прикажува сметките со нивната моментална улога и активност.
SELECT u.email, u.username, u.role, COUNT(DISTINCT r.id) AS recipes, COUNT(DISTINCT p.id) AS posts FROM "user" u LEFT JOIN recipe r ON r.user_email = u.email LEFT JOIN post p ON p.created_by = u.email GROUP BY u.email, u.username, u.role ORDER BY recipes DESC;
- Администраторот избира сметка и ја избира новата улога.
- Системот ја ажурира улогата.
UPDATE "user" SET role = :role WHERE email = :email;
