public async Task <VotedLdapGroup> AddMembers(VotedLdapGroup group, string startEvent, string endEvent, DateTime startDate, List <string> newMembers, string changedBy, CancellationToken cancellationToken) { await newMembers.ForEachAsync(async m => { var id = $"{m}_{DateTime.Now:yyyyMMddHHmmss}"; var voteEntry = new VoteEntry { Id = id, Dn = $"cn={id},{group.Dn}", MemberUid = m, Active = true, VoteStartEvent = startEvent, VoteEndEvent = endEvent, VoteStartDate = startDate, }; await this._connection.Add(voteEntry, changedBy, cancellationToken); group.ActiveVoteEntries.Add(voteEntry); group.MemberIds.Add(m); }); await this._connection.Update(group, changedBy, cancellationToken); return(group); }
/// <summary> /// 更新回答选项统计() /// </summary> /// <param name="voteID"></param> /// <param name="voteEntryID"></param> /// <param name="voteEntryText"></param> /// <param name="sum">加几票</param> #region bool UpdateVoteAnswerStat(string voteID,string voteEntryID,string voteEntryText,int sum) protected bool UpdateVoteAnswerStat(string voteID, string voteEntryID, string voteEntryText, int sum) { try { Criteria criteria = new Criteria(CriteriaType.Equals, "VoteID", voteID); criteria.Add(CriteriaType.Equals, "VoteEntryID", voteEntryID); List <VoteAnswerStat> listAnswerStats = Assistant.List <VoteAnswerStat>(criteria, null); VoteEntry entry = GetVoteEntryByEntryID(voteEntryID); if (listAnswerStats != null && listAnswerStats.Count > 0) { //进行更新 listAnswerStats[0].VoteEntrySum += sum; Assistant.Update(listAnswerStats[0]); } else { //新增一个 VoteAnswerStat voteAnswerStat = new VoteAnswerStat(); voteAnswerStat.ID = We7Helper.CreateNewID(); voteAnswerStat.VoteEntryID = voteEntryID; voteAnswerStat.VoteID = voteID; voteAnswerStat.VoteEntrySum = sum; voteAnswerStat.VoteEntryText = voteEntryText; voteAnswerStat.OrderID = entry.OrderID; Assistant.Insert(voteAnswerStat); } return(true); } catch (Exception ex) { return(false); } }
/// <summary> /// 更新一条投票选项 /// </summary> /// <param name="voteEntry"></param> #region bool UpdateVoteEntry(VoteEntry voteEntry) public bool UpdateVoteEntry(VoteEntry voteEntry) { try { Assistant.Update(voteEntry); return(true); } catch (Exception ex) { return(false); } }
/// <summary> /// 获取某一期投票的选项统计 /// </summary> /// <param name="voteID"></param> #region List<VoteAnswerStat> GetVoteAnswerStatsByID(string voteID) public List <VoteAnswerStat> GetVoteAnswerStatsByID(string voteID) { List <VoteEntry> listEntrys = GetVoteEntrysByID(voteID); if (listEntrys == null) { return(null); } List <Order> listOrder = new List <Order>(); listOrder.Add(new Order("OrderID", OrderMode.Asc)); Criteria criteria = new Criteria(CriteriaType.Equals, "VoteID", voteID); List <VoteAnswerStat> listAnswerStats = Assistant.List <VoteAnswerStat>(criteria, listOrder.ToArray()); int total = 0; //查漏 for (int i = 0; i < listEntrys.Count; i++) { VoteEntry entry = listEntrys[i]; VoteAnswerStat stat = listAnswerStats.Find(p => p.VoteEntryID == entry.ID); if (stat == null) { VoteAnswerStat statNew = new VoteAnswerStat(); statNew.VoteEntryID = entry.ID; statNew.VoteID = entry.VoteID; statNew.VoteEntrySum = 0; statNew.VoteEntryText = entry.EntryText; listAnswerStats.Insert(i, statNew); } } //统计总值 foreach (VoteAnswerStat stat in listAnswerStats) { total += stat.VoteEntrySum; } for (int i = 0; i < listAnswerStats.Count; i++) { if (total > 0) { listAnswerStats[i].VoteEntrySumPercent = (int)Math.Round((decimal)listAnswerStats[i].VoteEntrySum / (decimal)total * 170, 0); //百分比 } else { listAnswerStats[i].VoteEntrySumPercent = 0; } } return(listAnswerStats); }
/// <summary> /// 添加一条投票选项 /// </summary> /// <param name="voteEntry"></param> #region bool AddVoteEntry(VoteEntry voteEntry) public bool AddVoteEntry(VoteEntry voteEntry) { try { List <VoteEntry> listEntrys = GetVoteEntrysByID(voteEntry.VoteID); voteEntry.ID = We7Helper.CreateNewID(); voteEntry.OrderID = (listEntrys == null ? 1 : listEntrys.Count + 1); Assistant.Insert(voteEntry); return(true); } catch (Exception ex) { return(false); } }
public async Task <IActionResult> Index() { try { string body = Request.Form["Body"]; string from = Request.Form["From"]; _logger.LogWarning(body + " | " + body.Substring(0, 2)); var responseMessage = new MessagingResponse(); if (!_voteService.IsSpecialCommand(body)) { if (await _voteService.PhoneNumberHasVotedToday(from)) { textResponse = responseMessage.Message($"You have already voted today. Please vote again tomorrow. {messageEnding}").ToString(); } else { bool isValidMessage = await _voteService.ValidateVoteMessageAsync(body); if (!isValidMessage) { textResponse = responseMessage.Message($"This is an invalid vote. Please check the entry ID and try again. {messageEnding}").ToString(); } else { Camera camera = await _voteService.GetCameraByCameraName(body.Substring(0, 2).ToUpper()); VoteEntry voteEntry = VoteEntry.CreateEntry(body, from, camera); _repository.AddAsync(voteEntry); _repository.SaveAsync(); textResponse = responseMessage.Message($"Your vote is in!!. You may only vote once per day. {messageEnding}").ToString(); } } } else { } return(Content(textResponse, "application/xml")); } catch (System.Exception ex) { _logger.LogError(ex.Message); throw; } }
/// <summary> /// 得到例子数据 /// </summary> /// <returns></returns> private We7.CMS.Common.Vote GetExampleData() { We7.CMS.Common.Vote vote = null; vote = new Common.Vote(); vote.OptionType = 1; vote.Title = "投票测试"; vote.ListVoteEntrys = new List <VoteEntry>(); VoteEntry voteEntry = new VoteEntry(); voteEntry.EntryText = "选项1"; vote.ListVoteEntrys.Add(voteEntry); voteEntry = new VoteEntry(); voteEntry.EntryText = "选项2"; vote.ListVoteEntrys.Add(voteEntry); return(vote); }
/// <summary> /// 提交对某一期的投票答案 /// </summary> /// <param name="listAnswers"></param> /// <param name="flag"> /// -1:投票失败 /// -2:投票已过期 /// 1:成功 /// 0:您已经投过票了 /// </param> #region bool AddVoteAnswer(List<VoteAnswer> listAnswers,out int flag) public bool AddVoteAnswer(List <VoteAnswer> listAnswers, out int flag) { flag = -1; try { if (listAnswers != null && listAnswers.Count > 0) { string voteID = listAnswers[0].VoteID; Vote vote = GetVoteByID(voteID); //是否有重复投票限制 && 已经投过票 if (!vote.IsCanRepeat && IsVoteAnswerExist(listAnswers[0])) { flag = 0; return(false); } //是否截止 if (vote != null && vote.EndDate > DateTime.Now) { //登录用AccountID if (!string.IsNullOrEmpty(listAnswers[0].AccountID)) { //检查当前用户的记录是否存在 if (!IsExistVotePeople(listAnswers[0].VoteID, listAnswers[0].AccountID)) { vote.VotePeoples += 1; UpdateVote(vote); } } else {//未登录用IP if (!IsExistVoteIp(listAnswers[0].VoteID, listAnswers[0].AccountID)) { vote.VotePeoples += 1; UpdateVote(vote); } } foreach (VoteAnswer voteAnswer in listAnswers) { voteAnswer.ID = We7Helper.CreateNewID(); Assistant.Insert(voteAnswer); //获取投票的选项 VoteEntry voteEntry = GetVoteEntryByEntryID(voteAnswer.VoteEntryID); //加一票统计 UpdateVoteAnswerStat(voteAnswer.VoteID, voteAnswer.VoteEntryID, voteEntry != null ? voteEntry.EntryText : "", 1); } flag = 1; return(true); } else { flag = -2; return(false); } } return(false); } catch (Exception ex) { flag = -1; return(false); } }
/// <summary> /// 删除一条投票选项 /// </summary> /// <param name="voteEntry"></param> #region bool DeleteVoteEntry(VoteEntry voteEntry) public bool DeleteVoteEntry(VoteEntry voteEntry) { return(Assistant.Delete(voteEntry)); }
public ActionResult Details(int id) { if (Services.WorkContext.CurrentUser.UserName == "admin") { var poll = _pollService.GetPoll(id); var choices = _pollService.GetChoices(id); var results = _pollService.GetPollWithResult(id); var votes = _pollService.GetVotes(id); var minDate = votes.Count() == 0 ? DateTime.Now : votes.Min(v => v.VoteDateUtc); var maxDate = votes.Count() == 0 ? DateTime.Now : votes.Max(v => v.VoteDateUtc); var result1 = new List <VoteEntry>(); var result2 = new List <VoteEntry>(); var result3 = new List <VoteEntry>(); foreach (var choice in choices) { var entry1 = new VoteEntry { Choice = choice, Results = new Dictionary <DateTime, int>() }; var entry2 = new VoteEntry { Choice = choice, IsAnonymous = true, Results = new Dictionary <DateTime, int>() }; var entry3 = new VoteEntry { Choice = choice, IsAnonymous = false, Results = new Dictionary <DateTime, int>() }; for (var date = minDate.Date; date <= maxDate.Date; date = date.AddDays(1)) { entry1.Results.Add(new DateTime(date.Ticks), votes.Count(v => v.PollChoiceRecord.Id == choice.Id && v.VoteDateUtc.Date == date)); entry2.Results.Add(new DateTime(date.Ticks), votes.Count(v => v.PollChoiceRecord.Id == choice.Id && v.VoteDateUtc.Date == date && v.Username == "Anonymous")); entry3.Results.Add(new DateTime(date.Ticks), votes.Count(v => v.PollChoiceRecord.Id == choice.Id && v.VoteDateUtc.Date == date && v.Username != "Anonymous")); } result1.Add(entry1); result2.Add(entry2); result3.Add(entry3); } var model = new AdminDetailsViewModel { Question = poll.Question, Open = poll.OpenDateUtc.Value, Close = poll.CloseDateUtc.Value, MaxVotes = poll.MaxVotes, ResultByChoices = results.Choices, VotesByChoices = result1, AnonymVotesByChoices = result2, UserVotesByChoices = result3 }; return(View(model)); } else { Services.Notifier.Information(T("Please log in as Admin user in order to access this method.")); return(Redirect("~/Endpoint")); } }
public void AddAsync(VoteEntry entry) { _context.VoteEntries.AddAsync(entry); }