= UseCaseB - Администратор === UseCaseB01 – Додавање состојка во каталогот * Актер кој го иницира: Администратор * Други актери: Нема **Опис:** Администраторот го одржува централниот каталог на прехранбени производи. Новата состојка се додава со нејзината енергетска вредност и нутритивен состав на 100 g, со цел пресметките на рецептите на сите корисници да можат да ги користат овие податоци. * Администраторот ја избира опцијата „Додај состојка“. * Системот прикажува форма со следните полиња: 1. Име 2. Опис 3. Енергетска вредност (kJ на 100 g) 4. Kcal (на 100 g) 5. Тип (млечни производи, месо, риба, јаглехидрати, зеленчук, …) 6. Нутритивен состав на 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; }}} === [https://develop.finki.ukim.mk/projects/nutritioneer/wiki/UseCaseModel ⬅️Назад кон општ преглед]