| 69 | По пренасочувањето, корисникот го добива следниот приказ, а за ова барање е одговорен контролерот: |
| 70 | {{{#!java |
| 71 | @GetMapping("/vote/available") |
| 72 | public String getAvailableElections(Model m, |
| 73 | HttpServletRequest httpServletRequest) { |
| 74 | if (httpServletRequest.getSession(false) == null) { |
| 75 | return "redirect:/vote"; |
| 76 | } |
| 77 | Long citizenId = (Long) httpServletRequest.getSession().getAttribute("citizenId"); |
| 78 | List<CandidatesElectionRealization> availableElections = candidatesElectionRealizationService.findAvailable(citizenId); |
| 79 | m.addAttribute("realizations", availableElections); |
| 80 | m.addAttribute("replaceTemplate", "elections_choice"); |
| 81 | return "index"; |
| 82 | } |
| 83 | }}} |
| 84 | {{{#!java |
| 85 | @Override |
| 86 | public List<CandidatesElectionRealization> findAvailable(Long citizenId) { |
| 87 | Citizen citizen = citizenService.findById(citizenId); |
| 88 | return repository.availableElections(citizen, citizen.getAddress().getMunicipality()); |
| 89 | } |
| 90 | }}} |
| 91 | {{{#!java |
| 92 | @Query(value = "select distinct elections from CandidatesElectionRealization elections join Candidacy candidacy on candidacy.candidatesElectionRealization = elections where elections.date >= current_date and elections not in (select v.electionRealization from Vote v where v.citizen = :citizen) and (candidacy.municipality is null or candidacy.municipality = :municipality)") |
| 93 | List<CandidatesElectionRealization> availableElections(@Param("citizen") Citizen citizen, |
| 94 | @Param("municipality") Municipality municipality); |
| 95 | }}} |
| 96 | Од безбедносни причини споменати погоре, идентификаторот на корисникот се зема од сесијата и соодветно од сервисот се бара листа на избори на кои најавениот корисник има право да гласа. Преку соодветниот репозиториум и прашалникот наведен во претходните фази и напишан во JPQL погоре, од базата се земаат потребните податоци. Истите се прикажуваат во паѓачка листа. Доколку корисникот се обиде да пристапи до оваа страница без претходна успешна валидација, по проверката за постоење на сесијата и валиден идентификатор, истиот ќе биде пренасочен кон страницата за најава. |