= Реализација на случаите на употреба = ---- === Корисник === ||= **ИД:** =|| 1 || ||= **Случај на употреба:** =|| Пребарува податоци за лекови || 1. Се пристапува до почетната страна на апликацијата (Пребарај лек) - При load на страницата, рутерот ја поставува home компонентата на својот outlet во app компонентата. Home компонентата при вчитување го повикува сервисниот метод getMedicines() од дата сервисот и се „претплатува“ на Observable со wrapped низа од лекови, која се враќа по добивањето на одговор од HTTP GET повикот до backend REST контролерот. Бројот на лекови што се добиваат е лимитиран на 5, па штом се утврди од страна на template директивата *ngIf дека низата на лекови не е веќе празна, тие се популираат во табелата. 2. Во полето за внес „Пребарај лек“ се внесува име на лекот - При секоја промена во полето за внес за пребарување на лекови се испраќа по еден HTTP GET searchMedicines(searchString) сличен како тој од претходниот чекор, со додатен searchString како влезен параметар за пребарување, кој се препраќа на backend REST контролерот во вид на path варијабла. 3. Во табелата се популирани пребараните лекови - Штом се вратени пребараните лекови, односно најдобрите 5 совпаѓања со испратениот пребарувачки string, се поставуваат во посебна низа на филтрирани лекови и следствено се популираат во табелата автоматски по настанување на промената со помош на Angular template engine-от. 4. Со клик на одреден лек во табелата, се отвара прозорец со повеќе информации за лекот заедно со имињата на компаниите во кои се продава лекот - Со клик на некој лек од табелата, се повикува функцијата openMedicineDialog() која отвара посебна дијалог компонента во која се праќаат податоците за лекот кој е кликнат. Тука може да се видат детални информации за лекот, заедно со имињата на компаниите кои го продаваат кои се наоѓаат во низа во рамки на Medicine објектот. \\ ||= **ИД:** =|| 2 || ||= **Случај на употреба:** =|| Отвара мапа на аптеки и здравствени установи || 1. Прелистувачот го прашува корисникот за пристап до неговата локација - При иницијализација на home компонентата со помош на HTML Geolocation API-то, се наоѓа локацијата на корисникот, кој претходно доделува дозвола на апликацијата за користење на неговите координати. Тоа се прави со помош на функцијата getCurrentPosition(), каде се креира и маркер за означување на локацијата на мапата. 2. По успешното враќање на податоците за аптеки/установи, се наоѓаат нивните координати и се означуваат на мапата - Штом заврши успешниот retrieval на податоците за аптеки/установи, се повикува функцијата appendPharmacyMarkers() на кој се испраќа низата од објекти кои ги содржат информациите за градовите и адресите, кој пак се користат како параметри за испраќање на HTTP GET повик до OpenStreetMap API-то, кое служи за пребарување на локации, кое пак ни ги враќа координатите (латитуда и лонгитуда) за секоја аптека/установа. Овие координати се користат за поставување на маркерите за означување на секој објект на мапата. - При секој нареден извршен повик за пребарување, одново се повикува фунцкијата appendPharmacyMarkers(), со цел да бидат најдени адресите на новите пребарани аптеки/установи, а потоа мапата да биде ререндерирана за истите да бидат прикажани. 3. Со клик на копчето „Активирај“ се прикажува мапата - Со клик на копчето „Активирај“ се повикува функцијата toggleMap(), со што се прикажува мапата заедно со претходно испроцесираните и додадените слоеви од маркери и пинови. - Постои и копче „Освежи“ со цел да биде овозможено и ререндерирање на мапата. 4. При клик на индивидуална аптека/установа од табелата, се отвара прозорец со повеќе информации за аптеката/установата и маркирана локација на мапа - Со клик на некој ред од табелата, се повикува функцијата openPharmacyDialog()/openFacilityDialog() која отвара посебна дијалог компонента во која се праќаат податоците за објектот од редот во табелата кој е кликнат. Тука може да се видат детални информации за аптеката/установата, а кај аптеките може да се види и компанијата сопственик од која ја поседува. - При иницијализација на оваа дијалог компонента, се повикува функцијата addMarkers() која наоѓајќи ја адресата на истиот принцип преку наоѓање на координатите преку OpenStreetMap API-то, го додава маркерот и го поставува соодветниот зум за приказ на мапата за индивидуалната аптека/установа во дијалогот. \\ ||= **ИД:** =|| 3 || ||= **Случај на употреба:** =|| Разлистува тековни информации за пандемии || 1. Во темплејтот се популираат бројките - При вчитување на компонентата се повикува сервисниот метод getPandemic() од дата сервисот и се претплатува на Observable со wrapped Pandemic објект, кој се враќа со добивање на одговорот од HTTP GET повикот до backend REST контролерот, до соодветната API патека. Штом се утврди од страна на template директивата *ngIf дека објектот не е веќе празен, податоците/бројките се прикажуваат во темплејтот. \\ === Аптека === ||= **ИД:** =|| 4 || ||= **Случај на употреба:** =|| Ажурира состојба на лекови во продажба, работно време и локација || \\ ||= **ИД:** =|| 4.1 || ||= **Случај на употреба:** =|| Одвивање на регистрација и автентикација || \\ ||= **ИД:** =|| 4.2 || ||= **Случај на употреба:** =|| Администрирачки панели и реализација на побарувања ||