= Имплементација на прототип на случаите на употреба Линк до целиот изворен код на проектот: [https://develop.finki.ukim.mk/projects/PlanMyTripToMacedonia/browser] \\ - Прототип верзијата е поставена со log message: "initial commit" - Pre final верзијата е поставена со log message: "pre final presentation" - Финалната верзија ќе биде поставена со log message: "final presentation" = Реализација на случаите на употреба == Корисници === Турист *Прототип верзијата е правена со Thymeleaf ||= **ID** =|| 1 || ||= **Случај на употреба** =|| Креира initial планер со име и опис || ||=**Креирано од**=|| Ема || ||=**Последно ажурирано од**=|| Ема || ||= **Датум** =|| 04.05.2021 || ||= **Актери** =|| Турист || ||= **Опис** =|| Корисникот - турист креира initial планер со име и опис || ||= **Тригер** =|| Корисникот - турист сака да зачува локација во одрреден планер || ||= **Предуслов** =|| Корисникот - турист да ја избере опцијата "Create initial planner" || ||= **Постуслов** =|| Корисникот – турист да ја кликне опцијата “Save” || ||= **Нормален тек** =|| 1. Корисникот – турист се најавува во системот \\ 2. Системот го пренасочува корисникот на страницата каде се излистани сите планери на најавениот корисник ( доколку ги има ) каде се наоѓа и копчето "Create initial planner" \\ 3. Корисникот - турист ја одбира опцијата "Create initial planner" за да креира нов планер \\ 4. Системот појавува dynamic dialog кој е составен од две input полиња: име и опис на планер и копче "Save" \\ 5.Корисникот - турист внесува име и опис на планерот кој го креира и кликнува на копчето "Save" \\ 6. Системот го зачувува креираниот планер и го прикажува во поглед со сите претходно креирани планери (доколку ги има) || ||= **Исклучоци** =|| Да не е кликнато копчето “Save” || ||= **Вклучува** =|| / || ||= **Приоритет** =|| / || ||= **Фреквенција на користење** =|| Според потребите на корисникот || ||= **Бизнис правила** =|| / || ||= **Специјални побарувања** =|| / || ||= **Претпоставки** =|| / || ||= **Забелешки** =|| / || ==== Листа со сите креирани планери [[Image("planners.png")]] ==== Форма за креирање на планер [[Image("createPlannerPrototype.png")]] \\ 1. На адреса http://localhost:8080/create/planner се наоѓаат сите креирани планери (таа листа од планери е поставена како атрибут во модел). На оваа страница има и линк "Create initial planner" кој е дефиниран во create-homepagе.html документот и кој е href линк кој пренасочува на друга страница: http://localhost:8080/create . Во Create Planner Controller-от, кој не е RestController туку Controller, е креиран GET методот за земање и прикажување на формата за креирање нов планер кој враќа create-planner html документ. Во овој темплејт има поле за внес на име и опис, и копче "Submit". По клик на копчето "Submit", кое е вметнато во POST форма во create-planner.html, се прави action="create/planner" на метод дефиниран во контролерот. Ова е POST метод кој како RequestParam ги прима опис и име. Се повикува методот за креирање на планер од plannerService и се враќа redirect:/create/planner. \\ ||= **ID** =|| 2 || ||= **Случај на употреба** =|| Разгледува и дефинира план за патување || ||=**Креирано од**=|| Ема || ||=**Последно ажурирано од**=|| Ема || ||= **Датум** =|| 28.04.2021 || ||= **Актери** =|| Турист || ||= **Опис** =|| Корисникот - турист го дополнува/менува планерот кој го креирал || ||= **Тригер** =|| Корисникот - турист сака да промени име, опис и/или да додаде локации во избраниот планер || ||= **Предуслов** =|| Да е креиран initial планер || ||= **Постуслов** =|| Внесува и селектира податоци и добива предлог локации || ||= **Нормален тек** =|| 1. Корисникот – турист се најавува во системот \\ 2. Корисникот – турист се наоѓа на страницата каде се излистани сите планери (доколку ги има) \\ 3. Корисникот - турист го одбира планерот во кој сака да направи промени и кликнува на копчето "Edit" \\ 4. Системот го пренасочува корисникот на друга адреса каде на корисникот му го прикажува планерот со податоци за име, опис, опција за додавање локации и поле за прикажува на сите додадени локации со опција за бришење до секоја локација (ако има додадено локации) \\ 4.а Корисникот - турист менува само име и опис на планерот и кликнува на копчето "Save" \\ 4.б Корисникот - турист сака да додаде локации во планерот и ја одбира опцијата "Add locations" \\ 4.в Корисникот - турист сака да избрише додадена локација од својот планер \\ 4.а.1 Системот ги зачувува промените и го пренасочува корисникот на страницата каде се излистани сите планери \\ 4.б.1 Системот го пренасочува корисникот на страница каде се наоѓа форма за внесување и селектирање податоци според кои ќе му се генерираат локации \\ 4.б.2 Корисникот – турист внесува и селектира податоци (регион или град, придружба - дали ќе патува сам/со група/партнер/семејство, колку денови планира да престојува, што му е приоритетно да посети – природа, монументи, sightseeing, шопинг, музеи, цркви, рурален туризам, водопади, реки итн) \\ 4.б.3 Корсиникот - турист кликнува на копчето “Create my planner” \\ 4.б.4 Системот ги обработува податоците и врз основа на барањата генерира предлог локации и го пренасочува корисникот на адреса каде се излистани сите предложени локации со копчиња: "Add to my planner", "See details" и "Back to my Planners" \\ 4.б.5 Корисникот - турист разгледува локации \\ 4.б.5.а Корисникот – турист кликнува на локацијата за која сака да погледне детали "See details" \\ 4.б.5.а.1 Системот го пренасочува корисникот- турист на страницата за преглед на детали за избраната локација и му прикажува детали (адреса, име, опис, carousel од слики) \\ 4.б.5.б Корисникот- турист кликнува на копчето "Add to my planner" за избраната локација \\ 4.б.5.б.1 Системот му овозможува на корисникот pop-up прозорец во кој се излистани сите претходно креирани планери заедно со копче "Save" \\ 4.б.5.б.2 Корисникот - турист одбира во кој од планерите ќе ја додаде избраната локација и кликнува на копчето "Save" \\ 4.б.5.б.3 Системот проверува дали планерот е празен, доколку е само ја додава локацијата, ако не е празен планерот проверува дали избраната локација веќе постои во планерот и соодветно дава порака до корисникот \\ 4.в.1 Корисникот - турист ја од листата на додадени локации кликнува на копчето "x" од редот на избраната локација \\ 4.в.2 Системот ја отстранува локацијата од база и прави refresh на листа || ||= **Исклучоци** =|| Да не е креиран ниту еден initial планер во кој ќе може да се внесат локации || ||= **Вклучува** =|| / || ||= **Приоритет** =|| / || ||= **Фреквенција на користење** =|| Според потребите на корисникот || ||= **Бизнис правила** =|| / || ||= **Специјални побарувања** =|| / || ||= **Претпоставки** =|| / || ||= **Забелешки** =|| / || ==== Форма за ажурирање планер [[Image("ediplanner.png)]] 1. Корисникот - турист ажурира планер На адреса http://localhost:8080/create/planner се наоѓаат сите креирани планери (таа листа од планери е поставена како атрибут во модел). Кај секој card од планери има копче "Edit" кое е линк кој го зема id-то на планерот и пренасочува на друга страница th:href="@{/create/planner/{id}(id=${plan.getId()})}". На оваа адреса /create/planner/{id} , се прави GetMapping на методот editShow, каде како аргументи се земени id-то на планерот и Model класата. Во овој метод во Create Planner Controller-от се креира инстанца од Planner моделот, се повикува plannerService со методот findById за да може да се земе соодветниот планер. Оваа инстанца се става како атрибут на моделот и се враќа edit-return.html. Во овој html се наоѓаат и двете полиња за име и опис како, копчето за зачувување на формата и линк за додавање нови локации кои ги гледа корисникот. Во полињата е прикажана земената вредност за име/опис од планерот со th:text="*{detailsAboutPlanner.get().getDescription()} и th:value="${detailsAboutPlanner.get().getName()}" . Корисникот може да направи промена во описот и името и/или да одбере да ја посети формата за генерирање предлог локации со кликнување на линкот "Add location". Доколку внесе нови податоци за име и опис или воопшто не ги промени, а кликне на копчето "Edit save", тогаш се прави POST request кој ја ажурира промената и се пренасочува корисникот "redirect:/create/planner". Доколку корисникот кликне на линкот "Add location", тогаш се пренасочува на адреса http://localhost:8080/create/locations каде се наоѓа формата за пополнување и селектирање податоци. Со клик на копчето "Create my planner" се прави GET request кој како параметри ги прима вредностите на полињата од формата (категории, придружба, број на денови и дестинација). Во методот allLocations() се прави проверка и дали е избран регион или град и преку plannerService се повикува соодветен метод за извлекување локации. Потоа, кориникот се пренасочува на адреса http://localhost:8080/create/trip/locations каде се излистани локациите и опција за преглед на детали. Корисникот може да погледне детали за локацијата, така што тогаш се повикува методот seeDetailsAboutLocation од Create Planner Controller-от, е кој е GET метод и во модел се става објект од Location id и се враќа location.html.