public IActionResult Vote(string id) { string userID = ""; foreach (var claim in User.Claims) { //Check to see if there is an AzureID in the session if (claim.Type == "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier") { userID = claim.Value; } } if (userID == "") { return(RedirectToAction("AccessDenied", "Account")); } else { model.Member = _member.GetMember(userID); model.Seat = _seatService.GetSeatByAzureID(userID); } //Create a Register the vote using enum vote object VoteOptions vote; if (id.Equals("Yes")) { vote = VoteOptions.Yes; } else if (id.Equals("No")) { vote = VoteOptions.No; } else if (id.Equals("Abstain")) { vote = VoteOptions.Abstain; } else { return(RedirectToAction(nameof(Index))); } //Check that the user us currently registered to vote and hasn't been signed out before they press send. if (_memberRegister.GetMemberStatus(userID) == 0) { return(RedirectToAction(nameof(Index))); } _logger.LogInformation("{0}- Registered Member {1} - Voted {2} in poll {3} in seat {4}", DateTime.Now, model.Member.AzureId, vote, model.Ballot.BallotName, model.Seat); if (_ballot.CheckIfActiveBallot()) { _logger.LogInformation("{0}- Registered Member {1} - Voted {2} in poll {3} in seat {4}", DateTime.Now, model.Member.AzureId, vote, model.Ballot.BallotName, model.Seat); //Cast vote into database _vote.CastVote(model.Ballot, model.Member, vote, model.Seat); //Send vote via SignalR to Display Send_Vote(id, model.Seat, model.Member.AzureId); } else { _logger.LogInformation("{0}- Attempted vote in closed Ballot. Registered Member {1} - Voted {2} in poll {3} in seat {4}", DateTime.Now, model.Member.AzureId, vote, model.Ballot.BallotName, model.Seat); } //Redirect user back to the vote homescreen return(RedirectToAction(nameof(Index))); }