wiki:UseCaseImplementations

Version 3 (modified by 231151, 13 days ago) ( diff )

--

UseCaseImplementations

ИД Use Case Опис
1 Регистрација / Најава Корисникот / Вработениот / Администраторот се регистрира или најавува за да пристапи до системот.
2 Преглед на мени Корисникот може да го разгледа целото мени со производи и цени.
3 Преглед на профил Корисникот ги прегледува своите лични податоци и информации за профилот.
4 Резервација на маса Корисникот може да избере датум и време за да резервира маса.
5 Откажување на резервација Корисникот може да ја откаже претходно направената резервација.
6 Креирање нарачка Корисникот составува и потврдува нова нарачка од менито.
7 Креирање на сопствена пица Корисникот избира големина на пица и состојки за да направи пица по сопствен избор.
8 Плаќање на нарачка Корисникот ја плаќа направената нарачка преку избран начин на плаќање.
9 Преглед на нарачки / резервации Вработениот може да ги прегледа сите направени нарачки и резервации.
10 Внес на нова нарачка Вработениот внесува нова нарачка.
11 Управување со профилите на корисниците Администраторот може да ги уредува улогите, менува или брише сите профили.
12 Управување со мени Администраторот додава, менува или брише производи од менито.

1. Регистрација / Најава

Функцијата handleLogin се користи за најава на корисник во системот. Се испраќа POST барање до серверот на адресата http://localhost:8000/api/token/, каде се испраќаат корисничкото име и лозинката. Ако најавата е успешна, серверот враќа два токена – access и refresh, кои се зачувуваат во localStorage за автентикација при идни барања. Потоа функцијата прави GET барање до http://localhost:8000/api/user/ за да ги добие податоците за најавениот корисник и ги зачувува во состојбата преку setLoggedUser. Во зависност од улогата на корисникот, ако е администратор се пренасочува кон администраторскиот панел (/admin_panel), а во спротивно кон почетната страница (/). Ако дојде до грешка, се прикажува порака дека најавата не успеала.

Функцијата handleRegister ја обработува постапката за креирање нов кориснички профил. Се проверува дали лозинката е правилно потврдена — доколку не се совпаѓа со потврдата, се прикажува порака за грешка и процесот се прекинува. Ако проверката помине успешно, се испраќа POST барање до http://localhost:8000/api/register/ со сите потребни податоци: корисничко име, лозинка, е-пошта, адреса, телефонски број и изборите за прифаќање промоции и услови на користење. Кога серверот ќе врати успешен одговор, системот го известува корисникот дека регистрацијата е завршена, ги зачувува неговите податоци со setLoggedUser и го пренасочува кон почетната страница. Во случај на неуспешна регистрација, зависно од видот на грешката, се прикажува соодветна порака за проблемот.

2. Преглед на мени

Кога Menu Page ќе се вчита, преку useEffect се прават повеќе барања до backend API-то за секоја категорија, а податоците што се враќаат (име, цена, слика, опис итн.) се зачувуваат во посебни состојби како pizzas, salads, drinks итн. Секоја категорија потоа може да се избере преку мени-копчиња, при што се менува состојбата selectedSection, а компонентата динамички прикажува само тие производи.

3. Преглед на профил

Делот за ажурирање на корисничките податоци handleSave, овозможува корисникот да ги измени и зачува своите информации директно преку интерфејсот. Кога корисникот ќе направи промени во полињата за име, е-пошта, адреса, телефон или лозинка и ќе притисне „Зачувај“, функцијата handleSave прво проверува дали постојат можни грешки — на пример, дали лозинките се совпаѓаат и дали корисничкиот ID е валиден. Потоа, со помош на axios.put() се праќа барање до backend API-то, каде што се ажурираат податоците на корисникот во базата. Ако барањето успее, следи ново GET барање за да се превземат најновите податоци за корисникот и да се освежи состојбата во апликацијата преку setLoggedUser. На крај, корисникот добива порака за успешно зачувување и се пренасочува назад на почетната страница. Овој дел ја обезбедува комуникацијата меѓу фронтендот и серверот, овозможувајќи реално ажурирање на личните податоци на корисникот.

4. Резервација на маса

Функцијата checkTablesAvailability, го контролира целиот процес на проверка на достапноста на масите во ресторанот. Кога корисникот ќе внесе датум, време и број на луѓе, оваа функција праќа POST барање кон backend API-то (/api/check-table) за секоја маса од ресторанот. Backend-от враќа податок дали масата е слободна или веќе резервирана во избраниот термин. Компонентата потоа споредува дали капацитетот на таа маса е доволен за бројот на гости и соодветно ја поставува нејзината состојба во tableStatus како "available" или "unavailable". Визуелно, овие информации се прикажуваат во интерфејсот со различни бои за секоја маса, овозможувајќи му на корисникот лесно да избере каде да седи.

5. Откажување на резервација

cancelReservation функцијата се повикува кога корисникот ќе одбере да ја поништи некоја своја активна резервација. Најпрво, од localStorage се зема токенот за пристап (access token), кој служи за автентикација на корисникот при барањето кон серверот. Потоа, со помош на библиотеката axios, се праќа HTTP DELETE барање кон API-то на адресата http://localhost:8000/api/reservations/{id}/cancel/, каде што {id} претставува идентификаторот на резервацијата што се откажува. Ако серверот успешно ја обработи операцијата, резервацијата веднаш се отстранува од локалната состојба со setReservations.

6. Креирање нарачка

Функцијата handleAddToCart, го управува додавањето на производи во кошничката. Кога корисникот ќе избере пица и ја потврди големината, функцијата најпрво ја зема тековно прикажаната пица преку индексот currentIndex. Потоа проверува дали постои валиден објект (дали навистина има избрана пица), по што ја пресметува основната цена — обично преземена од backend API-то. Потоа се креира нов објект newItem, кој ги содржи сите важни информации за нарачката: ID на пицата, име, избрана големина, цена, количина и слика. Овој објект се додава во локалната состојба cartItems, која претставува тековната содржина на кошничката. Истовремено, состојбата се зачувува и во localStorage, за да се задржи нарачката дури и ако корисникот ја освежи страницата. По додавањето, бројачот на кошничката се зголемува, што веднаш визуелно се прикажува во корисничкиот интерфејс.

7. Креирање на сопствена пица

Делот за креирање сопствена нарачка во овој код ја опфаќа целата логика за персонализирање на пица. Во овај дел имаме дефинирање на handleCloseModal со showCustomizeModal, коj ја контролира видливоста и анимацијата на модалот за прилагодување. Потоа се дефинираат сите достапни состојки (items) со нивните својства како име, цена, слика, број и максимален број на додатоци. Функцијата handleAddIngredient ги додава визуелно на пицата.

8. Плаќање на нарачка

Функцијата handleCheckout ја извршува клучната логика за финализирање на купувањето. Прво проверува дали кошничката е празна, а потоа ги собира сите потребни податоци за нарачката — како што се производите, нивната количина, големина, цена, коментари и кориснички информации. Потоа преку axios.post ги испраќа овие податоци до backend серверот (http://127.0.0.1:8000/api/orders), каде што се зачувува нарачката. Доколку сè помине успешно, се прикажува порака за успешно праќање, кошничката се празни и корисникот се пренасочува кон почетната страница. Во случај на грешка, функцијата прикажува предупредување дека не успеало праќањето.

9. Преглед на нарачки / резервации

Кога корисникот ќе го избере табот „Order Review“, преку useEffect се повикува API-от get-orders и сите нарачки се зачувуваат во состојбата orders. На тој начин, вработените можат да ги видат тековните и завршените нарачки. Од друга страна, за „Reservation Review“, функцијата fetchReservationsForDate повлекува резервации од API-то reservations, ги филтрира според избраниот датум и ги прикажува за соодветните маси.

10. Внес на нова нарачка

Функцијата handleSendToKitchen најпрво проверува дали кошничката (cartItems) е празна, а потоа создава објект orderData што ги содржи сите податоци за нарачката — името на масата, типот на нарачка (дали е Dine In или Take Away), сите избрани производи, вкупната сума, коментарите и името на вработениот кој ја внел нарачката. Потоа преку axios.post се испраќа барање до http://127.0.0.1:8000/api/orders, каде што нарачката се зачувува во базата. Ако внесот е успешен, кошничката се празни, се брише коментарот и се прикажува порака „Order is sent to kitchen!“.

11. Управување со профилите на корисниците

Тука се овозможува администраторот целосно да ги контролира податоците за корисниците. Администраторот може да ги уреди податоците за избраниот корисник (како име, адреса, телефон, град и улога), при што се отвора форма со пополнети информации. Функцијата зачувување се потврдува измената со PUT барање кон серверот, каде што се ажурираат податоците во базата. Доколку корисник треба да се избрише, handleRemove испраќа DELETE барање до API-то и автоматски го отстранува корисникот од листата во интерфејсот.

12. Управување со мени

Управување со мени овозможува целосна контрола врз се што се прикажува на менито на апликацијата. Администраторот може да додава, уредува и брише производи од различни категории – како пици, салати, пијалоци, десерти, сосови и специјални понуди. Секој производ има свои основни информации (име, цена, опис, слика и достапност), кои може да се менуваат преку интуитивен интерфејс. При секоја промена, податоците се ажурираат преку REST API повици кон Django backend-от, користејќи JWT токени за автентикација.

Attachments (72)

Note: See TracWiki for help on using the wiki.