| | 1 | = UseCaseB - Администратор |
| | 2 | |
| | 3 | === UseCaseB01 – Додавање состојка во каталогот |
| | 4 | * Актер кој го иницира: Администратор |
| | 5 | * Други актери: Нема |
| | 6 | **Опис:** Администраторот го одржува централниот каталог на прехранбени производи. Новата состојка се додава со нејзината енергетска вредност и нутритивен состав на 100 g, со цел пресметките на рецептите на сите корисници да можат да ги користат овие податоци. |
| | 7 | |
| | 8 | * Администраторот ја избира опцијата „Додај состојка“. |
| | 9 | * Системот прикажува форма со следните полиња: |
| | 10 | 1. Име |
| | 11 | 2. Опис |
| | 12 | 3. Енергетска вредност (kJ на 100 g) |
| | 13 | 4. Kcal (на 100 g) |
| | 14 | 5. Тип (млечни производи, месо, риба, јаглехидрати, зеленчук, …) |
| | 15 | 6. Нутритивен состав на 100 g |
| | 16 | |
| | 17 | * Администраторот ги внесува податоците и ја испраќа формата. |
| | 18 | * Системот ја внесува состојката. |
| | 19 | {{{ |
| | 20 | INSERT INTO ingredient (name, description, energy, kcal, type) |
| | 21 | VALUES (:name, :description, :energy, :kcal, :type); |
| | 22 | }}} |
| | 23 | * Системот внесува по еден запис за секоја хранлива материја пронајдена во состојката. |
| | 24 | {{{ |
| | 25 | INSERT INTO ingredient_contains_nutrient (ingredient_name, nutrient_id, quantity) |
| | 26 | VALUES (:ingredient_name, :nutrient_id, :quantity); |
| | 27 | }}} |
| | 28 | |
| | 29 | === UseCaseB02 – Модерирање на пријавена објава |
| | 30 | * Актер кој го иницира: Администратор |
| | 31 | * Други актери: Редовен корисник (авторот на објавата) |
| | 32 | **Опис:** Администраторот прегледува објава која била пријавена од други корисници и ја отстранува од почетната страница со нејзино архивирање или брише поединечен навредлив коментар. Архивирањето го зачувува записот за авторот наместо целосно да ја уништи неговата објава. |
| | 33 | |
| | 34 | * Администраторот ја избира опцијата „Модерирај содржина“. |
| | 35 | * Системот ги прикажува објавените објави заедно со бројот на коментари на секоја објава. |
| | 36 | {{{ |
| | 37 | SELECT p.id, u.username, r.name AS recipe, p.created_at, |
| | 38 | COUNT(c.id) AS comment_count |
| | 39 | FROM post p |
| | 40 | JOIN "user" u ON u.email = p.created_by |
| | 41 | LEFT JOIN recipe r ON r.id = p.recipe_id |
| | 42 | LEFT JOIN comment c ON c.post_id = p.id |
| | 43 | WHERE p.status = 'published' |
| | 44 | GROUP BY p.id, u.username, r.name, p.created_at |
| | 45 | ORDER BY p.created_at DESC; |
| | 46 | }}} |
| | 47 | * Администраторот отвора објава и ја чита нишката со коментари. |
| | 48 | {{{ |
| | 49 | SELECT c.id, c.description, c.created_at, u.username |
| | 50 | FROM comment c |
| | 51 | JOIN "user" u ON u.email = c.created_by |
| | 52 | WHERE c.post_id = :post_id |
| | 53 | ORDER BY c.created_at; |
| | 54 | }}} |
| | 55 | * Администраторот ја отстранува објавата од почетната страница. |
| | 56 | {{{ |
| | 57 | UPDATE post |
| | 58 | SET status = 'archived' |
| | 59 | WHERE id = :post_id; |
| | 60 | }}} |
| | 61 | * Администраторот брише поединечен коментар доколку само коментарот бил навредлив. |
| | 62 | {{{ |
| | 63 | DELETE FROM comment |
| | 64 | WHERE id = :comment_id; |
| | 65 | }}} |
| | 66 | |
| | 67 | === UseCaseB03 – Промовирање корисник во тренер |
| | 68 | * Актер кој го иницира: Администратор |
| | 69 | * Други актери: Редовен корисник (сметката која се промовира) |
| | 70 | **Опис:** Администраторот му ја доделува улогата на тренер на корисник, со што корисникот добива пристап до тренерските функционалности на апликацијата. |
| | 71 | * Администраторот ја избира опцијата „Управување со сметки“. |
| | 72 | * Системот ги прикажува сметките со нивната моментална улога и активност. |
| | 73 | {{{ |
| | 74 | SELECT u.email, u.username, u.role, |
| | 75 | COUNT(DISTINCT r.id) AS recipes, |
| | 76 | COUNT(DISTINCT p.id) AS posts |
| | 77 | FROM "user" u |
| | 78 | LEFT JOIN recipe r ON r.user_email = u.email |
| | 79 | LEFT JOIN post p ON p.created_by = u.email |
| | 80 | GROUP BY u.email, u.username, u.role |
| | 81 | ORDER BY recipes DESC; |
| | 82 | }}} |
| | 83 | |
| | 84 | * Администраторот избира сметка и ја избира новата улога. |
| | 85 | * Системот ја ажурира улогата. |
| | 86 | {{{ |
| | 87 | UPDATE "user" |
| | 88 | SET role = :role |
| | 89 | WHERE email = :email; |
| | 90 | }}} |
| | 91 | |
| | 92 | === [https://develop.finki.ukim.mk/projects/nutritioneer/wiki/UseCaseModel ⬅️Назад кон општ преглед] |