public bool TryVote(PollRecord record, IEnumerable<int> answers)
        {
            if(record==null) return false;

            var httpContext = Services.WorkContext.HttpContext;
            if (httpContext == null || httpContext.Request == null || httpContext.Request.Cookies == null) return false;

            var pollCookie = httpContext.Request.Cookies[PollCookieName];
            if (pollCookie==null) pollCookie = new HttpCookie(PollCookieName);

            string cookieValueName = PollPrefix + record.Id;
            if(pollCookie.Values[cookieValueName]!=null) return false;
            pollCookie.Values.Add(cookieValueName, "1");
            pollCookie.Expires = DateTime.Now.AddYears(1);
            Services.WorkContext.HttpContext.Response.Cookies.Add(pollCookie);

            if (record.MaxAnswers > 0 && answers.Count() > record.MaxAnswers) return false;
            foreach (var pollAnswerRecord in record.Answers.Where(a=>answers.Contains(a.Id))) {
                pollAnswerRecord.Votes++;
                _answersRepo.Update(pollAnswerRecord);
            }
            PollLogRecord logRecord = new PollLogRecord {
                PollRecord = record,
                UserDetail = ""+httpContext.Request.UserHostAddress,
                VoteDate = DateTime.Now
            };
            _logRepo.Create(logRecord);

            return true;
        }
        public bool CanVote(PollRecord selectedPoll) {
            if(selectedPoll==null) return false;

            if(selectedPoll.PollState == PollState.Closed) return false;
            if (selectedPoll.StartDate.HasValue && selectedPoll.StartDate > DateTime.Now) return false;
            if (selectedPoll.EndDate.HasValue && selectedPoll.EndDate < DateTime.Now) return false;

            var httpContext = Services.WorkContext.HttpContext;
            if (httpContext == null || httpContext.Request == null || httpContext.Request.Cookies == null) return false;

            var pollCookie = httpContext.Request.Cookies[PollCookieName];
            if (pollCookie != null) {
                string cookieValueName = PollPrefix + selectedPoll.Id;
                if (pollCookie.Values[cookieValueName] != null) return false;
            }

            return true;
        }
 public void SaveOrUpdate(PollRecord pollRecord) 
 {
     foreach (var pollAnswerRecord in pollRecord.Answers)
     {
         if (pollAnswerRecord.Id <= 0) {
             pollAnswerRecord.PollRecord = pollRecord;
             _answersRepo.Create(pollAnswerRecord);
         }
     } 
     if (pollRecord.Id > 0)
     {
         _pollRepo.Update(pollRecord);
     }
     else 
     {
         _pollRepo.Create(pollRecord);
     }
 }