Changes between Initial Version and Version 1 of AddServices


Ignore:
Timestamp:
03/02/26 13:14:28 (3 weeks ago)
Author:
202033
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • AddServices

    v1 v1  
     1= Додавање на услуга во категорија
     2
     3== Актери
     4 * Администратор
     5
     6== Опис
     7Администраторот додава нова услуга во постоечка категорија, со цел салонот да може да нуди структурирана листа на услуги по категории (пр. Масажи, Козметички третмани, Фризерски услуги).
     8
     9== Сценарио
     10
     11== Чекор 1
     12 Администраторот ја отвора страницата „Services“ и во делот за одредена категорија го гледа формуларот **„Add Service to {Category}“**.
     13
     14== Чекор 2
     15Администраторот ги внесува податоците за новата услуга:
     16   * име на услуга,
     17   * цена,
     18   * времетраење (во минути),
     19   * категорија (се зема од избраниот блок – соодветен `category_id`).
     20
     21== Чекор 3
     22Администраторот кликнува на копчето „Add“ за да ја додаде услугата.
     23
     24== Чекор 4
     25Системот проверува дали корисникот е најавен и дали има администраторска улога. 
     26   Прво го вчитува корисникот врз основа на неговиот `user_id`:
     27
     28{{{
     29SELECT user_id, full_name, email, phone
     30FROM "User"
     31WHERE user_id = $1;
     32}}}
     33
     34   Потоа ги вчитува неговите улоги:
     35
     36{{{
     37SELECT r.name
     38FROM UserRole ur
     39JOIN Role r ON ur.role_id = r.role_id
     40WHERE ur.user_id = $1;
     41}}}
     42
     43   Доколку улогите не содржат „admin“, системот го одбива барањето и услугата не се креира.
     44
     45== Чекор 5
     46Ако корисникот е администратор и формата е валидна (име, цена и времетраење се внесени и во дозволен опсег), системот се обидува да внесе нова услуга во базата, поврзана со избраната категорија:
     47
     48{{{
     49INSERT INTO Service (name, price, duration_minutes, category_id)
     50VALUES ($1, $2, $3, $4)
     51RETURNING *;
     52}}}
     53
     54== Чекор 6
     55Важат и следните ограничувања од дефиницијата на табелата `service`:
     56
     57{{{
     58CREATE TABLE service (
     59  service_id integer GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
     60  name varchar NOT NULL,
     61  price numeric NOT NULL,
     62  duration_minutes integer NOT NULL,
     63  category_id integer NOT NULL,
     64  CONSTRAINT fk_service_category
     65      FOREIGN KEY (category_id) REFERENCES category(category_id)
     66          ON DELETE RESTRICT,
     67  CONSTRAINT service_price_check CHECK (price >= 0),
     68  CONSTRAINT service_duration_minutes_check CHECK (duration_minutes > 0)
     69);
     70}}}
     71
     72   * Ако `category_id` не постои во табелата `category`, ќе се прекрши `FOREIGN KEY` ограничувањето `fk_service_category` и системот прикажува грешка дека категоријата не е валидна.
     73   * Ако цената е негативна или времетраењето е невалидно (≤ 0), се прекршуваат `CHECK` ограничувањата и системот прикажува порака за невалидни податоци.
     74
     75== Чекор 7
     76 Ако внесувањето е успешно, системот прикажува порака дека услугата е успешно додадена и при следното вчитување на страницата „Services“ новата услуга се прикажува под соодветната категорија.
     77
     78== Резултат
     79Новата услуга е успешно додадена во избраната категорија и достапна за прикажување и понатамошно закажување од страна на клиентите.