Esempio n. 1
0
        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));
 }