= Сценарија на случаи на употреба == Дијаграм [[Image(UseCaseDiagramV8.png)]] == Сценарија === Корисник ||= **ID:** =|| 1 || ||= **Случај на употреба:** =|| ги прелистува секциите за дискусија || ||= **Опис:** =|| Корисникот ги прелистува сите секции за дискусија и ги чита мислењата напишани во нив. || ||= **Тригер:** =|| Корисникот сака да добие информација за конкретен професор или предмет, или пак сака да ги прегледа најновите или најпопуларните мислења од сите секции. || ||= **Предуслов:** =|| / || ||= **Постуслов:** =|| / || ||= **Нормален тек** =||''Акции преземени од корисникот:'' \\ **1.1** Кликнува на search алатката (HTML форма) и внесува податоци (кирилични или латинични знаци) за субјект кој го интересира ИЛИ \\ **1.2** оди на landing страницата, каде се прикажани последните 10 мислења од категориите „предмет“ и „професор“, сортирани според времето на објавување \\ \\ ''Акции преземени од системот кон:'' \\ **1.1** После >=4 внесени знаци контролерот пречекува барање од HTML формата, кое ги содржи истите во телото и ги пропагира до сервисите одговорни за ентитетите „професор“ и „мислење“, кои потоа поставуваат прашалници до базата за колоната „име“ од двете табели. На контролерот се враќаат сите колони од погодоците, кој потоа ги предава на логиката за рендерирање поглед, која натаму од добиените ИД и име генерира листа од anchor HTML елементи кои водат до соодветната секција за дискусија (страница мапирана на /ИД). \\ **1.2** На секое прикажување на овој поглед, контролерот пречекува соодветно именувано барање без тело и го спореведува истиот тек, само што сервисите кои ги повикува поставуваат друг вид на прашалник (од типот ''order by time_posted desc limit 10'' за двете табели) || ||= **Исклучоци:** =|| Во чекорот **1.1**, кога search функцијата враќа празно множество, корисникот е информиран дека може да ја користи компонентата за рачно пребарување (која содржи листа на сите професори и предмети за кои има запис во базата, групирани според институција) || ||= **Вклучува:** =|| Во чекорот **1.1** има дополнителен чекор од страна на browser апликацијата, која повикува функција за транслитерација на влезот во кирилица, за да има совпаѓања со колоната име (бидејќи така се зачувани преземените „статички“ податоци за професорите и предметите). || ||= **Приоритет:** =|| / || ||= **Фреквенција на користење:** =|| Највисока (релативно на честотите на користење на останатите случаи) || ||= **Бизнис правила:** =|| / || ||= **Специјални побарувања:** =|| / || ||= **Претпоставки:** =|| / || ||= **Забелешки:** =|| / || // ||= **ID:** =|| 2 || ||= **Случај на употреба:** =|| корисничка најава || ||= **Опис:** =|| Корисникот се најавува на апликацијата со своето корисничко име (или e-mail) и лозинка. || ||= **Тригер:** =|| Корисникот сака да искористи некои од функционалностите достапни само доколку е најавен || ||= **Предуслов:** =|| Претходна регистрација || ||= **Постуслов:** =|| / || ||= **Нормален тек** =|| ''Акции преземени од корисникот:'' \\ **1.** Клика на опцијата за најавување (HTML anchor елемент)\\ **2.** Доколку веќе има корисничка сметка, ги внесува својот e-mail и лозинка и клика на ''Најави се'', инаку оди на !UseCase со ID 3 (корисничка регистрација) т.е. притиска на елемент кој го води на таа страница \\ \\ ''Акции преземени од системот кон:'' **1.** Се активира погледот мапиран на /login патеката кој содржи две input полиња за внес на податоците. \\ \\ **2.** Се праќа барање до одредена патека на контролерот, кое во телото ги содржи мејлот и лозинката. Аналогно на текот опишан во претходниот use-case, се испитува дали внесени кориснички мејл е претходно зачуван, дали сметката е активирана, се хашира пречеканата лозинка со BCrypt и се споредува со соодветната колона во базата за торката каде е зачуван мејлот. Во случај на успех, се креира инстанца од HttpSession која содржи податоци за што е авторизиран корисникот (пр. преку getSession().getRoles()) и на прелистувачот се враќа id:String полето од истата. Апликацијата на клиентска страна ја зачувува променливава како колаче што дозволува рендерирање на повеќе погледи за корисникот. Во случај на неуспех, се случува истото, само што апликацијата на клиентска страна детектира од телото на response-от низа од знаци (пр. "error") и добиената сесиска променлива без привилегии ја игнорира. || ||= **Исклучоци:** =|| Корисникот ја има заборавено својата лозинка: апликацијата нема функционалност за recovery на сметките. || ||= **Вклучува:** =|| / || ||= **Приоритет:** =|| / || ||= **Фреквенција на користење:** =|| Висока (релативно на честотите на користење на останатите случаи) || ||= **Бизнис правила:** =|| / || ||= **Специјални побарувања:** =|| / || ||= **Претпоставки:** =|| / || ||= **Забелешки:** =|| Пожелно е да се овозможи енкрипција на транспортно ниво, зашто user/pass во комуникацијата меѓу серверот и прелистуачот не се енкриптирани т.е. се користи Http Basic Authentication. || // ||= **ID:** =|| 3 || ||= **Случај на употреба:** =|| корисничка регистрација || ||= **Опис:** =|| Корисникот регистрира профил на апликацијата. || ||= **Тригер:** =|| Исто како !UseCase со ID 2 (корисничка најава) || ||= **Предуслов:** =|| валидна e-mail адреса || ||= **Постуслов:** =|| / || ||= **Нормален тек** =|| 1. Корисникот е на било која страница во апликацијата\\ 2. Клика на опцијата за регистрација\\ 3. Го пополнува формуларот во кој се бара неговата e-mail адреса, корисничкото име кое сака да го користи, неговото име и презиме (опционално) и лозинката која сака да ја користи за најава\\ 4. Добива електронска порака на наведената адреса со линк за потврда на регистрацијата || ||= **Исклучоци:** =|| Некои од полињата во формуларот се невалидни (e-mail адресата, корисничкото име или лозинката се со неправилен облик), при што барањето за регистрација нема да биде успешно и корисникот ќе треба да се обиде повторно || ||= **Вклучува:** =|| / || ||= **Приоритет:** =|| / || ||= **Фреквенција на користење:** =|| Средна (релативно на честотите на користење на останатите случаи) || ||= **Бизнис правила:** =|| / || ||= **Специјални побарувања:** =|| / || ||= **Претпоставки:** =|| / || ||= **Забелешки:** =|| / || // ||= **ID:** =|| 4 || ||= **Случај на употреба:** =|| додава мислење во секција за дискусија || ||= **Опис:** =|| Корисникот објавува мислење во врска со одреден професор или предмет. || ||= **Тригер:** =|| Корисникот сака да го искаже своето мислење во врска со некој професор или предмет || ||= **Предуслов:** =|| Можностите за навигација како во претходното сценарио || ||= **Постуслов:** =|| / || ||= **Нормален тек** =|| 1.1 Корисникот е на страница за дискусија за професор\\ 1.2 Кликнува на опцијата за објавување мислење и внесува содржина\\ИЛИ\\2.1 Корисникот е на страница за дискусија за предмет\\ 2.2 Кликнува на опцијата за објавување мислење\\ 2.3 Внесува наслов и содржина, задолжителни тагови поврзани со објавата (пр. дали станува збор за прашање во врска со логистиката на предметот или е во врска со материјалот, за која конкретна тема од истиот итн.) и опционално прикачува фајлови со дозволена екстензија || ||= **Исклучоци:** =|| Грешки при валидација на формата: внесениот тескт содржи премалку или премногу карактери, не се наведени тагови, прикачените фајлови се од недозволен тип и сл., при што мислењето нема да биде објавено и корисникот ќе биде известен за тоа || ||= **Вклучува:** =|| / || ||= **Приоритет:** =|| / || ||= **Фреквенција на користење:** =|| Средна (релативно на честотите на користење на останатите случаи) || ||= **Бизнис правила:** =|| / || ||= **Специјални побарувања:** =|| / || ||= **Претпоставки:** =|| Корисникот е претходно најавен на апликацијата || ||= **Забелешки:** =|| / || // ||= **ID:** =|| 5 || ||= **Случај на употреба:** =|| оценува туѓо мислење || ||= **Опис:** =|| Корисникот прави upvote или downvote на мислење објавено од друг корисник, со што влијае на неговата karma. || ||= **Тригер:** =|| Корисникот сака да ја оцени т.е. да се изјасни дали се согласува или не со некоја објава || ||= **Предуслов:** =|| Корисникот кој ја користи оваа функционалност да има барем една објава || ||= **Постуслов:** =|| / || ||= **Нормален тек** =|| 1. Корисникот е на страница за дискусија за професор или предмет\\ 2. Притиска на опцијата за upvote или downvote кај соодветната објава || ||= **Исклучоци:** =|| / || ||= **Вклучува:** =|| / || ||= **Приоритет:** =|| / || ||= **Фреквенција на користење:** =|| Висока (релативно на честотите на користење на останатите случаи) || ||= **Бизнис правила:** =|| / || ||= **Специјални побарувања:** =|| / || ||= **Претпоставки:** =|| Корисникот е претходно најавен на апликацијата || ||= **Забелешки:** =|| / || // ||= **ID:** =|| 6 || ||= **Случај на употреба:** =|| коментира туѓо мислење || ||= **Опис:** =|| Корисникот реплицира т.е. остава мислење во врска со мислењето објавено од друг корисник. || ||= **Тригер:** =|| Корисникот сака да дополни или да направи забелешка за некоја објава || ||= **Предуслов:** =|| / || ||= **Постуслов:** =|| / || ||= **Нормален тек** =|| 1. Корисникот е на страница за дискусија за професор или предмет\\ 2. Притиска на опцијата за коментирање кај соодветната објава и внесува содржина || ||= **Исклучоци:** =|| Грешки при валидација на формата при што коментарот нема да биде објавен и корисникот ќе биде известен за тоа || ||= **Вклучува:** =|| / || ||= **Приоритет:** =|| / || ||= **Фреквенција на користење:** =|| Средна (релативно на честотите на користење на останатите случаи) || ||= **Бизнис правила:** =|| / || ||= **Специјални побарувања:** =|| / || ||= **Претпоставки:** =|| Корисникот е претходно најавен на апликацијата || ||= **Забелешки:** =|| / || // ||= **ID:** =|| 7 || ||= **Случај на употреба:** =|| пријавува туѓо мислење || ||= **Опис:** =|| Корисникот пријавува кон модераторите мислење објавено од друг корисник, со цел тоа да биде отстрането или изменето. || ||= **Тригер:** =|| Корисникот смета дека објавеното мислење не соодветствува на темата, дека е навредливо/содржи говор на омраза, дека е автоматизирана spam порака и сл. || ||= **Предуслов:** =|| / || ||= **Постуслов:** =|| / || ||= **Нормален тек** =|| 1. Корисникот е на страница за дискусија за професор или предмет\\ 2. Притиска на опцијата за пријавување кај соодветната објава\\ 3. Избира една од неколкуте понудени опции за причина и опционално наведува дополнително образложение || ||= **Исклучоци:** =|| / || ||= **Вклучува:** =|| / || ||= **Приоритет:** =|| / || ||= **Фреквенција на користење:** =|| Ниска (релативно на честотите на користење на останатите случаи) || ||= **Бизнис правила:** =|| / || ||= **Специјални побарувања:** =|| / || ||= **Претпоставки:** =|| Корисникот е претходно најавен на апликацијата || ||= **Забелешки:** =|| / || // ||= **ID:** =|| 8 || ||= **Случај на употреба:** =|| го уредува својот кориснички профил || ||= **Опис:** =|| Корисникот го менува своето корисничко име, лозинка, додава дополнителни информации за себе како име, презиме, место на живеење, каде студира(л) и др. || ||= **Тригер:** =|| Зависно од потребите на корисникот || ||= **Предуслов:** =|| / || ||= **Постуслов:** =|| / || ||= **Нормален тек** =|| 1. Корисникот е на страницата за уредување кориснички профил\\ 2. Ги менува вредностите на параметрите што сака да ги измени\\ 2.1 (само доколку направи промена на лозинката) Добива порака со линк за потврда на промените по e-mail || ||= **Исклучоци:** =|| Грешки при валидација на формата при што промените нема да бидат зачувани и корисникот ќе биде известен за тоа || ||= **Вклучува:** =|| / || ||= **Приоритет:** =|| / || ||= **Фреквенција на користење:** =|| Средна (релативно на честотите на користење на останатите случаи) || ||= **Бизнис правила:** =|| / || ||= **Специјални побарувања:** =|| / || ||= **Претпоставки:** =|| Корисникот е претходно најавен на апликацијата || ||= **Забелешки:** =|| / || // ||= **ID:** =|| 9 || ||= **Случај на употреба:** =|| го верификува својот кориснички профил || ||= **Опис:** =|| Корисникот го потврдува и поврзува својот идентитет со својот профил на profesori.mk || ||= **Тригер:** =|| најчесто за неговите мислења да делуваат покредибилни (самата верификација не нуди дополнителни функционалности) || ||= **Предуслов:** =|| документ за идентификација || ||= **Постуслов:** =|| / || ||= **Нормален тек** =|| 1. Корисникот е на страницата за уредување кориснички профил\\ 2. Ја одбира опцијата за верификација на профил и го исполнува формуларот во кој треба да внесе име, презиме и занимање (пр. студент или професор), како и да прикачи јасна слика од документ за идентификација (лична карта или пасош)\\ 3. По некој временски период (макс. 7 дена) добива електронска порака со информацијата дали верификацијата е успешна || ||= **Исклучоци:** =|| Грешки при валидација на формата при што барањето за верификација нема да биде поднесено и корисникот ќе биде известен за тоа || ||= **Вклучува:** =|| / || ||= **Приоритет:** =|| / || ||= **Фреквенција на користење:** =|| Ниска (релативно на честотите на користење на останатите случаи) || ||= **Бизнис правила:** =|| / || ||= **Специјални побарувања:** =|| / || ||= **Претпоставки:** =|| Корисникот е претходно најавен на апликацијата || ||= **Забелешки:** =|| / || === Модератор ||= **ID:** =|| 10 || ||= **Случај на употреба:** =|| изменува или брише содржина || ||= **Опис:** =|| Модераторот уредува или брише мислења или реплики напишани од корисникот. || ||= **Тригер:** =|| несогласност на содржината со правилата на употреба на апликацијата || ||= **Предуслов:** =|| / || ||= **Постуслов:** =|| / || ||= **Нормален тек** =|| 1. Модераторот е на секцијата за дискусија каде се наоѓа мислењето\\ 2.1 Ја одбира опцијата за бришење ИЛИ\\ 2.2 Ја одбира опцијата за уредување, ги прави измените || ||= **Исклучоци:** =|| / || ||= **Вклучува:** =|| / || ||= **Приоритет:** =|| / || ||= **Фреквенција на користење:** =|| Висока (релативно на честотите на користење на останатите случаи) || ||= **Бизнис правила:** =|| / || ||= **Специјални побарувања:** =|| / || ||= **Претпоставки:** =|| / || ||= **Забелешки:** =|| / || // ||= **ID:** =|| 11 || ||= **Случај на употреба:** =|| прегледува пријави за содржината || ||= **Опис:** =|| Модераторот ги разгледува пријавите за содржина испратени од корисникот. || ||= **Тригер:** =|| Одржување на содржината во согласност со правилата за дискусија || ||= **Предуслов:** =|| / || ||= **Постуслов:** =|| / || ||= **Нормален тек** =|| 1. Модераторот е во делот за прегледување пријавена содржина\\ 2. Доколку образложението на пријавата има смисла т.е. правилата за дискусија се прекршени, има опција да ја измени или избрише содржината || ||= **Исклучоци:** =|| / || ||= **Вклучува:** =|| / || ||= **Приоритет:** =|| / || ||= **Фреквенција на користење:** =|| Висока (релативно на честотите на користење на останатите случаи) || ||= **Бизнис правила:** =|| / || ||= **Специјални побарувања:** =|| / || ||= **Претпоставки:** =|| / || ||= **Забелешки:** =|| / ||