Example #1
0
        public async Task <IActionResult> Candidate(ElectionVotationViewModel model, int candidateId)
        {
            int postionVoted = 0;
            int?citizenId    = HttpContext.Session.GetInt32(Configuration.Citizen);

            if (!citizenId.HasValue)
            {
                return(RedirectToAction(nameof(Index)));
            }

            HttpContext.Session.SetInt32(model.CurrentPositionName, candidateId);

            model.Postions = (await _electionService.GetElectionByConditionAsync(e => e.IsActive == true).Result
                              .Include(e => e.ElectionPosition).ThenInclude(ep => ep.Position).FirstOrDefaultAsync())
                             .ElectionPosition.Select(ep => ep.Position).ToList();

            model.Postions.ForEach(p =>
            {
                if (HttpContext.Session.GetInt32(p.Name).HasValue)
                {
                    postionVoted++;
                }
            });

            if (postionVoted != model.Postions.Count())
            {
                return(RedirectToAction(nameof(Votation), model));
            }

            List <Result> results = new List <Result>();
            string        content = "Usted ha votado por los siguientes candidatos:";

            model.Postions.ForEach(p =>
            {
                Result result = new Result()
                {
                    ElectionId  = model.Id,
                    CandidateId = HttpContext.Session.GetInt32(p.Name).Value,
                    CitizenId   = citizenId.Value
                };
                Candidate candidate = _candidateService.GetCandidateById(HttpContext.Session.GetInt32(p.Name));
                content            += $"\n {p.Name}: {candidate.Name} {candidate.LastName}.";
                results.Add(result);
            });

            await _electionService.InsertElectionCitizenVote(new ElectionCitizen()
            {
                ElectionId = model.Id, CitizenId = citizenId.Value
            });

            await _electionService.InsertElectionResulAsync(results);

            var message = new Sistema_de_votacion.Mail.Message(new string[] { _citizenService.GetCitizenByIdAsync(citizenId.Value).Result.Email },
                                                               "RESULTADO DE VOTACION", content);
            await _emailSender.SendEmailAsync(message);

            HttpContext.Session.Clear();
            return(RedirectToAction("Index", "Elections", model));
        }
Example #2
0
        public async Task <IActionResult> Votation(ElectionVotationViewModel electionVotationViewModel)
        {
            if (!HttpContext.Session.GetInt32(Configuration.Citizen).HasValue)
            {
                return(RedirectToAction(nameof(Index)));
            }
            Election election = await _electionService.GetElectionByConditionAsync(e => e.IsActive == true).Result.Include(e => e.ElectionPosition).ThenInclude(ep => ep.Position).FirstOrDefaultAsync();

            if (electionVotationViewModel.Id == 0)
            {
                electionVotationViewModel.Id   = election.Id;
                electionVotationViewModel.Name = election.Name;
            }
            electionVotationViewModel.Postions = election.ElectionPosition.Select(ep => ep.Position).ToList();
            return(View(electionVotationViewModel));
        }
Example #3
0
        public async Task <IActionResult> Candidate(ElectionVotationViewModel electionVotationViewModel)
        {
            if (!HttpContext.Session.GetInt32(Configuration.Citizen).HasValue)
            {
                return(RedirectToAction(nameof(Index)));
            }

            if (HttpContext.Session.GetInt32(electionVotationViewModel.CurrentPositionName).HasValue)
            {
                return(RedirectToAction(nameof(Votation), electionVotationViewModel));
            }

            Election election = await _electionService.GetElectionByConditionAsync(e => e.IsActive == true).Result.Include(e => e.ElectionCadidate)
                                .ThenInclude(ec => ec.Candidate).ThenInclude(c => c.PoliticParty).FirstOrDefaultAsync();

            electionVotationViewModel.Candidates = election.ElectionCadidate.Select(ec => ec.Candidate)
                                                   .Where(c => c.PositionId == electionVotationViewModel.CurrentPositionId).ToList();

            return(View(electionVotationViewModel));
        }