Changes between Version 34 and Version 35 of UseCaseImplementations


Ignore:
Timestamp:
07/08/25 11:20:02 (2 days ago)
Author:
231017
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • UseCaseImplementations

    v34 v35  
    2626== Use Case ID: 1 – Се регистрира ==
    2727[[Image(5.png,width=900, height=450)]][[BR]]
    28 **Корисникот притиснува „Register“ и најпрво се извршува основа валидација на формата на клиентска страна **[[BR]]
     28**Корисникот притиснува „Register“ и најпрво се извршува основна валидација на формата на клиентска страна. **[[BR]]
    2929[[Image(handleSubmit1.0.png)]][[BR]]
    3030[[Image(handleSubmit2.0.png)]][[BR]]
    31 **Потоа се повикува функција во „AuthContext“ која повикува помошна функција која испраќа POST барање до backend. Се врши повторна валидација на податоците, како и проверка дали постои корисник со внесените податоци. При успешен крај профилот на корисникот се зачувува во „state“ како и во „localStorage“,со цел побрзо ажурирање на податоци на клиентска страна **[[BR]]
    32 **Функцијата во „AuthContext“**
     31**Потоа се повикува функција во „AuthContext“ која повикува помошна функција која испраќа POST барање до backend. Се врши повторна валидација на податоците, како и проверка дали постои корисник со внесените податоци. При успешен крај профилот на корисникот се зачувува во „state“ како и во „localStorage“, со цел побрзо ажурирање на податоци на клиентска страна. **[[BR]]
     32**Функцијата во „AuthContext.“**
    3333[[Image(registerAuthContext.png)]][[BR]]
    34 **Помошна функција во „services/registerLoginService“**[[BR]]
     34**Помошна функција во „services/registerLoginService.“**[[BR]]
    3535[[Image(registerUserService.png)]][[BR]]
    36 **Функцијата во контролерот**[[BR]]
     36**Функцијата во контролерот.**[[BR]]
    3737[[Image(registerPostController.png)]][[BR]]
    3838[[Image(registerPostController2.png)]][[BR]]
    3939[[Image(registerPostController3.png)]][[BR]]
    40 **Проверка на податоците внесени од корисникот се извршува и на backend во моделот „User“**
     40**Проверка на податоците внесени од корисникот се извршува и на backend во моделот „User“.**
    4141[[Image(userValidate.png)]][[BR]]
    4242
    4343== Use Case ID: 2 – Разгледува почетна страна ==
    4444[[Image(1.png)]][[BR]]
    45 **На почетната страна се проверува дали е најавен корисникот и во зависност од тоа динамички се менува „Hero“ секцијата**
     45**На почетната страна се проверува дали е најавен корисникот и во зависност од тоа динамички се менува „Hero“ секцијата.**
    4646[[BR]]
    4747[[Image(heroAuth.png)]]
     
    5555== Use Case ID: 1 – Се најавува ==
    5656[[Image(6.png,width=900, height=550)]][[BR]]
    57 **Корисникот притиснува „Log in“ и слично како и при регистрација, се повикува „login“ функција во „AuthContext“, потоа помошна функција во „services/registerLoginService“ и на крај се испраќа POST барање до backend со кое се справува контролерот. При успешен крај податоците за корисникот се зачувуваат во „state“ на клиентска страна **[[BR]]
     57**Корисникот притиснува „Log in“ и слично како и при регистрација, се повикува „login“ функција во „AuthContext“, потоа помошна функција во „services/registerLoginService“ и на крај се испраќа POST барање до backend со кое се справува контролерот. При успешен крај, податоците за корисникот се зачувуваат во „state“ на клиентска страна. **[[BR]]
    5858
    5959[[Image(handleSubmitLogin.png)]][[BR]]
    60 **Функцијата во „AuthContext“ **[[BR]]
     60**Функцијата во „AuthContext.“ **[[BR]]
    6161[[Image(loginAuthContext.png)]][[BR]]
    62 **Помошна функција во „services/registerLoginService“**[[BR]]
     62**Помошна функција во „services/registerLoginService“.**[[BR]]
    6363[[Image(loginService.png)]][[BR]]
    64 **Функцијата во контролерот**[[BR]]
     64**Функцијата во контролерот.**[[BR]]
    6565[[Image(loginController.png)]][[BR]]
    6666
     
    6969[[Image(4.png)]]
    7070[[BR]]
    71 **На почетната страна се проверува дали е најавен корисникот и во зависност од тоа динамички се менува „Hero“ секцијата**
     71**На почетната страна се проверува дали е најавен корисникот и во зависност од тоа динамички се менува „Hero“ секцијата.**
    7272
    7373
     
    7676== Use Case ID: 1 – Преглед на контролната табла ==
    7777[[Image(Dashboard.png,width=900, height=450)]][[BR]]
    78 **Во објектот „user“ се чуваат потребните информации како на пример дали корисникот го има решено предизвикот или не и слично**[[BR]]
     78**Во објектот „user“ се чуваат потребните информации како на пример дали корисникот го има решено предизвикот или не и слично.**[[BR]]
    7979[[Image(dashboard.png)]]
    8080
    8181== Use Case ID: 2 – Преглед на својот профил ==
    8282[[Image(profile.png,width=900, height=450)]]
    83 **Во објектот „user“ се чуваат потребните информации како на пример вкупен број на поени и решени предизвици**[[BR]]
     83**Во објектот „user“ се чуваат потребните информации како на пример вкупен број на поени и решени предизвици.**[[BR]]
    8484[[Image(Screenshot_1.png)]]
    8585[[Image(Screenshot_2.png)]]
     
    8787== Use Case ID: 3 – Пристап до дневниот предизвик ==
    8888[[Image(startedChallenge.png,width=900, height=450)]] [[BR]]
    89 **Најпрво при пристап до предизвикот се повикува помошна функција која повикува GET барање до backend и се враќаат податоците за денешниот предизвик**[[BR]]
     89**Најпрво при пристап до предизвикот се повикува помошна функција која повикува GET барање до backend и се враќаат податоците за денешниот предизвик.**[[BR]]
    9090[[Image(fetchTaskForToday.png)]] [[BR]]
    91 **Помошна функција во „services/taskService“**[[BR]]
     91**Помошна функција во „services/taskService“.**[[BR]]
    9292[[Image(getTaskForDateService.png)]] [[BR]]
    93 **Функциите во контролерот**[[BR]]
     93**Функциите во контролерот.**[[BR]]
    9494[[Image(getTaskByDateController.png)]] [[BR]]
    9595[[Image(getTaskByDateController2.png)]] [[BR]]
    96 **При избор на „Test case“ за корисникот најпрво се проверува дали претходно пристапил до предизвикот и ако да се повикуваат функциите за преземање на конкретниот „Test case“. Во спротива се презема „Test case“ од низата „Test cases“ за соодветниот предизвик и преку помошната функција „updateUserDailyTestCaseId“ се повикува PUT барање до backend и се ажурира соодветната колона за корисникот во датабазата **[[BR]]
     96**При избор на „Test case“ за корисникот најпрво се проверува дали претходно пристапил до предизвикот и ако да се повикуваат функциите за преземање на конкретниот „Test case“. Во спротивно се презема „Test case“ од низата „Test cases“ за соодветниот предизвик и преку помошната функција „updateUserDailyTestCaseId“ се повикува PUT барање до backend и се ажурира соодветната колона за корисникот во датабазата. **[[BR]]
    9797[[Image(fetchTestCaseLogic1.png)]] [[BR]]
    9898[[Image(fetchTestCaseLogic2.png)]] [[BR]]
    99 **Помошни функции во „services/taskService“**[[BR]]
     99**Помошни функции во „services/taskService.“**[[BR]]
    100100[[Image(getSpecificTestCaseService.png)]] [[BR]]
    101101[[Image(getTestCaseForTaskService.png)]] [[BR]]
    102102[[Image(updateUserService.png)]] [[BR]]
    103 **Функциите во контролерот**
     103**Функциите во контролерот.**
    104104[[Image(getTestCaseByIDController.png)]] [[BR]]
    105105[[Image(getTestCaseController.png)]] [[BR]]
    106 **Корисникот притиснува „Submit“ и се извршува основа валидација на податоците. Потоа се повикува помошна функција која повикува POST барање до backend каде се врши евалуација на резултатот внесен од корисникот**[[BR]]
     106**Корисникот притиснува „Submit“ и се извршува основа валидација на податоците. Потоа се повикува помошна функција која повикува POST барање до backend каде се врши евалуација на резултатот внесен од корисникот.**[[BR]]
    107107[[Image(handleSubmitSolution.png)]] [[BR]]
    108 **Помошна функција во „services/taskService“**[[BR]]
     108**Помошна функција во „services/taskService“.**[[BR]]
    109109[[Image(evaluateService.png)]] [[BR]]
    110 **Овие функции се корситат при евалуација на резултатот внесен од корисникот. Најпрво се повикуваат функциите „getMinutesSinceSevenAM“ и „getTimeBonus“, со кои се пресметува времето поминато од поставување на предизвикот, односно од седум часот наутро. Потоа се повикува функцијата „getAttemptScore“ која служи за доделување поени во зависност од тоа колку обиди му биле потребни на корисникот да го реши предизвикот. За крај, се повикуваат функции за нормализација на резултатот внесен од корисникот и негова споредба со точниот резултат**[[BR]]
     110**Овие функции се користат при евалуација на резултатот внесен од корисникот. Најпрво се повикуваат функциите „getMinutesSinceSevenAM“ и „getTimeBonus“, со кои се пресметува времето поминато од поставување на предизвикот, односно од седум часот наутро. Потоа се повикува функцијата „getAttemptScore“ која служи за доделување поени во зависност од тоа колку обиди му биле потребни на корисникот да го реши предизвикот. За крај, се повикуваат функции за нормализација на резултатот внесен од корисникот и негова споредба со точниот резултат.**[[BR]]
    111111[[Image(helperEvalFunctions1.png)]] [[BR]]
    112112[[Image(helperEvalFunctions2.png)]] [[BR]]
    113 **Функциите во контролерот. Тука се ажурираат и соодветните полиња за корисникот и предизвикот во датабазата**[[BR]]
     113**Функциите во контролерот. Тука се ажурираат соодветните записи во табелите за корисникот и предизвикот во датабазата.**[[BR]]
    114114[[Image(evaluateController1.png)]] [[BR]]
    115115[[Image(evaluateController2.png)]] [[BR]]
    116116[[Image(evaluateController3.png)]] [[BR]]
    117 **Функцијата во контролерот која е повикана од „updateUserDailyTestCaseId“**[[BR]]
     117**Функцијата во контролерот која е повикана од „updateUserDailyTestCaseId“.**[[BR]]
    118118[[Image(updateTestCase.png)]] [[BR]]
    119119
     
    122122== Use Case ID: 4 – Прегледува ранг листата ==
    123123[[Image(leaderboard.png,width=900, height=450)]]
    124 **Преку клиентска страна се испраќа GET барање до специфична „URL“ адреса на нашиот Supabase“ сервер каде што се извршува „edge“ функција**[[BR]]
     124**Преку клиентска страна се испраќа GET барање до специфична „URL“ адреса на нашиот „Supabase“ сервер каде што се извршува „edge“ функција.**[[BR]]
    125125[[Image(fetchLeaderBoard.png)]] [[BR]]
    126 **Оваа функција се извршува на серверите на Supabase. Нејзината цел е да обработи барање, да земе податоци од базата и да ги врати назад на клиентот. Прво проверува дали веќе има зачуван (кеширан) одговор за точно тоа барање (иста страница и ист лимит) во табелата „leaderboard_cache“. Ако најде податок понов од 5 минути, веднаш го враќа како одговор.Ако не најде валиден влез, тогаш конструира барање до главната табела и се извршува сортирањето**[[BR]]
     126**Оваа функција се извршува на серверите на Supabase. Нејзината цел е да обработи барање, да земе податоци од базата и да ги врати назад на клиентот. Прво проверува дали веќе има зачуван (кеширан) одговор за точно тоа барање (иста страница и ист лимит) во табелата „leaderboard_cache“. Ако најде податок понов од 5 минути, веднаш го враќа како одговор.Ако не најде валиден влез, тогаш конструира барање до главната табела и се извршува сортирањето.**[[BR]]
    127127[[Image(indexts1.png)]] [[BR]]
    128128[[Image(indexts2.png)]] [[BR]]
     
    132132== Use Case ID: 5 – Прегледува форум ==
    133133[[Image(forum.png,width=900, height=450)]][[BR]]
    134 **Најпрво се повикува помошна функција која испраќа GET барање до backend со одредени вредности за број на објави. Потоа преку функцијата во контролерот се враќа одговор со соодветниот број на објави**[[BR]]
     134**Најпрво се повикува помошна функција која испраќа GET барање до backend со одредени вредности за број на објави. Потоа преку функцијата во контролерот се враќа одговор со соодветниот број на објави.**[[BR]]
    135135[[Image(fetchPosts.png)]][[BR]]
    136 **Помошна функција во „services/forumService“**
     136**Помошна функција во „services/forumService“.**
    137137[[Image(getForumPostsService.png)]][[BR]]
    138 **Функцијата во контролерот“**[[BR]]
     138**Функцијата во контролерот“.**[[BR]]
    139139[[Image(getForumPostsController.png)]][[BR]]
    140140
     
    142142== Use Case ID: 6 – Пишува и постира на форумот ==
    143143[[Image(12.png,width=900, height=450)]][[BR]]
    144 **Корисникот притиснува „Publish Post“, се повикува помошна функција и се испраќа POST барање до backend. Потоа се повикува функција во контролерот, каде најпрво се проверува дали корисникот има преостанати објави за тој ден. Ако има, се проверува содржината на објавата, односно дали содржи вулгарности. Ако не содржи, се испраќа GET барање до „OpenAi api“ преку кое се одредува дали содржината е соодветна за форумот. Доколку објавата е подолга од 200 карактери се внесува во табелата за проверка од модератор. Исто така, доколку системот одредил 3 пати во ред несоодветна содржина, корисникот има можност да ја испрати објавата до модератор за проверка.**[[BR]]
    145 **Функции на клиентска страна кои повикуваат помошни функции кои испраќаат POST барања до backend**
     144**Корисникот притиснува „Publish Post“, се повикува помошна функција и се испраќа POST барање до backend. Потоа се повикува функција во контролерот, каде најпрво се проверува дали корисникот има преостанати објави за тој ден. Ако има, се проверува содржината на објавата, односно дали содржи вулгарности. Доколку не содржи, се испраќа GET барање до „OpenAi api“ преку кое се одредува дали содржината е соодветна за форумот. Доколку објавата е подолга од 200 карактери се внесува во табелата за проверка од модератор. Исто така, доколку системот одредил 3 пати во ред несоодветна содржина, корисникот има можност да ја испрати објавата до модератор за проверка.**[[BR]]
     145**Функции на клиентска страна кои повикуваат помошни функции кои испраќаат POST барања до backend.**
    146146[[Image(createPost.png)]][[BR]]
    147147[[Image(handleModeratorDecision.png)]][[BR]]
    148 **Помошна функција во „services/forumService“**[[BR]]
     148**Помошна функција во „services/forumService“.**[[BR]]
    149149[[Image(createPostService.png)]][[BR]]
    150 **Помошна функција во „services/reviewService“**[[BR]]
     150**Помошна функција во „services/reviewService“.**[[BR]]
    151151[[Image(moderatorApprovalService.png)]][[BR]]
    152 **Функција во „forumController“. Оваа функција е одговорна и за ажурирање на соодветните полиња за преостанати дневни објави за корисникот**[[BR]]
     152**Функција во „forumController“. Оваа функција е одговорна и за ажурирање на соодветните полиња за преостанати дневни објави за корисникот.**[[BR]]
    153153[[Image(createPostController1.0.png)]][[BR]]
    154154[[Image(createPostController2.0.png)]][[BR]]
    155 **Функција која испраќа барање до „OpenAi api“**[[BR]]
     155**Функција која испраќа барање до „OpenAi api“.**[[BR]]
    156156[[Image(aiFunction.png)]][[BR]]
    157 **Функција во „reviewController“ која ја додава објавата во табелата за проверка од модератор**[[BR]]
     157**Функција во „reviewController“ која ја додава објавата во табелата за проверка од модератор.**[[BR]]
    158158[[Image(createReviewPost.png)]][[BR]]
    159159
     
    161161== Use Case ID: 7 – Коментирање на дискусии ==
    162162[[Image(writingComment.png,width=900, height=550)]][[BR]]
    163 **Корисникот притиснува „Post Comment“ и се повикува помошна функција која испраќа POST барање до backend. Барањето е обработено од функцијата во контролерот, каде најпрво се проверува коментарот дали содржи вулгарности. Доколку не содржи се додава нов коментар во датабазата, кој соодветсвува на објавата**[[BR]]
     163**Корисникот притиснува „Post Comment“ и се повикува помошна функција која испраќа POST барање до backend. Барањето е обработено од функцијата во контролерот, каде најпрво се проверува коментарот дали содржи вулгарности. Доколку не содржи се додава нов коментар во датабазата, кој соодветствува на објавата.**[[BR]]
    164164[[Image(handleSubmitComment.png)]][[BR]]
    165 **Помошна функција во „services/forumService“**[[BR]]
     165**Помошна функција во „services/forumService“.**[[BR]]
    166166[[Image(createCommentService.png)]][[BR]]
    167 **Функцијата во контролерот**
     167**Функцијата во контролерот.**
    168168[[Image(createCommentController.png)]][[BR]]
    169169=== Модератор ===
     
    171171== Use Case ID: 1 – Креира нов предизвик ==
    172172[[Image(CreateNewChallenge3.0.png,width=900, height=450)]]
    173 **Модераторот притиснува „Create Challenge“, се повикува помошна функција која испраќа POST барање до backend. Функцијата во контролерот го обработува барањето, така што најпрво се проверува дали корисникот навистина е модератор, а потоа се повикува валидациска функција за предизвикот. При успешен крај предизвикот се додава во датабазата**[[BR]]
     173**Модераторот притиснува „Create Challenge“, се повикува помошна функција која испраќа POST барање до backend. Функцијата во контролерот го обработува барањето, така што најпрво се проверува дали корисникот навистина е модератор, а потоа се повикува валидациска функција за предизвикот. При успешен крај предизвикот се додава во датабазата.**[[BR]]
    174174[[Image(handlesubmit1.png)]][[BR]]
    175175[[Image(handlesubmit2.png)]][[BR]]
    176 **Помошна функција во „services/taskService“**[[BR]]
     176**Помошна функција во „services/taskService“.**[[BR]]
    177177[[Image(createNewTaskService.png)]][[BR]]
    178 **Функцијата во контролерот**[[BR]]
     178**Функцијата во контролерот.**[[BR]]
    179179[[Image(createNewTaskController1.png)]][[BR]]
    180180[[Image(createNewTaskController2.png)]][[BR]]
    181 **Функцијата за валидација во моделот „Challenge“**[[BR]]
     181**Функцијата за валидација во моделот „Challenge“.**[[BR]]
    182182[[Image(validate.png)]][[BR]]
    183183
     
    191191[[Image(deleteChallenge.png,width=900, height=450)]]
    192192**Модераторот притиснува „Delete“, се повикува функцијата „deleteChallenge“ на клиентска страна, се повикува помошна функција која испраќа DELETE барање до backend. Со барањето се справува функцијата во контролерот, каде најпрво се проверува дали барањето е навистина направено од модератор.**[[BR]]
    193 **Функцијата на клиентска страна**[[BR]]
     193**Функцијата на клиентска страна.**[[BR]]
    194194[[Image(deleteChallenge.2.png)]][[BR]]
    195 **Помошна функција во „services/taskService“**[[BR]]
     195**Помошна функција во „services/taskService“.**[[BR]]
    196196[[Image(deleteTaskService.png)]][[BR]]
    197 **Функцијата во контролерот**[[BR]]
     197**Функцијата во контролерот.**[[BR]]
    198198[[Image(deleteTaskController.png)]][[BR]]
    199199
     
    201201[[Image(deletePost.png,width=900, height=450)]][[BR]]
    202202**Модераторот притиснува „Delete“, се повикува функција на клиентска страна, потоа помошна функција која испраќа DELETE барање до backend. Со барањето се справува функцијата во контролерот, каде се проверува дали барањето е направено од модератор или од авторот на објавата.**[[BR]]
    203 **Функцијата на клиентска страна**[[BR]]
     203**Функцијата на клиентска страна.**[[BR]]
    204204[[Image(handleDeletePost.png)]][[BR]]
    205 **Помошна функција во „services/forumService“**[[BR]]
     205**Помошна функција во „services/forumService“.**[[BR]]
    206206[[Image(deletePostService.png)]][[BR]]
    207 **Функцијата во контролерот**[[BR]]
     207**Функцијата во контролерот.**[[BR]]
    208208[[Image(deleteForumPostController.png)]][[BR]]
    209209
    210210== Use Case ID: 4 – Отстранува коментари ==
    211211[[Image(deleteComment.png,width=900, height=450)]]
    212 **Слично како во „Use Case ID: 3 – Отстранува објави“, се повкува функција на клиентска страна, потоа помошна функција и за крај функцијата во контролерот, каде се извршува истата проверка.**
    213 **Функцијата на клиентска страна**[[BR]]
     212**Слично како во „Use Case ID: 3 – Отстранува објави“, се повикува функција на клиентска страна, потоа помошна функција и за крај функцијата во контролерот, каде се извршува истата проверка.**
     213**Функцијата на клиентска страна.**[[BR]]
    214214[[Image(handleDeleteComment.png)]][[BR]]
    215 **Помошна функција во „services/forumService“**[[BR]]
    216 [[Image(deleteCommentService.png)]][[BR]]
    217 **Функцијата во контролерот**[[BR]]
     215**Помошна функција во „services/forumService“.**[[BR]]
     216[[Image(deletCommentService.png)]][[BR]]
     217**Функцијата во контролерот.**[[BR]]
    218218[[Image(deleteCommentController.png)]][[BR]]
    219219
    220220== Use Case ID: 5 – Одобрува објави ==
    221 **Модераторот пристапува до погледот за филтрирање на објави**
    222 [[Image(maangePosts.png,width=900, height=450)]][[BR]]
    223 **Модераторот успешно одобрува објава**
    224221[[Image(approvePost.png,width=900, height=450)]]
    225 [[Image(approvePostSuccess.png,width=900, height=450)]]
     222**Модераторот притиснува „Approve“, се повикува функцијата „handleApprovePost“ на клиентска страна, потоа се повикува помошна функција која испраќа POST барање до backend. Ова барање се обработува од функција во контролерот, каде објавата се додава во табелата за објави, а се отстранува од табелата за проверка на објави.**[[BR]]
     223**Функцијата на клиентска страна.**[[BR]]
     224[[Image(handleApprovePost.png)]][[BR]]
     225**Помошна функција во „services/reviewService“.**[[BR]]
     226[[Image(approvePostService.png)]][[BR]]
     227**Функцијата во контролерот.**[[BR]]
     228[[Image(approvePostController.2.png)]][[BR]]
    226229
    227230== Use Case ID: 5 – Одбива објави==
    228 **Модераторот успешно одбива објава**
    229231[[Image(deletePost2.0.png,width=900, height=450)]]
    230 [[Image(deletePost2.0Success.png,width=900, height=450)]]
    231 
    232 
    233 
     232**Слично како во „Use Case ID: 5 – Одобрува објави“, се повикува функција на клиентска страна, потоа помошна функција која испраќа DELETE барање до backend. Ова барање се обработува од функција во контролерот, каде објавата се отстранува од табелата за проверка на објави. **[[BR]]
     233**Функцијата на клиентска страна.**[[BR]]
     234[[Image(handleDeletePostR.png)]][[BR]]
     235**Помошна функција во „services/reviewService“.**[[BR]]
     236[[Image(deletePostServiceR.png)]][[BR]]
     237**Функцијата во контролерот.**[[BR]]
     238[[Image(deletePostControllerR.png)]][[BR]]
     239
     240
     241