source: src/main/java/mk/ukim/finki/eglas/controllers/HomeController.java@ ac151d1

main
Last change on this file since ac151d1 was ac151d1, checked in by David <darsov2@…>, 11 days ago

initial

  • Property mode set to 100644
File size: 36.6 KB
Line 
1package mk.ukim.finki.eglas.controllers;
2
3import jakarta.servlet.http.HttpServletRequest;
4import mk.ukim.finki.eglas.model.*;
5import mk.ukim.finki.eglas.model.dto.Candidate;
6import mk.ukim.finki.eglas.records.TotalCandidacyResults;
7import mk.ukim.finki.eglas.repository.CommitteeRepository;
8import mk.ukim.finki.eglas.services.*;
9import mk.ukim.finki.eglas.services.Impl.ResultsServiceImpl;
10import org.springframework.security.core.Authentication;
11import org.springframework.stereotype.Controller;
12import org.springframework.ui.Model;
13import org.springframework.web.bind.annotation.GetMapping;
14import org.springframework.web.bind.annotation.PathVariable;
15import org.springframework.web.bind.annotation.PostMapping;
16import org.springframework.web.bind.annotation.RequestParam;
17
18import java.security.Principal;
19import java.time.LocalDate;
20import java.util.ArrayList;
21import java.util.List;
22import java.util.UUID;
23import java.util.stream.Collectors;
24import java.util.stream.IntStream;
25
26@Controller
27public class HomeController {
28 private final ElectoralUnitService electoralUnitService;
29 private final MunicipalityService municipalityService;
30 private final AddressService addressService;
31 private final CitizenService citizenService;
32 private final ElectionService electionService;
33 private final DocumentsService documentsService;
34 private final PartyService partyService;
35 private final CandidateService candidateService;
36 private final CommitteeMemberService committeeMemberService;
37 private final CandidatesElectionRealizationService candidatesElectionRealizationService;
38 private final CandidatesListElectionRealizationService candidatesListElectionRealizationService;
39 private final ElectionRealizationService electionRealizationService;
40 private final CandidacyService candidacyService;
41 private final TurnoutService turnoutService;
42 private final CandidacyVoteService candidacyVoteService;
43 private final ObjectionService objectionService;
44 private final VoteIdentificationCodeService voteIdentificationCodeService;
45 private final VoteService voteService;
46 private final VotingCodeService votingCodeService;
47 private final CandidatesListService candidatesListService;
48 private final CommitteeService committeeService;
49 private final CoalitionService coalitionService;
50 private final ResultsServiceImpl resultsServiceImpl;
51
52
53 public HomeController(ElectoralUnitService electoralUnitService,
54 AddressService addressService,
55 TurnoutService turnoutService,
56 CandidacyVoteService candidacyVoteService,
57 MunicipalityService municipalityService,
58 CitizenService citizenService,
59 ElectionService electionService,
60 DocumentsService documentsService,
61 PartyService partyService,
62 CandidateService candidateService,
63 CommitteeMemberService committeeMemberService,
64 CandidatesElectionRealizationService candidatesElectionRealizationService,
65 CandidatesListElectionRealizationService candidatesListElectionRealizationService,
66 ElectionRealizationService electionRealizationService, CandidacyService candidacyService,
67 ObjectionService objectionService, VoteIdentificationCodeService voteIdentificationCodeService,
68 VoteService voteService, VotingCodeService votingCodeService, CandidatesListService candidatesListService, CommitteeService committeeService, CoalitionService coalitionService, ResultsServiceImpl resultsServiceImpl) {
69 this.electoralUnitService = electoralUnitService;
70 this.addressService = addressService;
71 this.municipalityService = municipalityService;
72 this.citizenService = citizenService;
73 this.electionService = electionService;
74 this.documentsService = documentsService;
75 this.partyService = partyService;
76 this.candidateService = candidateService;
77 this.committeeMemberService = committeeMemberService;
78 this.candidatesElectionRealizationService = candidatesElectionRealizationService;
79 this.candidatesListElectionRealizationService = candidatesListElectionRealizationService;
80 this.electionRealizationService = electionRealizationService;
81 this.candidacyService = candidacyService;
82 this.turnoutService = turnoutService;
83 this.candidacyVoteService = candidacyVoteService;
84 this.objectionService = objectionService;
85 this.voteIdentificationCodeService = voteIdentificationCodeService;
86 this.voteService = voteService;
87 this.votingCodeService = votingCodeService;
88 this.candidatesListService = candidatesListService;
89 this.committeeService = committeeService;
90 this.coalitionService = coalitionService;
91 this.resultsServiceImpl = resultsServiceImpl;
92 }
93
94 @GetMapping("/")
95 public String home(Model m) {
96 m.addAttribute("replaceTemplate", "menu");
97 return "index";
98 }
99
100 @GetMapping("/vote")
101 public String showVote(@RequestParam(required = false) Boolean error,
102 Model m) {
103 m.addAttribute("replaceTemplate", "vote_form");
104 m.addAttribute("error", error);
105 return "index";
106 }
107
108 @GetMapping("/admin/voteCode/{realizationId}/{citizenId}") // Realizacija ID
109 public String generateVoteCode(@PathVariable Long citizenId,
110 @PathVariable Long realizationId,
111 Model m) {
112
113 VotingCode votingCode = votingCodeService.generateCode(citizenId, realizationId);
114 if (votingCode == null) {
115 return "redirect:/error";
116 }
117 return "redirect:/admin/code/{realizationId}/{citizenId}";
118 }
119
120 @GetMapping("/admin/code/{realizationId}/{citizenId}")
121 public String showVoteCode(@PathVariable Long citizenId,
122 @PathVariable Long realizationId,
123 Model m) {
124 VotingCode votingCode = votingCodeService.findByCitizenIdAndRealizationId(citizenId, realizationId);
125 m.addAttribute("code", votingCode);
126 m.addAttribute("replaceTemplate", "voting_code");
127 return "admin";
128 }
129
130 @GetMapping("/codeVote")
131 public String showVoteWithCode(@RequestParam(required = false) Boolean error,
132 Model m) {
133 m.addAttribute("replaceTemplate", "vote_code");
134 m.addAttribute("error", error);
135 return "index";
136 }
137
138 //=======================================================
139
140 @GetMapping("admin/committee")
141 public String showCommittee(Model m) {
142 m.addAttribute("realizations", electionRealizationService.findAll());
143 m.addAttribute("committeeMembers", committeeMemberService.findAll());
144 m.addAttribute("pollingStations", addressService.findAllPollingStations());
145 m.addAttribute("committees", committeeService.findAll());
146 m.addAttribute("committeeForm", new Committee());
147 m.addAttribute("replaceTemplate", "add_comitee");
148 return "admin";
149 }
150
151 @PostMapping("/admin/committee")
152 public String addCommittee(
153 @RequestParam(required = false) Long id,
154 @RequestParam Long electionRealization,
155 @RequestParam Long pollingStation,
156 @RequestParam List<Long> membersId
157 ) {
158 committeeService.update(id, pollingStation, electionRealization, membersId);
159 return "redirect:/admin/committee";
160 }
161
162 @GetMapping("/admin/committee/{id}/edit")
163 public String editCommittee(Model m, @PathVariable Long id) {
164 m.addAttribute("realizations", electionRealizationService.findAll());
165 m.addAttribute("committeeMembers", committeeMemberService.findAll());
166 m.addAttribute("pollingStations", addressService.findAllPollingStations());
167 m.addAttribute("committees", committeeService.findAll());
168 m.addAttribute("committeeForm", committeeService.findById(id));
169 m.addAttribute("replaceTemplate", "add_comitee");
170 return "admin";
171 }
172
173 //==================================
174
175 @PostMapping("/vote")
176 public String vote(
177 Model m,
178 @RequestParam String numberLicence,
179 @RequestParam String embg,
180 HttpServletRequest httpServletRequest) {
181 Citizen citizen = citizenService.validateCitizen(embg, numberLicence);
182 if (citizen != null) {
183 httpServletRequest.getSession(true).setAttribute("citizenId", citizen.getId());
184 m.addAttribute("candidacies", candidacyService.findAll());
185 m.addAttribute("replaceTemplate", "candidacy_list");
186 return "redirect:/vote/available";
187 } else {
188 m.addAttribute("replaceTemplate", "vote_form");
189 return "redirect:/vote?error=true";
190 }
191 }
192
193 @PostMapping("/codeVote")
194 public String codete(
195 Model m,
196 @RequestParam UUID code,
197 HttpServletRequest httpServletRequest) {
198 Citizen citizen = votingCodeService.findCitizenByCode(code);
199 if (citizen != null) {
200 httpServletRequest.getSession(true).setAttribute("citizenId", citizen.getId());
201 m.addAttribute("candidacies", candidacyService.findAll());
202 m.addAttribute("replaceTemplate", "candidacy_list");
203 return "redirect:/vote/available";
204 } else {
205 m.addAttribute("replaceTemplate", "vote_form");
206 return "redirect:/vote?error=true";
207 }
208 }
209
210 @GetMapping("/vote/available")
211 public String getAvailableElections(Model m,
212 HttpServletRequest httpServletRequest) {
213 if (httpServletRequest.getSession(false) == null) {
214 return "redirect:/vote";
215 }
216 Long citizenId = (Long) httpServletRequest.getSession().getAttribute("citizenId");
217 List<CandidatesElectionRealization> availableElections = candidatesElectionRealizationService.findAvailable(citizenId);
218 m.addAttribute("realizations", availableElections);
219 m.addAttribute("replaceTemplate", "elections_choice");
220 return "index";
221 }
222
223 @PostMapping("/vote/submit")
224 public String prepareBallot(@RequestParam Long realizationId,
225 HttpServletRequest httpServletRequest) {
226 if (httpServletRequest.getSession(false) == null) {
227 return "redirect:/vote";
228 }
229 Long citizenId = (Long) httpServletRequest.getSession().getAttribute("citizenId");
230 httpServletRequest.getSession().setAttribute("voteIdCode", voteIdentificationCodeService.findRandomIdentificationCode().getId());
231// Turnout vote = voteService.update(null, LocalDateTime.now(), citizenId, realizationId);
232// httpServletRequest.getSession().setAttribute("voteId", vote.getId());
233
234 httpServletRequest.getSession().setAttribute("realizationId", realizationId);
235 return "redirect:/vote/list";
236 }
237
238
239 @GetMapping("/vote/list")
240 public String vote_list(Model m, HttpServletRequest httpServletRequest) {
241 if (httpServletRequest.getSession(false) == null) {
242 return "redirect:/vote";
243 }
244 Long realizationId = (Long) httpServletRequest.getSession().getAttribute("realizationId");
245 Long citizenId = (Long) httpServletRequest.getSession().getAttribute("citizenId");
246 m.addAttribute("candidacies", candidacyService.findAllByElectionsRealiztion(realizationId, citizenId));
247 m.addAttribute("replaceTemplate", "candidacy_list");
248 return "index";
249 }
250
251 @GetMapping("/vote/candidate/{id}")
252 public String vote_candidate(@PathVariable Long id,
253 HttpServletRequest httpServletRequest) {
254 UUID voteId = (UUID) httpServletRequest.getSession().getAttribute("voteIdCode");
255 Long citizenId = (Long) httpServletRequest.getSession().getAttribute("citizenId");
256 Long realizationId = (Long) httpServletRequest.getSession().getAttribute("realizationId");
257 voteService.voteForCandidate(citizenId, voteId, realizationId, id);
258 httpServletRequest.getSession().invalidate();
259 return "redirect:/";
260 }
261
262
263 //Jovan
264 //------------------------------------------------------------------------------------------------------------------
265 @GetMapping("/admin/municipalities")
266 public String municipalities(Model m) {
267 m.addAttribute("municipalities", municipalityService.findAll());
268 m.addAttribute("municipality", new Municipality());
269 m.addAttribute("replaceTemplate", "municipalities");
270 return "admin";
271 }
272
273 @GetMapping("/admin/municipalities/{id}/edit")
274 public String municipalities(@PathVariable Long id,
275 Model m) {
276 m.addAttribute("municipalities", municipalityService.findAll());
277 m.addAttribute("municipality", municipalityService.findById(id));
278 m.addAttribute("replaceTemplate", "municipalities");
279 return "admin";
280 }
281
282 @PostMapping("/admin/municipalities")
283 public String createMunicipality(@RequestParam(required = false) Long id,
284 @RequestParam String name) {
285 municipalityService.update(id, name);
286 return "redirect:/admin/municipalities";
287 }
288
289 //------------------------------------------------------------------------------------------------------------------
290 //Jovan
291 //------------------------------------------------------------------------------------------------------------------
292 @GetMapping("/admin/elections")
293 public String elections(Model m) {
294 m.addAttribute("elections", electionService.findAll());
295 m.addAttribute("election", new Election());
296 m.addAttribute("replaceTemplate", "elections");
297 return "admin";
298 }
299
300 @GetMapping("/admin/elections/{id}/edit")
301 public String elections(@PathVariable Long id,
302 Model m) {
303 m.addAttribute("elections", electionService.findAll());
304 m.addAttribute("election", electionService.findById(id));
305 m.addAttribute("replaceTemplate", "elections");
306 return "admin";
307 }
308
309 @PostMapping("/admin/elections")
310 public String createElection(@RequestParam(required = false) Long id,
311 @RequestParam String name) {
312 electionService.update(id, name);
313 return "redirect:/admin/elections";
314 }
315 //------------------------------------------------------------------------------------------------------------------
316
317 @GetMapping("/admin/units")
318 public String electoralUnits(Model m) {
319 m.addAttribute("units", electoralUnitService.findAll());
320 m.addAttribute("unit", new ElectoralUnit());
321 m.addAttribute("replaceTemplate", "electoral_units");
322 return "admin";
323 }
324
325 @GetMapping("/admin/units/{id}/edit")
326 public String electoralUnits(@PathVariable Long id,
327 Model m) {
328 m.addAttribute("units", electoralUnitService.findAll());
329 m.addAttribute("unit", electoralUnitService.findById(id));
330 m.addAttribute("replaceTemplate", "electoral_units");
331 return "admin";
332 }
333
334 @PostMapping("/admin/units")
335 public String createElectoralUnit(@RequestParam(required = false) Long id,
336 @RequestParam String name,
337 @RequestParam Integer numDeputies) {
338 electoralUnitService.update(id, name, numDeputies);
339 return "redirect:/admin/units";
340 }
341 //=============================================================
342
343 @GetMapping("/admin/address")
344 String showAddress(Model m) {
345 m.addAttribute("addresses", addressService.findAllAddresses());
346 m.addAttribute("address", new Address());
347 m.addAttribute("municipalities", municipalityService.findAll());
348 m.addAttribute("pollingStations", addressService.findAllPollingStations());
349 m.addAttribute("replaceTemplate", "address");
350 return "admin";
351 }
352
353 @PostMapping("/admin/address")
354 String addAddress(@RequestParam(required = false) Long id,
355 @RequestParam String street,
356 @RequestParam Integer houseNumber,
357 @RequestParam Integer entranceNumber,
358 @RequestParam Integer apartmentNumber,
359 @RequestParam Long municipality,
360 @RequestParam Long pollingStation
361 ) {
362 addressService.updateAddress(id, street, houseNumber, entranceNumber, apartmentNumber, municipality, pollingStation);
363 return "redirect:/admin/address";
364 }
365
366 @GetMapping("/admin/address/{id}/edit")
367 public String editAddress(@PathVariable Long id,
368 Model m) {
369 m.addAttribute("addresses", addressService.findAllAddresses());
370 m.addAttribute("address", addressService.findAddressById(id));
371 m.addAttribute("municipalities", municipalityService.findAll());
372 m.addAttribute("pollingStations", addressService.findAllPollingStations());
373 m.addAttribute("replaceTemplate", "address");
374 return "admin";
375 }
376
377 //==========================================================
378
379 @GetMapping("/admin/citizens")
380 public String citizens(Model m) {
381 m.addAttribute("replaceTemplate", "citizens");
382 m.addAttribute("citizens", citizenService.findAll());
383 m.addAttribute("citizen", new Citizen());
384 m.addAttribute("streets", addressService.findStreetNames());
385 m.addAttribute("municipalities", municipalityService.findAll());
386 System.out.println(addressService.findStreetNames());
387 return "admin";
388 }
389
390 @PostMapping("/admin/citizens")
391 public String addCitizen(@RequestParam(required = false) Long id,
392 @RequestParam String name,
393 @RequestParam String surname,
394 @RequestParam LocalDate dateOfBirth,
395 @RequestParam String idNum,
396 @RequestParam String street,
397 @RequestParam(required = false) Integer houseNumber,
398 @RequestParam(required = false) Integer entranceNumber,
399 @RequestParam(required = false) Integer apartmentNumber,
400 @RequestParam Long municipality,
401 Model m) {
402 citizenService.update(id, name, surname, dateOfBirth, idNum, street, houseNumber, entranceNumber, apartmentNumber, municipality);
403 System.out.println(name + surname + street + dateOfBirth.toString() + idNum + houseNumber + entranceNumber + municipality);
404 return "redirect:/admin/citizens";
405 }
406
407 @GetMapping("/admin/citizens/{id}/edit")
408 public String editCitizen(@PathVariable Long id,
409 Model m) {
410 m.addAttribute("replaceTemplate", "citizens");
411 m.addAttribute("citizens", citizenService.findAll());
412 m.addAttribute("citizen", citizenService.findById(id));
413 m.addAttribute("streets", addressService.findStreetNames());
414 m.addAttribute("municipalities", municipalityService.findAll());
415 System.out.println(addressService.findStreetNames());
416 return "admin";
417 }
418
419 @GetMapping("/admin/citizens/{id}/candidate")
420 public String makeCandidate(@PathVariable Long id) {
421 candidateService.update(id);
422 return "redirect:/admin/citizens";
423 }
424
425 @GetMapping("/admin/citizens/{id}/committee")
426 public String makeCommitteeMember(@PathVariable Long id) {
427 committeeMemberService.update(id);
428 return "redirect:/admin/citizens";
429 }
430
431 @PostMapping("/admin/documents")
432 public String editCitizensDocument(@RequestParam Long citizenId,
433 @RequestParam(required = false) Long documentId,
434 @RequestParam String documentNumber,
435 @RequestParam String issuer,
436 @RequestParam LocalDate issueDate,
437 @RequestParam LocalDate expiryDate) {
438 documentsService.update(documentId, documentNumber, issueDate, expiryDate, issuer, citizenId);
439 return "redirect:/admin/citizens";
440 }
441
442 //=======================================
443 @GetMapping("/admin/citizens/{id}")
444 public String citizensPollingStation(@PathVariable Long id,
445 Model m) {
446 m.addAttribute("replaceTemplate", "citizens_pollingStation");
447 m.addAttribute("citizens", citizenService.findAllByAddress_PollingStation_Id(id));
448 m.addAttribute("citizen", new Citizen());
449 m.addAttribute("streets", addressService.findStreetNames());
450 m.addAttribute("municipalities", municipalityService.findAll());
451 System.out.println(addressService.findStreetNames());
452 return "admin";
453 }
454
455 //=======================================
456 @GetMapping("/admin/parties")
457 public String parties(Model m) {
458 m.addAttribute("replaceTemplate", "parties");
459 m.addAttribute("parties", partyService.findAll());
460 m.addAttribute("party", new Party());
461 m.addAttribute("streets", addressService.findStreetNames());
462 m.addAttribute("municipalities", municipalityService.findAll());
463 return "admin";
464 }
465
466 @PostMapping("/admin/parties")
467 public String addParty(@RequestParam(required = false) Long id,
468 @RequestParam String name,
469 @RequestParam String street,
470 @RequestParam(required = false) Integer houseNumber,
471 @RequestParam(required = false) Integer entranceNumber,
472 @RequestParam(required = false) Integer apartmentNumber,
473 @RequestParam Long municipality,
474 Model m) {
475 partyService.update(id, name, street, houseNumber, entranceNumber, apartmentNumber, municipality);
476 return "redirect:/admin/parties";
477 }
478 //======================================================================
479
480 @GetMapping("/admin/stations")
481 String showStations(Model m) {
482 m.addAttribute("stations", addressService.findAllPollingStations());
483 m.addAttribute("pollingStation", new PollingStation());
484 m.addAttribute("streets", addressService.findStreetNames());
485 m.addAttribute("electoralUnits", electoralUnitService.findAll());
486 m.addAttribute("municipalities", municipalityService.findAll());
487 m.addAttribute("replaceTemplate", "polling_station");
488 return "admin";
489 }
490
491 @PostMapping("/admin/stations")
492 String addStation(@RequestParam(required = false) Long id,
493 @RequestParam String name,
494 @RequestParam String street,
495 @RequestParam Integer houseNumber,
496 @RequestParam Integer entranceNumber,
497 @RequestParam Integer apartmentNumber,
498 @RequestParam Long electoralUnit,
499 @RequestParam Long municipality
500 ) {
501 addressService.updatePollingStation(id, name, street, houseNumber, entranceNumber, apartmentNumber, municipality, electoralUnit);
502 return "redirect:/admin/stations";
503 }
504
505 @GetMapping("/admin/stations/{id}/edit")
506 public String editStation(@PathVariable Long id,
507 Model m) {
508 System.out.println(addressService.findPollingStationById(id));
509 m.addAttribute("addresses", addressService.findAllAddresses());
510 m.addAttribute("pollingStation", addressService.findPollingStationById(id));
511 m.addAttribute("electoralUnits", electoralUnitService.findAll());
512 m.addAttribute("stations", addressService.findAllPollingStations());
513 m.addAttribute("streets", addressService.findStreetNames());
514 m.addAttribute("municipalities", municipalityService.findAll());
515 m.addAttribute("replaceTemplate", "polling_station");
516 return "admin";
517 }
518
519 //=======================================================================
520
521 @GetMapping("/admin/realizations")
522 public String realizations(Model m) {
523 m.addAttribute("electionRelaization", new ElectionRealization());
524 m.addAttribute("candidacyRealizations", candidatesElectionRealizationService.findAll());
525 m.addAttribute("candidateListRealizations", candidatesListElectionRealizationService.findAll());
526 m.addAttribute("elections", electionService.findAll());
527 m.addAttribute("replaceTemplate", "election_realizations");
528 return "admin";
529 }
530
531 @PostMapping("/admin/realizations")
532 public String addRealization(@RequestParam(required = false) Long id,
533 @RequestParam String name,
534 @RequestParam LocalDate date,
535 @RequestParam Long election,
536 @RequestParam(required = false) String candidacyElections,
537 @RequestParam(required = false) String candidateListElections) {
538 electionRealizationService.update(id, date, name, election, candidacyElections, candidateListElections);
539 return "redirect:/admin/realizations";
540 }
541
542 @GetMapping("/admin/realizations/{id}/edit")
543 public String editRealizations(@PathVariable Long id, Model m) {
544 m.addAttribute("electionRelaization", electionRealizationService.findById(id));
545 m.addAttribute("candidacyRealizations", candidatesElectionRealizationService.findAll());
546 m.addAttribute("candidateListRealizations", candidatesListElectionRealizationService.findAll());
547 m.addAttribute("elections", electionService.findAll());
548 m.addAttribute("replaceTemplate", "election_realizations");
549 return "admin";
550 }
551
552 //===============================================================================
553
554 @GetMapping("/admin/participations")
555 public String candidacies(Model m) {
556 m.addAttribute("replaceTemplate", "elections_participation");
557 m.addAttribute("electionsRealizations", candidatesElectionRealizationService.findAll());
558 m.addAttribute("municipalities", municipalityService.findAll());
559 m.addAttribute("parties", partyService.findAll());
560 m.addAttribute("candidates", candidateService.findAll());
561 m.addAttribute("candidacy", new Candidacy());
562 m.addAttribute("candidacies", candidacyService.findAll());
563 return "admin";
564 }
565
566 @PostMapping("/admin/participations")
567 public String addCandidacy(@RequestParam(required = false) Long id,
568 @RequestParam String description,
569 @RequestParam Long candidate,
570 @RequestParam Long candidatesElectionRealization,
571 @RequestParam(required = false) Long municipality,
572 @RequestParam Long party,
573 Model m) {
574 candidacyService.update(id, description, candidate, party, candidatesElectionRealization, municipality);
575 return "redirect:/admin/participations";
576 }
577
578 //==================================================================================================================
579 @GetMapping("/turnout")
580 public String turnOutResults(Model m,
581 @RequestParam(required = false, defaultValue = "2") Long realizationId,
582 @RequestParam(required = false) String opshtinaId,
583 @RequestParam(required = false) Long izbirachkoMestoId) {
584 Double turnOut;
585 if(opshtinaId != null && izbirachkoMestoId != null){
586 turnOut = turnoutService.getTurnOutByRealizationAndMunicipalityAndPollingStation(realizationId, opshtinaId, izbirachkoMestoId);
587 }else if(opshtinaId != null){
588 turnOut = turnoutService.getTurnOutByRealizationAndMunicipality(realizationId, opshtinaId);
589 }else {
590 turnOut = turnoutService.turnOutByElectionRealization(realizationId);
591 }
592 m.addAttribute("replaceTemplate", "turnout_circle");
593 m.addAttribute("turnoutPercentage", turnOut);
594 m.addAttribute("realizationId", realizationId);
595 m.addAttribute("municipalities", municipalityService.findAll());
596 m.addAttribute("realizations", candidatesElectionRealizationService.findAll());
597 m.addAttribute("pollingStations", addressService.findAllPollingStations());
598 m.addAttribute("realization", candidatesElectionRealizationService.findById(realizationId));
599 return "index";
600 }
601
602 @GetMapping("/results")
603 public String totalResults(@RequestParam(required = false, defaultValue = "2") Long realizationId,
604 @RequestParam(required = false, defaultValue = "1") Long municipalityId,
605 @RequestParam(required = false) Long pollingStationId,
606 Model m) {
607 List<TotalCandidacyResults> total = turnoutService.resultsByCandidateElectionsRealization(realizationId);
608 m.addAttribute("candidacies", resultsServiceImpl.getResultsForRealizationBy(realizationId, municipalityId, pollingStationId));
609// m.addAttribute("turnoutPercentage", turnOut);
610 m.addAttribute("realizationId", realizationId);
611 m.addAttribute("municipalityId", municipalityId);
612 m.addAttribute("pollingStationId", pollingStationId);
613 m.addAttribute("municipalities", municipalityService.findAll());
614 m.addAttribute("realizations", candidatesElectionRealizationService.findAll());
615 m.addAttribute("pollingStations", addressService.findAllPollingStationsByMunicipalityId(municipalityId));
616 m.addAttribute("realization", candidatesElectionRealizationService.findById(realizationId));
617 m.addAttribute("replaceTemplate", "results");
618 return "index";
619 }
620
621 //=============================================================
622
623
624 @GetMapping("/admin/objections")
625 public String objections(Model m) {
626 List<Objection> objections = objectionService.findAll();
627 m.addAttribute("objections", objections);
628 m.addAttribute("realizations", electionRealizationService.findAll());
629 m.addAttribute("pollingStations", addressService.findAllPollingStations());
630 m.addAttribute("objection", new Objection());
631 m.addAttribute("replaceTemplate", "objection");
632 return "admin";
633 }
634
635 @PostMapping("/admin/objections")
636 public String addObjection(@RequestParam(required = false) Long id,
637 @RequestParam String description,
638 @RequestParam Long realization,
639 @RequestParam Long pollingStation,
640 Model m) {
641 objectionService.update(id, realization, pollingStation, description);
642 return "redirect:/admin/objections";
643 }
644
645 @GetMapping("/admin/objections/{id}/accept")
646 public String responseToObjectionAccept(@PathVariable Long id,
647 Model m) {
648 objectionService.accept(id);
649 return "redirect:/admin/objections";
650 }
651
652 @GetMapping("/admin/objections/{id}/reject")
653 public String responseToObjectionReject(@PathVariable Long id,
654 Model m) {
655 objectionService.reject(id);
656 return "redirect:/admin/objections";
657 }
658
659
660 //=============================================
661 @GetMapping("/admin/candidatesList")
662 public String showCandidatesList(Model model) {
663 model.addAttribute("replaceTemplate", "candidates_list");
664 model.addAttribute("candidatesList", new CandidatesList());
665 model.addAttribute("candidates", IntStream.range(0, 20).mapToObj(x -> new Candidate()).toArray());
666 model.addAttribute("candidatesLists", candidatesListService.findAll());
667 model.addAttribute("candidatesNames", candidateService.findAll());
668 model.addAttribute("candidatesListElectionRealizations", candidatesListElectionRealizationService.findAll());
669 model.addAttribute("parties", partyService.findAll());
670 model.addAttribute("municipalities", municipalityService.findAll());
671 model.addAttribute("electoralUnits", electoralUnitService.findAll());
672 return "admin";
673 }
674
675 @PostMapping("/admin/candidatesList")
676 public String createCandidatesList(@RequestParam(required = false) Long id,
677 @RequestParam String description,
678 @RequestParam Long party,
679 @RequestParam Long candidatesListElectionRealization,
680 @RequestParam Long municipality,
681 @RequestParam Long electoralUnit,
682 @RequestParam List<Long> candidatesInList) {
683 candidatesListService.update(id, description, party, candidatesListElectionRealization, municipality, electoralUnit, candidatesInList);
684 return "redirect:/admin/candidatesList";
685 }
686
687 @GetMapping("/admin/candidatesList/{id}")
688 public String addCandidateToCandidatesList(Model model, @PathVariable Long id) {
689 model.addAttribute("replaceTemplate", "candidates_list");
690 model.addAttribute("candidatesList", candidatesListService.findById(id));
691 model.addAttribute("candidatesLists", candidatesListService.findAll());
692 model.addAttribute("candidatesNames", candidateService.findAll());
693 model.addAttribute("candidates", candidatesListService.findById(id).getCandidates());
694 model.addAttribute("candidatesListElectionRealizations", candidatesListElectionRealizationService.findAll());
695 model.addAttribute("parties", partyService.findAll());
696 model.addAttribute("municipalities", municipalityService.findAll());
697 model.addAttribute("electoralUnits", electoralUnitService.findAll());
698 return "admin";
699 }
700
701 //=============================================
702 @GetMapping("/admin/coalition")
703 public String showCoalition(Model m) {
704 m.addAttribute("realizations", electionRealizationService.findAll());
705 m.addAttribute("parties", partyService.findAll());
706 m.addAttribute("coalitionForm", new Coalition());
707 m.addAttribute("coalitions", coalitionService.findAll());
708 m.addAttribute("replaceTemplate", "add_coalition");
709 return "admin";
710 }
711
712 @PostMapping("/admin/coalition/add")
713 public String addCoalition(
714 @RequestParam(required = false) Long id,
715 @RequestParam String name,
716 @RequestParam String motto,
717 @RequestParam Long electionRealization,
718 @RequestParam List<Long> parties
719 ) {
720 coalitionService.update(id, name, motto, electionRealization, parties);
721 return "redirect:/admin/coalition";
722 }
723
724 @GetMapping("/admin/coalition/{id}")
725 public String editCoalition(Model m, @PathVariable Long id) {
726 m.addAttribute("realizations", electionRealizationService.findAll());
727 m.addAttribute("parties", partyService.findAll());
728 m.addAttribute("coalitionForm", coalitionService.findById(id));
729 m.addAttribute("coalitions", coalitionService.findAll());
730 m.addAttribute("replaceTemplate", "add_coalition");
731 return "index";
732 }
733
734 //=============================================
735 @GetMapping("/admin/electionRealizationInterface")
736 public String showElectionRealization(Model m, Principal p, Authentication authentication) {
737 UserProfile userProfile = (UserProfile) authentication.getPrincipal();
738// m.addAttribute("realization", committeeService.findElectionRealizationByCitizen(userProfile.getCitizen().getId()));
739 m.addAttribute("citizens", committeeService.getCitizens(userProfile.getCitizen().getId()));
740 m.addAttribute("replaceTemplate","election_realization_interface");
741 return "admin";
742 }
743
744
745 @GetMapping("/admin/electionRealizationInterface/{id}")
746 public String showElectionRealization(Model m, @PathVariable Long id, Principal p, Authentication authentication) {
747 UserProfile userProfile = (UserProfile) authentication.getPrincipal();
748 Long realizationId = committeeService.findElectionRealizationByCitizen(userProfile.getCitizen().getId()).getId();
749 CommitteeMember committeeMember = committeeMemberService.findById(userProfile.getCitizen().getId());
750 if(!committeeService.getSamePollingStation(committeeMember.getId(), id)){
751 return "redirect:/admin/electionRealizationInterface";
752 }
753 return "redirect:/admin/voteCode/" + realizationId + "/" + id;
754 }
755}
Note: See TracBrowser for help on using the repository browser.