public IActionResult VotePoll([FromBody] PollVoteRequestViewModel newPoll) { Poll poll;; if (_memoryCache.TryGetValue("dbpoll_id_" + newPoll.pollId, out poll)) { return(Ok(poll)); } else { poll = _dBContext.Poll.Where(x => x.PollId == newPoll.pollId).FirstOrDefault(); } if (poll == null) { return(BadRequest(Messages.PollNotFoundError)); } if (poll.Enddate <= DateTime.Now.Date.AddDays(1).AddSeconds(-1)) { return(BadRequest(Messages.PollEnded)); } IPLocation userLocationDetails = LocationHelper.GetIpAndLocation(_httpContextAccessor); if (poll.Duplicate == 0) { var voted = _dBContext.PollVotes.Where(x => x.IpAddress == userLocationDetails.IP && x.UserLocation == userLocationDetails.Region).Any(); if (voted) { return(BadRequest(Messages.PollVoted)); } } List <PollVotes> lstPollVotes = new List <PollVotes>(); foreach (var item in newPoll.options) { PollVotes pollVote = new PollVotes(); pollVote.PollId = poll.PollId; pollVote.OptionId = Int32.Parse(item); pollVote.IpAddress = userLocationDetails.IP; pollVote.UserLocation = userLocationDetails.Region; pollVote.CreatedDate = DateTime.UtcNow; lstPollVotes.Add(pollVote); } _dBContext.PollVotes.AddRange(lstPollVotes); _dBContext.SaveChanges(); return(Ok(true)); }
public IPLocation GetUserIPAddress() { return(LocationHelper.GetIpAndLocation(_httpContextAccessor)); }