Changes between Version 1 and Version 2 of UseCaseImplementations


Ignore:
Timestamp:
02/20/24 16:00:50 (3 months ago)
Author:
211012
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • UseCaseImplementations

    v1 v2  
    1616|| 12 || Прегледува типови на избори ||
    1717|| 13 || Ажурира типови на избори ||
     18
     19
     20=== Гласа онлајн
     21За да ја користи оваа функционалност, корисникот треба да пристапи до страницата /vote каде што го добива следниот приказ:
     22
     23За ова е одговорен следниот контролер
     24{{{#!java
     25    @GetMapping("/vote")
     26    public String showVote(@RequestParam(required = false) Boolean error,
     27                           Model m) {
     28        m.addAttribute("replaceTemplate", "vote_form");
     29        m.addAttribute("error", error);
     30        return "index";
     31    }
     32}}}
     33По успешен внес на потребните податоци во формуларот (број на лична карта и ЕМБГ), истиот се поднесува со клик на копчето „Продолжи“, при што се испраќа POST барање кое го пречекува следниот контролер:
     34{{{#!java
     35    @PostMapping("/vote")
     36    public String vote(
     37            Model m,
     38            @RequestParam String numberLicence,
     39            @RequestParam String embg,
     40            HttpServletRequest httpServletRequest) {
     41        Citizen citizen = citizenService.validateCitizen(embg, numberLicence);
     42        if (citizen != null) {
     43            httpServletRequest.getSession(true).setAttribute("citizenId", citizen.getId());
     44            m.addAttribute("candidacies", candidacyService.findAll());
     45            m.addAttribute("replaceTemplate", "candidacy_list");
     46            return "redirect:/vote/available";
     47        } else {
     48            m.addAttribute("replaceTemplate", "vote_form");
     49            return "redirect:/vote?error=true";
     50        }
     51    }
     52}}}
     53Овде, најпрвин се прави валидација на корисникот преку повикување на соодветната функција од сервисот за граѓани
     54{{{#!java
     55    @Override
     56    public Citizen validateCitizen(String idNum, String documentNumber)
     57    {
     58        try {
     59            Citizen citizen = findByIdNum(idNum);
     60            return citizen.getDocument().getDocumentNumber().equals(documentNumber) ? citizen : null;
     61        }
     62        catch (Exception ex)
     63        {
     64            return null;
     65        }
     66    }
     67}}}
     68За спречување злопупотреба целиот процес на гласање се одвива преку чување на потребните атрибути во сесија на серверот, па така, по успешна валидација на граѓанинот, се креира нова сесија, како атрибут се запишува неговиот идентификатор и корисникот се пренасочува до страницата за избор на инстанца од избори на која ќе гласата (/vote/available). Во спротивно, корисникот се враќа на страницата за најава и се испишува соодветна порака за грешка.