wiki:AddServices

Додавање на услуга во категорија

Актери

  • Администратор

Опис

Администраторот додава нова услуга во постоечка категорија, со цел салонот да може да нуди структурирана листа на услуги по категории (пр. Масажи, Козметички третмани, Фризерски услуги).

Сценарио

Чекор 1

Администраторот ја отвора страницата „Services“ и во делот за одредена категорија го гледа формуларот „Add Service to {Category}“.

Чекор 2

Администраторот ги внесува податоците за новата услуга:

  • име на услуга,
  • цена,
  • времетраење (во минути),
  • категорија (се зема од избраниот блок – соодветен category_id).

Чекор 3

Администраторот кликнува на копчето „Add“ за да ја додаде услугата.

Чекор 4

Системот проверува дали корисникот е најавен и дали има администраторска улога.

Прво го вчитува корисникот врз основа на неговиот user_id:

SELECT user_id, full_name, email, phone
FROM "User"
WHERE user_id = $1;

Потоа ги вчитува неговите улоги:

SELECT r.name
FROM UserRole ur
JOIN Role r ON ur.role_id = r.role_id
WHERE ur.user_id = $1;

Доколку улогите не содржат „admin“, системот го одбива барањето и услугата не се креира.

Чекор 5

Ако корисникот е администратор и формата е валидна (име, цена и времетраење се внесени и во дозволен опсег), системот се обидува да внесе нова услуга во базата, поврзана со избраната категорија:

INSERT INTO Service (name, price, duration_minutes, category_id)
VALUES ($1, $2, $3, $4)
RETURNING *;

Чекор 6

Важат и следните ограничувања од дефиницијата на табелата service:

CREATE TABLE service (
  service_id integer GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
  name varchar NOT NULL,
  price numeric NOT NULL,
  duration_minutes integer NOT NULL,
  category_id integer NOT NULL,
  CONSTRAINT fk_service_category
      FOREIGN KEY (category_id) REFERENCES category(category_id)
          ON DELETE RESTRICT,
  CONSTRAINT service_price_check CHECK (price >= 0),
  CONSTRAINT service_duration_minutes_check CHECK (duration_minutes > 0)
);
  • Ако category_id не постои во табелата category, ќе се прекрши FOREIGN KEY ограничувањето fk_service_category и системот прикажува грешка дека категоријата не е валидна.
  • Ако цената е негативна или времетраењето е невалидно (≤ 0), се прекршуваат CHECK ограничувањата и системот прикажува порака за невалидни податоци.

Чекор 7

Ако внесувањето е успешно, системот прикажува порака дека услугата е успешно додадена и при следното вчитување на страницата „Services“ новата услуга се прикажува под соодветната категорија.

Резултат

Новата услуга е успешно додадена во избраната категорија и достапна за прикажување и понатамошно закажување од страна на клиентите.

Last modified 3 weeks ago Last modified on 03/02/26 13:14:28
Note: See TracWiki for help on using the wiki.