Додавање на услуга во категорија
Актери
- Администратор
Опис
Администраторот додава нова услуга во постоечка категорија, со цел салонот да може да нуди структурирана листа на услуги по категории (пр. Масажи, Козметички третмани, Фризерски услуги).
Сценарио
Чекор 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“ новата услуга се прикажува под соодветната категорија.
Резултат
Новата услуга е успешно додадена во избраната категорија и достапна за прикажување и понатамошно закажување од страна на клиентите.
