1 | package mk.ukim.finki.eglas.services.Impl;
|
---|
2 |
|
---|
3 | import jakarta.transaction.Transactional;
|
---|
4 | import mk.ukim.finki.eglas.model.*;
|
---|
5 | import mk.ukim.finki.eglas.repository.CandidacyVoteRepository;
|
---|
6 | import mk.ukim.finki.eglas.repository.VoteRepository;
|
---|
7 | import mk.ukim.finki.eglas.services.*;
|
---|
8 | import org.springframework.stereotype.Service;
|
---|
9 |
|
---|
10 | import java.time.LocalDateTime;
|
---|
11 | import java.util.UUID;
|
---|
12 |
|
---|
13 | @Service
|
---|
14 | public class VoteServiceImpl implements VoteService {
|
---|
15 |
|
---|
16 | private final VoteRepository voteRepository;
|
---|
17 | private final TurnoutService turnoutService;
|
---|
18 | private final CandidacyVoteRepository candidacyVoteRepository;
|
---|
19 | private final AddressService addressService;
|
---|
20 | private final VoteIdentificationCodeService voteIdentificationCodeService;
|
---|
21 | private final ElectionRealizationService electionRealizationService;
|
---|
22 | private final CandidacyService candidacyService;
|
---|
23 | private final CitizenService citizenService;
|
---|
24 |
|
---|
25 | public VoteServiceImpl(VoteRepository voteRepository, CandidacyVoteService candidacyVoteService, TurnoutService turnoutService, AddressService addressService, CandidatesElectionRealizationService candidatesElectionRealizationService, CandidacyVoteRepository candidacyVoteRepository, VoteIdentificationCodeService voteIdentificationCodeService, ElectionRealizationService electionRealizationService, CandidacyService candidacyService, CitizenService citizenService) {
|
---|
26 | this.voteRepository = voteRepository;
|
---|
27 | this.turnoutService = turnoutService;
|
---|
28 | this.addressService = addressService;
|
---|
29 | this.candidacyVoteRepository = candidacyVoteRepository;
|
---|
30 | this.voteIdentificationCodeService = voteIdentificationCodeService;
|
---|
31 | this.electionRealizationService = electionRealizationService;
|
---|
32 | this.candidacyService = candidacyService;
|
---|
33 | this.citizenService = citizenService;
|
---|
34 | }
|
---|
35 |
|
---|
36 | @Override
|
---|
37 | public Vote vote(UUID voteIdentificationCodeId, Long pollingStationId, Long realizationId) {
|
---|
38 | PollingStation pollingStation = addressService.findPollingStationById(pollingStationId);
|
---|
39 | VoteIdentificationCode voteIdentificationCode = voteIdentificationCodeService.findById(voteIdentificationCodeId);
|
---|
40 | ElectionRealization electionRealization = electionRealizationService.findById(realizationId);
|
---|
41 |
|
---|
42 | Vote vote = new Vote();
|
---|
43 | vote.setVoteTimestamp(LocalDateTime.now());
|
---|
44 | vote.setPollingStation(pollingStation);
|
---|
45 | vote.setVoteIdentificationCode(voteIdentificationCode);
|
---|
46 | vote.setElectionRealization(electionRealization);
|
---|
47 |
|
---|
48 | return voteRepository.save(vote);
|
---|
49 | }
|
---|
50 |
|
---|
51 | @Override
|
---|
52 | @Transactional
|
---|
53 | public CandidacyVote voteForCandidate(Long citizenId, UUID voteIdentificationCodeId, Long realizationId, Long id){
|
---|
54 |
|
---|
55 | Candidacy candidacy = candidacyService.findById(id);
|
---|
56 | VoteIdentificationCode voteIdentificationCode = voteIdentificationCodeService.findById(voteIdentificationCodeId);
|
---|
57 | ElectionRealization electionRealization = electionRealizationService.findById(realizationId);
|
---|
58 | Citizen citizen = citizenService.findById(citizenId);
|
---|
59 | PollingStation pollingStation = citizen.getAddress().getPollingStation();
|
---|
60 | CandidacyVote candidacyVote = new CandidacyVote();
|
---|
61 | candidacyVote.setVoteTimestamp(LocalDateTime.now());
|
---|
62 | candidacyVote.setVoteIdentificationCode(voteIdentificationCode);
|
---|
63 | candidacyVote.setElectionRealization(electionRealization);
|
---|
64 | candidacyVote.setPollingStation(pollingStation);
|
---|
65 | candidacyVote.pollingStation = pollingStation;
|
---|
66 | candidacyVote.setCandidacy(candidacy);
|
---|
67 |
|
---|
68 | turnoutService.update(null, LocalDateTime.now(), citizenId, realizationId, pollingStation);
|
---|
69 |
|
---|
70 | return candidacyVoteRepository.save(candidacyVote);
|
---|
71 | }
|
---|
72 | }
|
---|