Ejemplo n.º 1
0
        public ActionResult Vote(int[] ids, DateTime?expirationDate)
        {
            if (expirationDate != null && DateTime.Now > expirationDate.Value)
            {
                return(Json(new { success = false, responseText = "Poll has expired." }));
            }

            var userIp = Request.UserHostAddress;
            var poll   = _unitOfWork.Answers.GetPoll(ids[0]);

            if (Session["Voted-Poll" + poll.Id] != null || Request.Cookies["Voted-Poll" + poll.Id] != null || _unitOfWork.UniqueVisitors.HasAnsweredPoll(userIp, poll.Id))
            {
                if (Session["Voted-Poll" + poll.Id] == null)
                {
                    Session["Voted-Poll" + poll.Id] = true;
                }

                if (Request.Cookies["Voted-Poll" + poll.Id] == null)
                {
                    var cookie = new HttpCookie("Voted-Poll" + poll.Id, "true");
                    cookie.Expires.AddYears(10);
                    Response.SetCookie(cookie);
                }

                return(Json(new { success = false, responseText = "You've already participated in this poll." }));
            }

            foreach (var id in ids)
            {
                var answer = _unitOfWork.Answers.Get(id);
                answer.Votes++;
            }

            Session["Voted-Poll" + poll.Id] = true;
            var httpCookie = new HttpCookie("Voted-Poll" + poll.Id, "true");

            httpCookie.Expires.AddYears(10);
            Response.SetCookie(httpCookie);

            if (_unitOfWork.UniqueVisitors.Exists(userIp))
            {
                var user = _unitOfWork.UniqueVisitors.Get(userIp);
                user.PollsParticipated.Add(poll);
            }
            else
            {
                var visitor = new UniqueVisitor
                {
                    IpAdress          = userIp,
                    PollsParticipated = new List <Poll> {
                        poll
                    }
                };
                _unitOfWork.UniqueVisitors.Add(visitor);
            }

            _unitOfWork.Complete();
            return(Json(new { success = true }));
        }
Ejemplo n.º 2
0
        public void UniqueVisitor_Basic()
        {
            UniqueVisitor visitor;

            visitor = new UniqueVisitor();
            Assert.AreNotEqual(Guid.Empty, visitor.ID);
            Assert.IsTrue(Helper.Within(visitor.IssueDateUtc, DateTime.UtcNow, TimeSpan.FromSeconds(1.0)));

            Assert.AreNotEqual(visitor, new UniqueVisitor());
            Assert.AreNotEqual(new UniqueVisitor().GetHashCode(), new UniqueVisitor().GetHashCode());    // OK, this could happen once every few billion test runs
        }
Ejemplo n.º 3
0
        public void UniqueVisitor_Serialize()
        {
            UniqueVisitor v1, v2;
            string        cookie;

            v1     = new UniqueVisitor();
            cookie = v1.ToString();
            v2     = new UniqueVisitor(cookie);

            Assert.AreEqual(v1, v2);
            Assert.AreEqual(v1.ID, v2.ID);
            Assert.AreEqual(v1.IssueDateUtc, v2.IssueDateUtc);
        }
Ejemplo n.º 4
0
 public void Add(UniqueVisitor visitor)
 {
     Context.UniqueVisitors.Add(visitor);
 }