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); } }