Changes between Version 42 and Version 43 of UseCasePrototypeImplementation


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

--

Legend:

Unmodified
Added
Removed
Modified
  • UseCasePrototypeImplementation

    v42 v43  
    163163}}}
    164164
     165== Коментирање туѓо мислење (6)
     166Имплементирана е и функционалноста за додавање реплики на мислења. Подолу се прикажани главните отсечоци од код каде се имплементирани чекорите кои ги презема системот при тригер на сценариото, односно: \\\\
     167**1.** Javascript апликацијата јавува modal со единствено поле за содржина на коментарот //
     168**2.** Javascript апликацијата проверува дали полето е празно (ако е, не испраќа повик и рендерира порака за грешка), а потоа испраќа барање (кое во телото содржи ИД на засегнатото мислење и содржина на коментарот) до одредена патека на која реагира контролерот. Тој потоа повикува соодветен метод од сервисната логика, што резултира со зачувување на диск нова торка во релацијата за мислења (Post) со атрибут ИД на родител-мислење еднаков на ИД-то добиено во payload-от на барањето. //
     169**3.** По добивање на одговорот, JS апликацијата го освежува прелистувачот, значи се прикажува истата страница за дискусија, но во одговорот на fetch повикот за мислењата кои и припаѓаат сега ќе се најде и новододадената реплика
     170
     171{{{#!div style="font-size: 80%"
     172[[https://develop.finki.ukim.mk/projects/profesori.mk/browser/reactapp/src/Components/OpinionTree.js?rev=ebc51762bbd1b4345d8908789af87bdc49aad058|Components/OpinionTree.js, ревизија ebc5176]]
     173  {{{#!javascript
     174                  const handleReply = (opinion) => {
     175            if (auth) {
     176              setReplyModalDisplay("block");
     177              setPostForModal(opinion);
     178            } else {
     179              navigate("/login");
     180            }
     181          };
     182       
     183          const handleModalCloseClick = () => {
     184            setReplyModalDisplay("none");
     185          };
     186       
     187          const handleContentChange = (e) => {
     188            setReplyContent(e.target.value);
     189          };
     190       
     191          const handleReplySubmit = async (e, postId) => {
     192            e.preventDefault();
     193       
     194            const response = await axios(
     195              `http://192.168.0.17:8080/secure/professor/${professor.professorId}/replyToOpinion/${postId}`,
     196              {
     197                method: "post",
     198                data: {
     199                  content: replyContent,
     200                },
     201                withCredentials: true,
     202              }
     203            );
     204       
     205            window.location.reload(false);         
     206          };
     207  }}}
     208}}}
     209
     210{{{#!div style="font-size: 80%"
     211[[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]]
     212  {{{#!java 
     213  public void replyToOpinion(String content, Long professorId, Long postId, CustomUserDetails currentUser) {
     214       
     215                Professor targetProfessor = professorRepository.findByProfessorId(professorId);
     216                Opinion targetOpinion = opinionRepository.findByPostId(postId);
     217       
     218                Opinion opinionToAdd = new Opinion(null, content, currentUser, null, null,
     219                        targetOpinion, null, targetProfessor);
     220                opinionRepository.save(opinionToAdd);
     221       
     222                targetOpinion.getChildren().add(opinionToAdd);
     223                opinionRepository.save(targetOpinion);
     224            }
     225  }}}
     226}}}
     227
    165228=== Корисничка регистрација (3)
    166229Во оваа фаза за регистрацијата на корисник нема интерфејс, но може да се изврши со POST повик до позадински сервис. Пример за валиден повик: