コード例 #1
0
ファイル: Polls.cs プロジェクト: object8421/ichari
        /// <summary>
        /// 通过主题ID获取相应的投票信息
        /// </summary>
        /// <param name="tid">主题id</param>
        /// <returns>投票选项集合</returns>
        public static PollOptionInfoCollection GetPollOptionInfoCollection(int tid)
        {
            PollOptionInfoCollection pollinfocoll = new PollOptionInfoCollection();
            IDataReader    idatareader            = DatabaseProvider.GetInstance().GetPollOptionList(tid);
            PollOptionInfo polloptioninfo;

            while (idatareader.Read())
            {
                polloptioninfo = new PollOptionInfo();
                polloptioninfo.Polloptionid = Utils.StrToInt(idatareader["polloptionid"], 0);
                polloptioninfo.Displayorder = Utils.StrToInt(idatareader["displayorder"], 0);
                polloptioninfo.Pollid       = Utils.StrToInt(idatareader["pollid"], 0);
                polloptioninfo.Polloption   = idatareader["polloption"].ToString().Trim();
                polloptioninfo.Tid          = Utils.StrToInt(idatareader["tid"], 0);
                polloptioninfo.Voternames   = idatareader["voternames"].ToString().Trim();
                polloptioninfo.Votes        = Utils.StrToInt(idatareader["votes"], 0);
                pollinfocoll.Add(polloptioninfo);
            }
            idatareader.Close();
            return(pollinfocoll);
        }
コード例 #2
0
ファイル: Polls.cs プロジェクト: object8421/ichari
        /// <summary>
        /// 更新一个投票
        /// </summary>
        /// <param name="tid">关联的主题id</param>
        /// <param name="multiple">投票类型, 0为单选, 1为多选</param>
        /// <param name="itemcount">投票项总数</param>
        /// <param name="polloptionidlist">投票项id列表</param>
        /// <param name="itemnamelist">投票项目列表</param>
        /// <param name="itemdisplayorderlist">投票项目排列顺序列表</param>
        /// <param name="enddatetime">截止日期</param>
        /// <param name="maxchoices">最多可选项数</param>
        /// <param name="visible">提交投票后结果才可见, 0为可见, 1为投票后可见</param>
        /// <returns>成功则返回true, 否则返回false</returns>
        public static bool UpdatePoll(int tid, int multiple, int itemcount, string polloptionidlist, string itemnamelist, string itemdisplayorderlist, string enddatetime, int maxchoices, int visible)
        {
            //
            string[] itemname         = Utils.SplitString(itemnamelist, "\r\n");
            string[] itemdisplayorder = Utils.SplitString(itemdisplayorderlist, "\r\n");
            string[] polloptionid     = Utils.SplitString(polloptionidlist, "\r\n");

            if ((itemname.Length != itemcount) || (itemdisplayorder.Length != itemcount))
            {
                return(false);
            }

            PollInfo pollinfo = GetPollInfo(tid);

            pollinfo.Expiration = Utils.GetStandardDateTime(enddatetime);
            pollinfo.Maxchoices = maxchoices;
            pollinfo.Multiple   = multiple;
            pollinfo.Tid        = tid;
            pollinfo.Visible    = visible;

            bool result = false;

            if (pollinfo.Pollid > 0)
            {
                result = DatabaseProvider.GetInstance().UpdatePoll(pollinfo);
            }
            if (result)
            {
                PollOptionInfoCollection polloptioninfocoll = GetPollOptionInfoCollection(pollinfo.Tid);
                int i = 0;

                //先作已存在的投票选项更新及新添加选项的添加操作
                bool optionexist;
                foreach (string optionid in polloptionid)
                {
                    optionexist = false;
                    foreach (PollOptionInfo polloptioninfo in polloptioninfocoll)
                    {
                        if (optionid == polloptioninfo.Polloptionid.ToString())
                        {
                            polloptioninfo.Pollid       = pollinfo.Pollid;
                            polloptioninfo.Polloption   = Utils.GetSubString(itemname[i], 80, "");
                            polloptioninfo.Displayorder = Utils.StrIsNullOrEmpty(itemdisplayorder[i]) ? i + 1 : Utils.StrToInt(itemdisplayorder[i], 0);
                            DatabaseProvider.GetInstance().UpdatePollOption(polloptioninfo);
                            optionexist = true;
                            break;
                        }
                    }
                    if (!optionexist) //如果当前选项不存在,表示该选项为新添选项
                    {
                        PollOptionInfo polloptioninfo = new PollOptionInfo();
                        polloptioninfo.Displayorder = Utils.StrIsNullOrEmpty(itemdisplayorder[i]) ? i + 1 : Utils.StrToInt(itemdisplayorder[i], 0);
                        polloptioninfo.Pollid       = pollinfo.Pollid;
                        polloptioninfo.Polloption   = Utils.GetSubString(itemname[i], 80, "");
                        polloptioninfo.Tid          = tid;
                        polloptioninfo.Voternames   = "";
                        polloptioninfo.Votes        = 0;
                        DatabaseProvider.GetInstance().CreatePollOption(polloptioninfo);
                    }
                    i++;
                }

                foreach (PollOptionInfo polloptioninfo in polloptioninfocoll)
                {
                    //下面代码用于删除已去除的投票项
                    if (("\r\n" + polloptionidlist + "\r\n").IndexOf("\r\n" + polloptioninfo.Polloptionid + "\r\n") < 0)
                    {
                        DatabaseProvider.GetInstance().DeletePollOption(polloptioninfo);
                    }
                }

                return(true);
            }
            else
            {
                return(false);
            }
        }
コード例 #3
0
ファイル: Polls.cs プロジェクト: object8421/ichari
        /// <summary>
        /// 获得与指定主题id关联的投票数据
        /// </summary>
        /// <param name="tid">主题id</param>
        /// <returns>投票数据</returns>
        public static DataTable GetPollOptionList(int tid)
        {
            DataTable dt = new DataTable();

            dt.Columns.Add("name", System.Type.GetType("System.String"));         //投票项名称
            dt.Columns.Add("value", System.Type.GetType("System.String"));        //票数
            dt.Columns.Add("barid", System.Type.GetType("System.Int32"));
            dt.Columns.Add("barwidth", System.Type.GetType("System.Double"));     //显示宽度
            dt.Columns.Add("percent", System.Type.GetType("System.String"));      //投票百分比
            dt.Columns.Add("multiple", System.Type.GetType("System.String"));     //是否多选 
            dt.Columns.Add("polloptionid", System.Type.GetType("System.Int32"));  //投票项ID
            dt.Columns.Add("displayorder", System.Type.GetType("System.Int32"));  //排序位置
            dt.Columns.Add("votername", System.Type.GetType("System.String"));    //投票人名称
            dt.Columns.Add("percentwidth", System.Type.GetType("System.String")); //投票进度条宽度
            PollOptionInfoCollection polloptioninfocoll = GetPollOptionInfoCollection(tid);

            object[] rowVals;

            int multiple = GetPollInfo(tid).Multiple;

            int votesum = 0;
            int maxVote = 0;

            foreach (PollOptionInfo polloptioninfo in polloptioninfocoll)
            {
                votesum += polloptioninfo.Votes;
                maxVote  = polloptioninfo.Votes > maxVote ? polloptioninfo.Votes : maxVote;
            }
            if (votesum == 0)
            {
                votesum = 1;
            }
            int    i         = 0;
            string votername = "";

            //组定数据项
            foreach (PollOptionInfo polloptioninfo in polloptioninfocoll)
            {
                rowVals    = new object[10];
                rowVals[0] = polloptioninfo.Polloption;
                rowVals[1] = polloptioninfo.Votes;
                rowVals[2] = i % 10;
                rowVals[3] = (((double)(Utils.StrToFloat(polloptioninfo.Votes, 0) * 100 / votesum) / 100) * 200 + 3).ToString("0.00");
                rowVals[4] = ((double)(Utils.StrToFloat(polloptioninfo.Votes, 0) * 100 / votesum) / 100).ToString("0.00%");
                rowVals[5] = multiple;
                rowVals[6] = polloptioninfo.Polloptionid;
                rowVals[7] = polloptioninfo.Displayorder;

                if (!Utils.StrIsNullOrEmpty(polloptioninfo.Voternames))
                {
                    //将投票人字段的数据重新组合成链接字符串
                    foreach (string username in Utils.SplitString(polloptioninfo.Voternames, "\r\n"))
                    {
                        votername += "<a href=\"userinfo.aspx?username="******"\">" + username.Trim() + "</a> ";
                    }
                    rowVals[8] = votername;
                    votername  = "";
                }
                else
                {
                    rowVals[8] = "";
                }
                rowVals[9] = (420 * ((double)(Utils.StrToFloat(polloptioninfo.Votes, 0) / maxVote))).ToString();
                dt.Rows.Add(rowVals);
                i++;
            }
            return(dt);
        }
コード例 #4
0
ファイル: Polls.cs プロジェクト: object8421/ichari
        /// <summary>
        /// 根据投票信息更新数据库中的记录
        /// </summary>
        /// <param name="tid">主题id</param>
        /// <param name="selitemidlist">选择的投票项id列表</param>
        /// <param name="username">用户名</param>
        /// <returns>如果执行成功则返回0, 非法提交返回负值</returns>
        public static int UpdatePoll(int tid, string selitemidlist, string username)
        {
            if (username == "")
            {
                return(-1);
            }

            string[] selitemid = Utils.SplitString(selitemidlist, ",");
            int      nowid     = 0;

            foreach (string optionid in selitemid)
            {
                nowid = Utils.StrToInt(optionid, -1);
                // 如果id结果集合中出现非数字类型字符则认为是非法
                if (nowid == -1)
                {
                    return(-1);
                }
            }

            PollInfo pollinfo = GetPollInfo(tid);

            if (pollinfo.Pollid < 1)
            {
                return(-3);
            }

            if (Utils.StrIsNullOrEmpty(pollinfo.Voternames))
            {
                pollinfo.Voternames = username;
            }
            else
            {
                pollinfo.Voternames = pollinfo.Voternames + "\r\n" + username;
            }

            DatabaseProvider.GetInstance().UpdatePoll(pollinfo);
            PollOptionInfoCollection polloptioninfocoll = GetPollOptionInfoCollection(pollinfo.Tid);

            foreach (string optionid in selitemid)
            {
                foreach (PollOptionInfo polloptioninfo in polloptioninfocoll)
                {
                    if (optionid == polloptioninfo.Polloptionid.ToString())
                    {
                        if (Utils.StrIsNullOrEmpty(polloptioninfo.Voternames))
                        {
                            polloptioninfo.Voternames = username;
                        }
                        else
                        {
                            polloptioninfo.Voternames = polloptioninfo.Voternames + "\r\n" + username;
                        }
                        polloptioninfo.Votes += 1;
                        DatabaseProvider.GetInstance().UpdatePollOption(polloptioninfo);
                    }
                }
            }

            return(0);
        }