wiki:UseCaseRealizations

Version 21 (modified by 191027, 2 years ago) ( diff )

--

UseCaseRealizations

0. Сите

ID 1
Случај на употреба Најава на кориснички профил
  • Се пристапува до почетната страна на апликацијата преку соодветното URL.
  • Се прикажува изгледот кој нуди 3 опции: Најава (како регистриран паркирач), Најава како гостин и Регистрирај се. (слика 1.1).
  • Се внесува емаил адресата и соодветниот пасворд од корисничкиот профил претходно креиран и се притиска на копчето за "Најава".
  • Доколку се работи за корисник кој нема профил, а не сака да се регистрира, во тој случај постои опција за "Најава како гостин" која директно го пушта во системот.
  • Со притискање на копчето за најава преку axios POST повик се праќа барање на /api/login за најава до бекендот.
  • Барањето за најава патува низ филтер chainot каде што е пречекано од нашиот CustomAuthenticationFilter кој од податоците за најава креира authenticationToken кој потоа се предава на authenticationManager да ја потврди точноста на лозинката и емаил адресата кои се наоѓаат во некој од нашите кориснички репозиториуми.
  • Доколку комбинацијата на лозинка и емаил адреса се покаже како валидна CustomAuthentication со повик на методот successfulAuthentication во зависност од типот на корисник кој се логирал ( односно од кој репозиториум се добила потврда за точноста на податоците ) се гради соодветен JsonWebToken кој се праќа до фронтот за авторизација на понатамошни повици до бекендот. Доколку е неуспешна најавата корисникот е вратен на почетната страна со соодветно известување за неуспешната најава.
  • Претходниве чекори 4-6 се идентични за секој тип на корисник освен за Guestot. По успешна најава Workerot и Administratorot се пренасочени на страната со приказ на картички за паркинг зони додека пак Guest и RegisteredUser се пренасочени на мапа со приказ на паркинг зоните и паркинг местата соодветно.


1. Регистриран Паркирач

ID 1
Случај на употреба Регистрација на кориснички профил
  • Се пристапува до почетната страна на апликацијата преку соодветното URL.
  • Се прикажува изгледот кој нуди 3 опции: "Најава" (како регистриран паркирач), "Најава како гостин" и "Регистрирај се". Се кликнува на "Регистрирај се" (слика 1.1)
  • Се отвара форма за регистрација (слика 1.2) со текст полиња во кои треба да се внесат соодветните лични податоци на корисникот за да го креира својот профил на нашата апликација, тоа се: име, презиме, телефонски број, емаил адреса и лозинка.
  • Откако ќе се внесат овие податоци се кликнува на копчето "Регистрирај се".
  • Се испраќа POST барање кое се прифаќа од RegisteredUserController на патеката /registriranParkirac/registration и како @RequestBody се вметнува request-от и се повикува функцијата register од registrationServiceRP која што прима еден аргумент, а тоа е request-от.
  • Во функцијата прво се проверува дали емаилот е валиден, потоа се гради token и се гради мејлот кој треба да се прати на емаил адресата која што корисникот ја навел.
  • Откако ќе се прати мејлот корисникот треба да потврди со кликнување на подвлечениот линкот обоен со сина боја (слика 1.3). Вака се испраќа ново GET барање на патеката /registriranParkirac/registration/confirm со параметар token и се повикува функцијата confirmToken(token) од registrationServiceRP. Во функцијата прво се проверува дали е постоечки токенот, дали веќе постои таа мејл адреса и дали времетрањето на токенот е поминато
  • По поминување на сите овие проверки ќе се постави тој токен со функцијата setConfirmedAtRP(token) од confirmationTokenService и ќе се дозволат привилегиите на регистрираниот паркирач за користење на апликацијата со функцијата enableRegistriranParkirac(confirmationTokenRP.getRegistriranParkirac().getEmail()) од registeredUserService.
  • Корисничкиот профил е успешно креиран и корисникот е редиректиран повторно на почетната страна на апликацијата (слика 1.1) и за да продолжи со користење треба да се најави со емаил адресата и пасвордот од ново креираниот кориснички профил.


слика 1.1


слика 1.2


слика1.3


ID 2
Случај на употреба Пребарување на паркинг место
ID 3
Случај на употреба Паркирање

2. Guest

ID 1
Случај на употреба Пребарување на паркинг место
ID 2
Случај на употреба Паркирање

3. Вработен

ID 1
Случај на употреба Ажурирање на паркинг места со паркинг сесии

4. Administrator

ID 1
Случај на употреба Додавање на нов вработен
  • Првично потребно е администраторот да биде најавен во системот за да може да ги извршува овие привилегии.
  • Откако успешно ќе се најави се кликнува иконата со 2 силуети што се наоѓа лево на странично мени и се прикажува листа на вработени со опција за пребарување, додавање на нов вработен и менување на статус на акаунтот.
  • Се клика на копчето Додади Вработен горе десно(слика 2.1)
  • Се прикажува форма за внес (слика 2.2) со повеќе информации за вработениот, тие се: име, презиме, емаил адреса, телефон, лозинка, потврди лозинка, одговорен за (се избираат зони за кои е одговорен), работен статус на вработениот (работи, не работи, на боледување, на одмор) и состојба на акаунтот (активен/неактивен).
  • По внесување на информациите се кликнува на копчето "Создади Вработен" доле десно.
  • Вака се праќа POST барање на патеката /vraboten и барањето е пречекано од WorkerController и во барањето е ставено @RequestBody од AddUpdateWorker vraboten кој што е изграден од сите внесени информации од претходната форма.
  • Потоа се повикува функцијата addWorker од workerService и му се предаваат сите атрибути од vraboten објектот.
  • Во функцијата се врши проверка дали веќе постои таков вработен со истиот мејл, доколку не станува збор за тоа се проверуваат сите останати атрибути, се поставува статусот на вработениот, се поставува за кои зони е одговорен и се зачувува во workerRepository со функцијата save што го прима новосоздадениот вработен кој всушност се зачувува и во базата на податоци.
  • Потоа следи редиректирање повторно кон страната со листа на сите вработени (слика 2.3)
  • Доколку сака администраторот да го деактивира акаунтот се кликнува на зеленото копче "Активен" и ќе стане "Неактивен" со црвена боја и обратно, соодветно се појавува и нотификација за активноста што била направена од страна на администраторот (слика 2.4)
  • Ова во позадина се одвива на следниот начин: се праќа PUT барање на патеката /vraboten/{vrabotenId} со @PathVariable vrabotenId што го претставува ID на вработениот и ова барање се пречекува исто така од WorkerController и се повикува функцијата lockWorkerAcc(vrabotenId) од сервисниот слој workerService.
  • Во функцијата се прави toggle на статусот како што е наведено горе и пред тоа се прави проверка дали воопшто постои вработен со соодветниот ID.


ID 2
Случај на употреба Едитирање на веќе постоечки вработен
  • Првично потребно е администраторот да биде најавен во системот за да може да ги извршува овие привилегии.
  • Администраторот го кликнува редот од табелата од листата на вработени за соодветниот вработен за кој сака да го ажурира неговиот профил (слика 2.1)
  • Потоа се прикажува формата на вработениот со неговите податоци со кои е регистриран во системот (слика 2.2)
  • Администратор соодветно ги менува оние податоци за кои сака да му го ажурира профилот на вработениот и може оваа активност да ја откаже со клик на копчето "Врати се назад" доле лево или да ја потврди активноста со клик на копчето "Создади вработен"
  • По кликнување на копчето "Создади вработен" се праќа PUT барање на патеката /vraboten/{vrabotenId} каде што {vrabotenId} претставува @PathVariable и е ID на вработениот и ова барање се пречекува од WorkerController, а дополнително се праќа и @RequestBody AddUpdateWorker vraboten.
  • Потоа се повикува функцијата updateWorker од сервисниот слој workerService на кој како параметри се праќаат сите атрибути од vraboten.
  • Во функцијата се врши проверка дали веќе постои таков мејл кај некој друг вработен, доколку не станува збор за тоа се проверуваат сите останати атрибути, се поставува статусот на вработениот, се поставува за кои зони е одговорен и се зачувува во workerRepository со функцијата save што го прима ажурираниот вработен кој всушност се зачувува и во базата на податоци.
  • Соодветно пак ќе биде редиректиран кон листата на вработени (слика 2.1)


ID 3
Случај на употреба Додавање и ажурирање на паркинг зона
  • Првично потребно е администраторот да биде најавен во системот за да може да ги извршува овие привилегии.
  • Откако успешно ќе се најави се кликнува иконата со 4 правоаголничиња што се наоѓа лево горе на страничното мени.
    Се праќа GET барање на патеката /parkingZone и ова барање се пречекува од ParkingZoneController и се повикува функцијата getAllParkingZones од сервисниот слој parkingZoneService при што се прикажуваат картички со постоечките паркинг зони, како и опција за сортирање на истите и опција за додавање на нова паркинг зона. (слика 3.1)
  • Се кликнува на белиот правоаголник со зелен плус за додавање на паркинг зона со внесување на називот на зоната (слика 3.2) и се кликнува на зеленото копче "Креирај зона".
  • Се праќа POST барање на патеката /parkingZoneName со @RequestBody String name што е името на зоната и ова барање исто така се пречекува од ParkingZoneController и се повикува функцијата addParkingZoneNameOnly(name) од сервисниот слој parkingZoneService и на овој начин се креира празна паркинг зона само со име и како таква се зачувува во базата.
  • Се прикажуваат повторно сите паркинг зони заедно со ново додадената, исто како втората точка погоре (слика 3.3)
  • Се кликнува картичката што ја претставува ново додадената паркинг зона за да може да се ажурираат податоците за истата. Се испраќа GET барање на патеката /parkingZone/{parkingZoneId} каде што parkingZoneId е @PathVariable односно ID на паркинг зоната и се прикажува соодветно формата за едитирање за таа паркинг зона(слика 3.4)
  • Се пополнуваат соодветните информации за зоната а тоа се: назив, цена од час, работни часови, боја на зона, темиња на центар на зона (објект од класа Location со атрибути латитуда и лонгитуда), темиња на зона (повеќе точки со латитуда и лонгитуда што ги претставуваат граничните точки на зоната), потоа се додаваат одговорни лица од листа на сите вработени, секако доколку постојат и потоа се додаваат паркинг местатa (латитуда, лонгитуда и број на паркинг место). (слика 3.9)
    ParkingZoneLocation е класа што содржи центар на зона (објект од класа Location) и темиња на зона (листа од објекти од класа Location).
  • При клик на копчето зачувај промени се прикажува прозорец за да ја потврдиме/откажеме нашата активност, соодветно кликнуваме на копчето "Да" (слика 3.6). Вака се праќа PUT барање на патеката /parkingZone/{parkingZoneId} каде што parkingZoneId е @PathVariable и е ID на паркинг зоната, а @RequestBody ParkingZoneAdminView parkingZone е новиот-ажуриран објект од паркинг зоната.
    Барањето секако се пречекува од контролерот ParkingZoneController и се повикува функцијата updateParkingZone од сервисниот слој parkingZoneService каде како параметри се предаваат сите атрибути од објектот parkingZone кој е изграден од сите информации кои претходно ги внесовме.
  • По успешно создавање на паркинг зоната се редиректира администраторот назад кон листа од сите паркинг зони и се прикажува ново ажурираната паркинг зона, всушност се прави истиот повик како кај точка 2 (слика 3.7)
  • Доколку сакаме да ја видиме паркинг зоната на мапата тогаш може да се кликне копчето со слика на мапа и да се отвори google maps со исцртаната зона во онаа боја во која што сме избрале (на сликата е црвена), заедно со сите паркинг места во зоната (обоени соодветно со зелено/црвено доколку се слободни/зафатени) (слика 3.8)

Attachments (39)

Note: See TracWiki for help on using the wiki.