Changes between Version 1 and Version 2 of UCA


Ignore:
Timestamp:
09/15/26 02:34:53 (2 weeks ago)
Author:
201165
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • UCA

    v1 v2  
    12123. Број на порции
    13134. Листа на состојки (состојка + количина во грами)
    14 5. Диететски ограничувања
     145. Диетални ограничувања
    1515* Корисникот ги внесува податоците и ја испраќа формата.
    1616* Системот го зачувува рецептот и го доделува како сопственост на најавениот корисник.
    … …  
    5353   VALUES (:planner_id, :post_id);
    5454}}}
     55* Системот ја пресметува енергетската вредност на записот, земајќи една порција од секој прикачен рецепт.
     56{{{
     57UPDATE intake_planner ip
     58   SET kcal = ROUND(COALESCE((
     59           SELECT SUM(r.kcal_sum / r.servings)
     60           FROM intake_planner_save_to_list_post sp
     61           JOIN post   p ON p.id = sp.post_id
     62           JOIN recipe r ON r.id = p.recipe_id
     63           WHERE sp.planner_id = ip.id
     64       ), 0), 2)
     65   WHERE ip.id = :planner_id;
     66}}}
     67=== UseCaseA03 – Креирање листа за пазарење од рецепти
     68* Актер кој го иницира: Редовен корисник
     69* Други актери: Нема
     70**Опис:** Корисникот креира листа за пазарење со додавање на цели рецепти одеднаш и додавање на поединечни производи дополнително. Системот ја пресметува вкупната енергетска вредност на сè што е додадено на листата.
     71* Корисникот ја избира опцијата „Нова листа за пазарење“.
     72* Системот прикажува форма со следните полиња:
     731. Датум и време
     742. Забелешки
     753. Рецепти за додавање во целост
     764. Поединечни состојки со количина за купување
     77* Корисникот ги внесува податоците и ја испраќа формата.
     78* Системот ја внесува листата.
     79{{{
     80   INSERT INTO grocery_list (date_time, notes, is_bought, kcal, user_email)
     81   VALUES (:date_time, :notes, FALSE, 0, :user_email)
     82   RETURNING id;
     83}}}
     84* Системот го додава секој избран рецепт во целост.
     85{{{
     86   INSERT INTO grocery_list_bulk_add_ingredient (list_id, recipe_id)
     87   VALUES (:list_id, :recipe_id);
     88}}}
     89* Системот ја додава секоја поединечно избрана состојка.
     90{{{
     91   INSERT INTO grocery_list_single_add_ingredient (list_id, ingredient_name, buy_quantity)
     92   VALUES (:list_id, :ingredient_name, :buy_quantity);
     93}}}
     94* Системот ја пресметува вкупната енергетска вредност на листата.
     95{{{
     96UPDATE grocery_list g
     97   SET kcal = ROUND(
     98         COALESCE((SELECT SUM(r.kcal_sum)
     99                   FROM grocery_list_bulk_add_ingredient b
     100                   JOIN recipe r ON r.id = b.recipe_id
     101                   WHERE b.list_id = g.id), 0)
     102       + COALESCE((SELECT SUM(i.kcal * s.buy_quantity / 100.0)
     103                   FROM grocery_list_single_add_ingredient s
     104                   JOIN ingredient i ON i.name = s.ingredient_name
     105                   WHERE s.list_id = g.id), 0)
     106       , 2)
     107   WHERE g.id = :list_id;
     108}}}
     109* Системот ја прикажува обединетата листа за пазарење, групирана според категоријата на состојките.
     110{{{
     111   SELECT i.type, i.name, SUM(x.quantity) AS total_grams
     112   FROM (
     113       SELECT rci.ingredient_name AS name, rci.ingredient_quantity AS quantity
     114       FROM grocery_list_bulk_add_ingredient b
     115       JOIN recipe_contains_ingredient rci ON rci.recipe_id = b.recipe_id
     116       WHERE b.list_id = :list_id
     117       UNION ALL
     118       SELECT s.ingredient_name, s.buy_quantity
     119       FROM grocery_list_single_add_ingredient s
     120       WHERE s.list_id = :list_id
     121   ) AS x
     122   JOIN ingredient i ON i.name = x.name
     123   GROUP BY i.type, i.name
     124   ORDER BY i.type, i.name;
     125}}}
     126* Корисникот ја означува листата како купена по завршувањето на пазарењето.
     127{{{
     128   UPDATE grocery_list
     129   SET is_bought = TRUE
     130   WHERE id = :list_id AND user_email = :user_email;
     131}}}
     132
     133
     134
     135
     136
    55137
    56138