Changes between Version 19 and Version 20 of UseCaseRealizations


Ignore:
Timestamp:
12/30/21 10:58:34 (3 years ago)
Author:
163067
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • UseCaseRealizations

    v19 v20  
    17172.      По клик на копчето “Create initial planner” се отвора Dynamic Dialog каде се внесуваат име и опис на планерот.
    1818[[Image("Screen8.png")]]
    19 -       Овој Dynamic Dialog е готова компонента која е преземена од PrimeNG. На копчето “Create initial planner” кое е креирано во planner.component.html при клик се извршува метод show() чија имплементација е во planner.component.ts . За отворање на дијалогот се користат готовите класи DynamicDialogRef и DialogService, каде што овој дијалог сервис ја отвора CreateInitialPlannerComponent компонентата. Во оваа компонента во ngOnInit() се креира нов објект од класата PlannerDto и при клик на копчето “Save” од CreateInitialPlannerComponent се извршува методот onFormSubmitPlanner(plannerDto) каде како параметар се испаќа plannerDto. Со помош на ова plannerDto се праќаат името и описот на планерот кои ги внел корисникот каде преку show() методот се прима plannerDto-то. Потоа како продолжение во методот show() , се прави subscribe на методот postInitialPlanner(plannerDto) кој се повикува од planner service-от. Оваа метода postInitialPlanner(plannerDto: PlannerDto) се “претплатува” на Observable со моделот Planner (postInitialPlanner(plannerDto: PlannerDto)  : Observable<Planner>) кој се зачувува во база со испраќање на HTTP POST метод до backend REST контролерот со url = " http://localhost:8080/api/planner/new". Дополнително при испраќање на повикот, покрај урл-то се испраќа и header во кој се наоѓа и токенот од најавениот корисник. Овој токен се чува и зема од sessionStorage. На овој начин при POST request ќе се зачува нов планер со име и опис. Новокреираниот планер се прикажува на /planners патеката.
     19-       Овој Dynamic Dialog е готова компонента која е преземена од PrimeNG. На копчето “Create initial planner” кое е креирано во planner.component.html при клик се извршува метод show() чија имплементација е во planner.component.ts . За отворање на дијалогот се користат готовите класи DynamicDialogRef и DialogService, каде што овој DialogService ја отвора CreateInitialPlannerComponent компонентата. Во оваа компонента во ngOnInit() се креира нов објект од класата PlannerDto и при клик на копчето “Save” од CreateInitialPlannerComponent се извршува методот onFormSubmitPlanner(plannerDto) каде како параметар се испаќа plannerDto. Со помош на ова plannerDto се праќаат името и описот на планерот кои ги внел корисникот каде преку show() методот се прима plannerDto-то. Потоа како продолжение во методот show() , се прави subscribe на методот postInitialPlanner(plannerDto) кој се повикува од planner service-от. Оваа метода postInitialPlanner(plannerDto: PlannerDto) се “претплатува” на Observable со моделот Planner (postInitialPlanner(plannerDto: PlannerDto)  : Observable<Planner>) кој се зачувува во база со испраќање на HTTP POST метод до backend REST контролерот со url = " http://localhost:8080/api/planner/new". Дополнително при испраќање на повикот, покрај урл-то се испраќа и header во кој се наоѓа и токенот од најавениот корисник. Овој токен се чува и зема од sessionStorage. На овој начин при POST request ќе се зачува нов планер со име и опис. Новокреираниот планер се прикажува на /planners патеката.
    2020
    2121\\
     
    26261.      Корисникот - турист ажурира планер (http://localhost:4200/edit/planner/id)
    2727[[Image("Screen6.png")]]
    28 -       GET: Од патеката /planners каде што се наоѓаат сите планери креирани од корисникот, корисникот одбира кој планер сака да го ажурира и кликнува на копчето “Edit”. При клик на “Edit” се повикува функцијата onClickEditPlannerGet(id: number) каде како аргумент се дава ид-то на планерот. Оваа метода прави subscribe на методата getPlannerById(id) која се повикува од планер сервисот. getPlannerById(id) се “претплатува” на Observable со модел Planner (getPlannerById(id: number): Observable<Planner>). Со испраќање на HTTP GET метод до backend REST контролерот со url = "http://localhost:8080/api/planner/" + id , се зема кликнатиот планер и корисникот се пренасочува на http://localhost:4200/edit/planner/id каде се наоѓа форма со веќе зачуваните податоци за име и опис на планер, листа локации (ако има локации додадено) , копче “Add locations”, како и копчиња Save и Cancel.
     28-       GET: Од патеката /planners каде што се наоѓаат сите планери креирани од корисникот, корисникот одбира кој планер сака да го ажурира и кликнува на копчето “Edit”. При клик на “Edit” се повикува функцијата onClickEditPlannerGet(id: number) каде како аргумент се дава ид-то на планерот. Оваа метода прави subscribe на методата getPlannerById(id) која се повикува од планер сервисот. getPlannerById(id) се “претплатува” на Observable со модел Planner (getPlannerById(id: number): Observable<Planner>). Со испраќање на HTTP GET метод до backend REST контролерот со url = "http://localhost:8080/api/planner/" + id , се зема кликнатиот планер и корисникот се пренасочува на http://localhost:4200/edit/planner/id каде се наоѓа форма со веќе зачуваните податоци за име и опис на планер, листа локации (ако има локации додадено) , копче “Add locations”, како и копчиња "Save" и "Cancel".
    2929
    3030-       POST: Корисникот ажурира име, опис и/или листа локации и кликнува на копчето “Save”.  При клик на “Save” се повикува функцијата updatePlanner(). Во оваа функција се прави subscribe на методот updatePlanner(this.id, this.form.value) кој се повикува од planner service-от. Оваа метода updatePlanner(this.id, this.form.value) се “претплатува” на Observable со модел Planner (updatePlanner(id: number, plannerDto: PlannerDto): Observable<Planner>) која се зачувува со испраќање на HTTP PUT метод до backend REST контролерот со url = "http://localhost:8080/api/edit/planner/id". Дополнително при испраќање на повикот, покрај урл-то се испраќа и header во кој се наоѓа и токенот од најавениот корисник. Овој токен се чува и зема од sessionStorage. Така ажурираните податоци преку updatePlanner() методот се праќаат до backend.
     
    34343.      Туристот одбира да додаде локација во својот планер
    3535[[Image("Screen13.png")]]
    36 -       Откако му се предложени локациите на адреса http://localhost:4200/locations, корисникот може да ја додаде посакуваната локација во некој свој, претходно креиран, планер. Со клик на копчето “Add to my planner” од редот на локацијата, се отвора Dynamic Dialog во кој од база ги листа сите креирани планери на корисникот. До секој планер во дијалогот има копче selectPlanner(planner) кое испраќа planner модел до location.component од каде се отвора и обработува целиот дијалог (слично/исто како и кај точката “Create initial planner”). Тука во location.component каде се отвора AddLocationToPlannerPanelComponent, се прават проверки: дали планерот во кој корисникот сака да ја стави локацијата, е празен. Ако е празен планерот, ќе се додаде локацијата со postLocationToPlanner() методот кој се повикува од locationService и се појавува порака за успешно додадена локација. Ако планерот не е празен, значи веќе има некои локации во него, тогаш се прави проверка дали id-то на избраната локација го има во getAllLocationIdsForPlanner(). Ако го има тоа ид, тогаш се дава порака дека локацијата веќе ја има во планерот, ако го нема ид-то во листата тогаш се додава локацијата во избраниот планер со postLocationToPlanner(). Сите овие методи кои се повикани од сервисниот слој се прават со subscribe, а во сервисот се користи Observable и url на backend api.
     36-       Откако му се предложени локациите на адреса http://localhost:4200/locations, корисникот може да ја додаде посакуваната локација во некој свој, претходно креиран, планер. Со клик на копчето “Add to my planner” од редот на локацијата, се отвора Dynamic Dialog во кој од база ги листа сите креирани планери на корисникот. До секој планер во дијалогот има копче selectPlanner(planner) кое испраќа planner модел до location.component од каде се отвора и обработува целиот дијалог (слично/исто како и кај точката “Create initial planner”). Тука во location.component каде се отвора AddLocationToPlannerPanelComponent, се прават проверки: дали планерот во кој корисникот сака да ја стави локацијата, е празен. Ако е празен планерот, ќе се додаде локацијата со postLocationToPlanner() методот кој се повикува од locationService и се појавува порака за успешно додадена локација. Ако планерот не е празен, значи веќе има некои локации во него, тогаш се прави проверка дали id-то на избраната локација го има во getAllLocationIdsForPlanner(). Ако го има тоа id, тогаш се дава порака дека локацијата веќе ја има во планерот, ако го нема id-то во листата тогаш се додава локацијата во избраниот планер со postLocationToPlanner(). Сите овие методи кои се повикани од сервисниот слој се прават со subscribe, а во сервисот се користи Observable и url на backend api.
    3737
    38384.      Туристот гледа детали за локација