= Реализација на случаите на употреба == Корисници === Турист ||= **ID** =|| 1 || ||= **Случај на употреба** =|| Креира initial планер со име и опис || 1. Корисникот по најава е пренасочен на страницата за преглед и креирање на свои планери (http://localhost:4200/planners) - При вчитување на страницата, се прикажува PlannerComponent компонентата. Во оваа компонента во ngOnInit() методот се прави subscribe на методот getAllPlanners() кој се повикува од planner service-от. Оваа метода getAllPlanners() се “претплатува” на Observable со колекција од планери (getAllPlanners(): Observable) која се добива со испраќање на HTTP GET метод до backend REST контролерот со url="http://localhost:8080/api/planners/user". Дополнително при испраќање на повикот, покрај урл-то се испраќа и header во кој се наоѓа и токенот од најавениот корисник. Овој токен се чува и зема од sessionStorage. На овој начин како одговор од GET методот се враќаат сите планири на најавениот корисник. httpHeaders: HttpHeaders = new HttpHeaders({ 'Authorization': '' + sessionStorage.getItem("token"), 'Accept': 'application/json', 'Content-Type': 'application/json' }); 2. По клик на копчето “Create initial planner” се отвора Dynamic Dialog каде се внесуваат име и опис на планерот. - Овој 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) кој се зачувува во база со испраќање на HTTP POST метод до backend REST контролерот со url = " http://localhost:8080/api/planner/new". Дополнително при испраќање на повикот, покрај урл-то се испраќа и header во кој се наоѓа и токенот од најавениот корисник. Овој токен се чува и зема од sessionStorage. На овој начин при POST request ќе се зачува нов планер со име и опис. Новокреираниот планер се прикажува на /planners патеката. \\ ||= **ID** =|| 2 || ||= **Случај на употреба** =|| Разгледува и дефинира план за патување || 1. Корисникот - турист ажурира планер (http://localhost:4200/edit/planner/id) - GET Од патеката /planners каде што се наоѓаат сите планери креирани од корисникот, корисникот одбира кој планер сака да го ажурира и кликнува на копчето “Edit”. При клик на “Edit” се повикува функцијата onClickEditPlannerGet(id: number) каде како аргумент се дава ид-то на планерот. Оваа метода прави subscribe на методата getPlannerById(id) која се повикува од планер сервисот. getPlannerById(id) се “претплатува” на Observable со модел Planner (getPlannerById(id: number): Observable). Со испраќање на HTTP GET метод до backend REST контролерот со url = "http://localhost:8080/api/planner/" + id , се зема кликнатиот планер и корисникот се пренасочува на http://localhost:4200/edit/planner/id каде се наоѓа форма со веќе зачуваните податоци за име и опис на планер, листа локации (ако има локации додадено) , копче “Add locations”, како и копчиња Save и Cancel. - 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) која се зачувува со испраќање на HTTP PUT метод до backend REST контролерот со url = "http://localhost:8080/api/edit/planner/id". Дополнително при испраќање на повикот, покрај урл-то се испраќа и header во кој се наоѓа и токенот од најавениот корисник. Овој токен се чува и зема од sessionStorage. Така ажурираните податоци преку updatePlanner() методот се праќаат до backend. 2. Туристот одбира да додаде локација во својот планер 3. Туристот гледа детали за локација 4. Туристот брише планер