Version 2 (modified by 11 months ago) ( diff ) | ,
---|
Имплементација на корисничките сценарија во техничкиот прототип
Во досега имплементираниот технички прототип на апликацијата имплементирани се следните сценарија:
ID | UseCase |
---|---|
1 | Пријавува учество на партија и кандидати |
2 | Гласа онлајн |
3 | Прегледува вкупна излезност |
4 | Прегледува вкунпи резултати од избори со кандидат |
5 | Прегледува избирачки список |
6 | Прегледува изборни единици |
7 | Ажурира изборни единици |
8 | Прегледува гласачки места |
9 | Ажурира изборни единици |
10 | Прегледува гласачки места |
11 | Креира инстанца од избори |
12 | Прегледува типови на избори |
13 | Ажурира типови на избори |
Гласа онлајн
За да ја користи оваа функционалност, корисникот треба да пристапи до страницата /vote каде што го добива следниот приказ:
За ова е одговорен следниот контролер
@GetMapping("/vote") public String showVote(@RequestParam(required = false) Boolean error, Model m) { m.addAttribute("replaceTemplate", "vote_form"); m.addAttribute("error", error); return "index"; }
По успешен внес на потребните податоци во формуларот (број на лична карта и ЕМБГ), истиот се поднесува со клик на копчето „Продолжи“, при што се испраќа POST барање кое го пречекува следниот контролер:
@PostMapping("/vote") public String vote( Model m, @RequestParam String numberLicence, @RequestParam String embg, HttpServletRequest httpServletRequest) { Citizen citizen = citizenService.validateCitizen(embg, numberLicence); if (citizen != null) { httpServletRequest.getSession(true).setAttribute("citizenId", citizen.getId()); m.addAttribute("candidacies", candidacyService.findAll()); m.addAttribute("replaceTemplate", "candidacy_list"); return "redirect:/vote/available"; } else { m.addAttribute("replaceTemplate", "vote_form"); return "redirect:/vote?error=true"; } }
Овде, најпрвин се прави валидација на корисникот преку повикување на соодветната функција од сервисот за граѓани
@Override public Citizen validateCitizen(String idNum, String documentNumber) { try { Citizen citizen = findByIdNum(idNum); return citizen.getDocument().getDocumentNumber().equals(documentNumber) ? citizen : null; } catch (Exception ex) { return null; } }
За спречување злопупотреба целиот процес на гласање се одвива преку чување на потребните атрибути во сесија на серверот, па така, по успешна валидација на граѓанинот, се креира нова сесија, како атрибут се запишува неговиот идентификатор и корисникот се пренасочува до страницата за избор на инстанца од избори на која ќе гласата (/vote/available). Во спротивно, корисникот се враќа на страницата за најава и се испишува соодветна порака за грешка.
Attachments (5)
- dostapni_izbori.png (20.0 KB ) - added by 11 months ago.
- glasanje_najava.png (16.9 KB ) - added by 11 months ago.
- kandidaturi.jpg (90.4 KB ) - added by 11 months ago.
- rezultati.png (205.2 KB ) - added by 11 months ago.
- izleznost.png (202.6 KB ) - added by 11 months ago.
Download all attachments as: .zip