Changes between Version 7 and Version 8 of UseCaseImplementations


Ignore:
Timestamp:
02/20/24 16:34:57 (4 months ago)
Author:
211012
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • UseCaseImplementations

    v7 v8  
    148148Од безбедносни причини споменати погоре, идентификаторот на корисникот се зема од сесијата и соодветно од сервисот се бара листа на избори на кои најавениот корисник има право да гласа. Преку соодветниот репозиториум и прашалникот наведен во претходните фази и напишан во JPQL погоре, од базата се земаат потребните податоци. Истите се прикажуваат во паѓачка листа. Доколку корисникот се обиде да пристапи до оваа страница без претходна успешна валидација, по проверката за постоење на сесијата и валиден идентификатор, истиот ќе биде пренасочен кон страницата за најава.
    149149
     150=== Прегледува вкупна излезност
     151
     152Со пристап на јавната адреса /turnout каде се прикажува излезноста на граѓаните во одредена реализација. Каде има полиња за која реализација (имплементирано), која општина, кој пол, кое избирачко место и во кое време да се видат резултатите од излезноста, кое за сега не е имплементирано. Со клик на копчето „Пребарај“ се праќа барање до контролерот на адреса /turnout. Во контролерот се повикува функција од voteService со параметар id на самата реализација.
     153[[Image(izleznost.png)]]
     154{{{#!java
     155    @GetMapping("/turnout")
     156    public String turnOutResults(Model m, @RequestParam(required = false) Long realizationId) {
     157        Double turnOut = voteService.turnOutByElectionRealization(realizationId);
     158        m.addAttribute("replaceTemplate", "turnout_circle");
     159        m.addAttribute("turnoutPercentage", turnOut);
     160        m.addAttribute("realizationId", realizationId);
     161        m.addAttribute("municipalities", municipalityService.findAll());
     162        m.addAttribute("realizations", candidatesElectionRealizationService.findAll());
     163        m.addAttribute("pollingStations", addressService.findAllPollingStations());
     164        m.addAttribute("realization",candidatesElectionRealizationService.findById(realizationId));
     165        return "index";
     166    }
     167}}}
     168
     169Сервисот го обработува повикот од контролерот, со тоа што ја наоѓа реализацијата на избори со тоа id и повикува друга функција turnOutByRealization од voteRepository кој имплементира интерфејс од JpaRepository.
     170
     171{{{#!java
     172    public Double turnOutByElectionRealization(Long id)
     173    {
     174        ElectionRealization electionRealization = electionRealizationService.findById(id);
     175        return voteRepository.turnOutByRealization(electionRealization, LocalDate.now().minusYears(18));
     176    }
     177}}}
     178
     179Покрај функциите кои ги содржи интерфејсот JpaRepository може да се креираат и прашалници. Во долунаведениот прашалник се зимаат сите гласања од одредена реализација во однос со сите граѓани помножено по 100 за да се добие бараниот процент.
     180
     181{{{#!java
     182    @Query(value = "SELECT (SELECT COUNT(v) FROM Vote v WHERE v.electionRealization = :ri) * 100.0 / (SELECT COUNT(c) FROM Citizen c WHERE c.dateOfBirth <= :dateThreshold) FROM ElectionRealization ri WHERE ri = :ri")
     183    public Double turnOutByRealization(@Param("ri") ElectionRealization electionRealization, @Param("dateThreshold") LocalDate dateThreshold);
     184}}}
     185
    150186=== Прегледува вкупни резултати од избори со кандидат
    151187Оваа функционалност е достапна за сите корисници, без разлика дали се автеницирани и може да се пристапи на страницата /results. Приказот кој го добива корисникот изгледа вака: