Changes between Version 40 and Version 41 of UseCasePrototypeImplementation


Ignore:
Timestamp:
02/18/23 23:14:18 (15 months ago)
Author:
216151
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • UseCasePrototypeImplementation

    v40 v41  
    2626
    2727== Додавање мислења во секција за дискусија (4)
    28 Во фазата прототип беше делумно имплементирано и сценариото за додавање мислења. Подолу се прикажани отсечоци од код каде се имплементирани чекорите кои ги презема системот при тригер на сценариото, односно: \\\\
     28Во фазата прототип беше делумно имплементирано и сценариото за додавање мислења. Подолу се прикажани главните отсечоци од код каде се имплементирани чекорите кои ги презема системот при тригер на сценариото, односно: \\\\
    2929**1.** Javascript апликацијата јавува modal со полиња за внес на содржина и наслов (условно, само ако се отвара нова тема за предмет) \\
    3030**2.** Javascript апликацијата ги валидира полињата (дали некое е празно), по што праќа барање со споменатите полиња, кое на серверска страна го пречекува контролерот и наредува тек од повици што завршува со складирање на диск нова торка во соодветната релација (Post). \\
    3131**3.** По добивање на одговорот, JS апликацијата го освежува прелистувачот, значи се прикажува истата страница за дискусија, но во одговорот на fetch повикот за мислењата кои и припаѓаат сега ќе се најде и новододаденото мислење \\
     32
     33{{{#!div style="font-size: 80%"
     34[[https://develop.finki.ukim.mk/projects/profesori.mk/browser/reactapp/src/Components/OpinionTree.js?rev=ebc51762bbd1b4345d8908789af87bdc49aad058|Components/OpinionTree.js, ревизија ebc5176]]
     35  {{{#!javascript
     36          const handleLike = async (post) => {
     37            if (
     38              auth &&
     39              userLoaded &&
     40              !post.likes.some((e) => e.id === user.user.id) &&
     41              !post.dislikes.some((e) => e.id === user.user.id)
     42            ) {
     43              const response = await axios(
     44                `http://192.168.0.17:8080/secure/professor/${professor.professorId}/upvoteOpinion/${post.postId}`,
     45                {
     46                  method: "get",
     47                  withCredentials: true,
     48                }
     49              );
     50       
     51              window.location.reload(false);
     52            } else {
     53              return;
     54            }
     55          };
     56       
     57          const handleDislike = async (post) => {
     58            if (
     59              auth &&
     60              auth &&
     61              userLoaded &&
     62              !post.likes.some((e) => e.id === user.user.id) &&
     63              !post.dislikes.some((e) => e.id === user.user.id)
     64            ) {
     65              const response = await axios(
     66                `http://192.168.0.17:8080/secure/professor/${professor.professorId}/downvoteOpinion/${post.postId}`,
     67                {
     68                  method: "get",
     69                  withCredentials: true,
     70                }
     71              );
     72       
     73              window.location.reload(false);
     74            } else {
     75              return;
     76            }
     77          };
     78  }}}
     79}}}
     80   
     81{{{#!div style="font-size: 80%"
     82[[https://develop.finki.ukim.mk/projects/profesori.mk/browser/springapp/src/main/java/mk/profesori/springapp/Service/MainService.java?rev=ebc51762bbd1b4345d8908789af87bdc49aad058|Service.MainService.java, ревизија ebc5176]]
     83  {{{#!java
     84            public void upvoteOpinion(Long postId, CustomUserDetails currentUser) {
     85                Opinion targetOpinion = opinionRepository.findByPostId(postId);
     86       
     87                if (!targetOpinion.getLikes().contains(currentUser)) {
     88       
     89                    targetOpinion.getLikes().add(currentUser);
     90                    // opinionRepository.save(targetOpinion);
     91       
     92                    targetOpinion.getAuthor().setKarma(targetOpinion.getAuthor().getKarma() + 1);
     93                    userRepository.save(targetOpinion.getAuthor());
     94       
     95                    currentUser.getLikedPosts().add(targetOpinion);
     96                    userRepository.save(currentUser);
     97                }
     98            }
     99       
     100            public void downvoteOpinion(Long postId, CustomUserDetails currentUser) {
     101                Opinion targetOpinion = opinionRepository.findByPostId(postId);
     102       
     103                if (!targetOpinion.getDislikes().contains(currentUser)) {
     104       
     105                    targetOpinion.getDislikes().add(currentUser);
     106                    // opinionRepository.save(targetOpinion);
     107       
     108                    targetOpinion.getAuthor().setKarma(targetOpinion.getAuthor().getKarma() - 1);
     109                    userRepository.save(targetOpinion.getAuthor());
     110       
     111                    currentUser.getDislikedPosts().add(targetOpinion);
     112                    userRepository.save(currentUser);
     113                }
     114            }
     115  }}}
     116}}}
     117
     118== Оценување на туѓо мислење (5)
     119Во оваа фаза е имплементирано и сценариото за оценување мислења. Подолу се прикажани главните отсечоци од код каде се имплементирани чекорите кои ги презема системот при тригер на сценариото, односно: \\\\
     120**1.** Апликацијата на клиентска страна со самото вчитување на мислењата кои одговараат на секцијата има достапна во меморија листа од кориснички ИД-а кои го оцениле секое мислење. Врз основа на тоа кликот го игнорира (доколку ИД на моменталниот корисник е исто со некое ИД од листата), или праќа повик до серверот што резултира со додавање на ставка во релацијата што ги чува податоците за оцени (корисник-пост) и инкрементирање/декрементирање на кармата на авторот на корисникот.
    32121
    33122{{{#!div style="font-size: 80%"