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);
        }
Пример #2
0
        /// <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);
            }
        }
Пример #3
0
 /// <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);
     }
 }
Пример #4
0
        /// <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);
        }
Пример #5
0
 /// <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);
     }
 }
Пример #6
0
        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;
            }
        }
Пример #7
0
        /// <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);
        }
Пример #8
0
        /// <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);
            }
        }
Пример #9
0
 /// <summary>
 /// 删除一条投票选项
 /// </summary>
 /// <param name="voteEntry"></param>
 #region bool DeleteVoteEntry(VoteEntry voteEntry)
 public bool DeleteVoteEntry(VoteEntry voteEntry)
 {
     return(Assistant.Delete(voteEntry));
 }
Пример #10
0
        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"));
            }
        }
Пример #11
0
 public void AddAsync(VoteEntry entry)
 {
     _context.VoteEntries.AddAsync(entry);
 }