= Финална имплементација на случаи на употреба = На следната табела се прикажани сработените кориснички сценарија || ID || Use Case || || 1 || Кошничка - нелогиран корисник || || 2 || Логирање - Оpen Authorization protocol || || 3 || Известување при промена на статус (frontend) || || 4 || Известување на продавачот за нова нарачка (frontend) || || 5 || Известување по е-пошта (добива порака на email) || || 6 || Додај во омилени (wishlist) || [[Image()]] == ИД: 1 - Kошничка - нелогиран корисник == При вчитување на основната страна, сега корисникот иако не е најавен ќе може да види дека има опција за да се купи производот. Доколку сака истиот да го купи, ќе го пренасочи на страната за логирање. [[Image(home_nelogiran.jpg)]] [[BR]] Кошничката работи за најавени корисници преку серверски API, а за нелогирани се зачувува во localStorage и синхронизира при најава. [[Image(koshnicka_nk.png)]] == ИД: 2 - Логирање - Оpen Authorization protocol == Корисниците се аутентицираат со JWT или преку Google OAuth; при OAuth backend ги линкува или креира корисниците, а ако постои сметка со лозинка OAuth се блокира. Кога корисникот ќе ја кликне опцијата за најава со google, на backend делот се иницира OAuth протоколот кон Google и се автентицира корисничката сметка и повикува callback на backend-от каде ќе проба да најде корисник по google_id. Ако постои го враќа тој корисник. Ако не најде по google_id ќе проба по email. Ако има user со тој email и тој user има password, OAuth логин се одбива и враќа порака да се најави со лозинка. Ако има user со тој email но нема password, се „линкува“ Google профилот и се враќа тој user, а ако нема user со тој email се креира нов user во users табелата со google_id и генераран username, и се враќа новиот user. По успешен автентицирање, backend издава JWT и се враќа кон frontend callback страница со токен. [[Image(oauth.png)]] [[BR]] [[Image(oauth_2.png)]] [[Image(oauth_3.png)]] [[Image(oauth_4.png)]] == ИД: 3 - Известување при промена на статус == Со промена на статусот од страна на продавницата, на страната на купувачот, во делот за известувања му стигнува нова порака дека статусот на нарачаниот продукт е променет. [[Image(Izvestuvanje_kupuvac.jpg)]] [[BR]] [[Image(naracki_kupuvac.png)]] [[Image(notification_frontend_1.png)]] [[Image(notification_frontend_2.png)]] [[BR]] Eве ги следните функционалности на страната на серверот. [[Image(notification_backend_1.png)]] [[Image(notification_backend_2.png)]] [[Image(notification_backend_3.png)]] [[Image(notifications.png)]] == ИД: 4 - Известување на продавачот за нова нарачка == Кога ќе се купи продукт од таа продавница, на профилот на продавачот, во header-от кај делот за известувања се појакува икона дека е стигната пораката и доколку се отвори самата порака се пренасочува корисникот до продавачкиот панел каде може да ги разгледа сите нарачки. [[Image(izvestuvanje_prodavac.jpg)]] [[BR]] [[Image(prodavacki_panel.png)]] [[BR]] По успешен checkout, се предаваат информациите за ид на продавач и ид на купувач во функцијата createNotification, кој само вметнува ред во базата за податоци. [[Image(notification_buyer.png)]] [[Image(notification_buyer_baza.png)]] == ИД: 5 - Известување по е-пошта == Во оваа потточка се имплементирани на друг начин барањата со ид 3 и ид 4, само што сека наместо да добива известувања на страната, корисникот добива известувања на неговата е-пошта. [[Image(arhitektura_na_email.png)]] При промена на статусот од страна на купувачот се добива соодветна порака. [[Image(email_do_kupuvacot.png)]] [[Image(prakanje_email_na_kupuvac.png)]] Со купување на продукт од таа продавница, на продавницата стигнува порака дека имаат нова нарачка. [[Image(email_do_prodavacot.png)]] [[Image(email_do_prodavac.png)]] == ИД: 6 - Додај во омилени (wishlist) == По кликањето на иконата се прави барање до серверот. Само најавени корисници може да ги менуваат/видат своите омилени продукти. Серверот може да врати листа на фаворити за тековниот корисник, да додаде во омилени или да отстрани од омилени. [[Image(wishlist.jpg)]] [[BR]] [[Image(wishlist2.jpg)]] [[Image(favourite_frontend.png)]] [[Image(favourites_backend_1.png)]] [[Image(favourites_backend_2.png)]]