コード例 #1
0
 /// <summary>
 /// Html扩展方法
 /// 显示当前问卷/投票状态
 /// </summary>
 /// <param name="html"></param>
 /// <param name="state">状态</param>
 public static MvcHtmlString GetQuesVoteStatCss(this HtmlHelper html, QssQuesAndVoteState state)
 {
     return(new MvcHtmlString(
                state == QssQuesAndVoteState.Pass ? "collecting" :
                state == QssQuesAndVoteState.InAudit ? "collecting" :
                state == QssQuesAndVoteState.NoCreate ? "" :
                state == QssQuesAndVoteState.InConfirm ? "collecting" :
                state == QssQuesAndVoteState.NoAudited ? "" :
                state == QssQuesAndVoteState.NotPass ? "end" :
                state == QssQuesAndVoteState.NotConfirm ? "end" :
                state == QssQuesAndVoteState.Write ? "collecting" : "collecting"));
 }
コード例 #2
0
 /// <summary>
 /// Html扩展方法
 /// 显示当前问卷/投票状态
 /// </summary>
 /// <param name="html"></param>
 /// <param name="state">状态</param>
 public static MvcHtmlString GetQuesVoteStat(this HtmlHelper html, QssQuesAndVoteState state)
 {
     return(new MvcHtmlString(
                state == QssQuesAndVoteState.Pass ? "审核通过" :
                state == QssQuesAndVoteState.InAudit ? "审核中" :
                state == QssQuesAndVoteState.NoCreate ? "未确认" :
                state == QssQuesAndVoteState.InConfirm ? "确认中" :
                state == QssQuesAndVoteState.NoAudited ? "未审核" :
                state == QssQuesAndVoteState.NotPass ? "审核未通过" :
                state == QssQuesAndVoteState.NotConfirm ? "确认未通过" :
                state == QssQuesAndVoteState.Write ? "发布中" : "已完成"));
 }
コード例 #3
0
        /// <summary>
        /// 创建问卷
        /// </summary>
        /// <param name="global">问卷全局信息</param>
        /// <param name="message">处理结果信息</param>
        private QssResult QssCreateQuesGlobal(JObject global, User user, out Question ques, out string message)
        {
            // 校验时间
            var beginTime = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc).AddMilliseconds(Convert.ToInt64(global["BeginTime"])).ToLocalTime();
            var endTime   = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc).AddMilliseconds(Convert.ToInt64(global["EndTime"])).ToLocalTime();

            if (endTime < DateTime.Now || endTime < beginTime)
            {
                ques    = null;
                message = "问卷结束时间不能早于当前时间和开始时间!";
                return(QssResult.Fail);
            }

            List <Organize> rdOrgs   = new List <Organize>();
            List <Organize> wtOrgs   = new List <Organize>();
            Organize        organize = null;
            // 问卷状态
            QssQuesAndVoteState state = QssQuesAndVoteState.NoCreate;
            User auditor          = null;
            bool isBelongOrganize = Convert.ToBoolean(global["IsBelongOrganize"]);

            // 获取问卷所属组织
            string orgName = "";

            if (isBelongOrganize)
            {
                organize = DbSession.OrganizeDal.GetEntity(Convert.ToInt32(global["BelongTo"]));

                if (organize == null)
                {
                    ques    = null;
                    message = "获取问卷所属组织失败!";
                    QssLogHelper.Log("获取问卷所属组织失败!", "创建问卷时,获取问卷所属组织失败!", QssLogType.Error);
                    return(QssResult.Fail);
                }

                orgName = organize.Name;
            }

            // 判断组织类型
            if (isBelongOrganize && organize.IsTemp)
            {
                // 临时组织
                rdOrgs.Add(organize);
                wtOrgs.Add(organize);
                state = QssQuesAndVoteState.Pass;
            }
            else
            {
                // 允许查看结果的组织
                List <int> rdIds = new List <int>();
                rdIds.AddRange(((JArray)global["RdOrganize"]).Select(x => Convert.ToInt32(x["Id"])));
                if (isBelongOrganize && !rdIds.Contains(organize.Id))
                {
                    rdIds.Add(organize.Id);                                                   // 可查看组织必须包含所属组织
                }
                rdOrgs.AddRange(DbSession.OrganizeDal.GetEntities(p => rdIds.Contains(p.Id) && p.State == QssOrganizeState.Pass));

                // 允许填写的组织
                List <int> wtIds = new List <int>();
                wtIds.AddRange(((JArray)global["WtOrganize"]).Select(x => Convert.ToInt32(x["Id"])));
                if (isBelongOrganize && !wtIds.Contains(organize.Id))
                {
                    wtIds.Add(organize.Id);                                                   // 可填写组织必须包含所属组织
                }
                wtOrgs.AddRange(DbSession.OrganizeDal.GetEntities(p => wtIds.Contains(p.Id) && p.State == QssOrganizeState.Pass));

                // 以个人名义创建或创建者为所属组织创建者
                if (!isBelongOrganize || (isBelongOrganize && organize.Admin.Id == user.Id))
                {
                    state = QssQuesAndVoteState.NoAudited;
                }
                // 系统管理员创建的直接通过
                if (user.Role.Name == QssRoleType.SysAdmin.ToString())
                {
                    state = QssQuesAndVoteState.Pass; auditor = user;
                }
            }

            // 创建问卷
            Question question = new Question()
            {
                Title            = (string)global["Title"],
                Introduct        = (string)global["Introduct"],
                IsBelongOrganize = isBelongOrganize,
                BelongTo         = Convert.ToInt32(global["BelongTo"]),
                Publisher        = isBelongOrganize ? orgName : user.Name,
                CreateTime       = DateTime.Now,
                Creator          = user,
                Auditor          = auditor,
                BeginTime        = beginTime,
                EndTime          = endTime,
                State            = state,
                QuesRdOrganizes  = rdOrgs,
                QuesWtOrganizes  = wtOrgs,
                IsNotice         = false,
            };

            // 更新添加的问卷数量
            user.AddQuesNum = user.LastAddQuesTime.AddDays(1) < DateTime.Now ? 1 : user.AddQuesNum++;

            // 保存问卷
            try
            {
                CurrentDal.Add(question);
                DbSession.SaveChanges();

                // 保存成功
                ques    = question;
                message = "创建问卷成功";
                QssLogHelper.Log("创建问卷成功", $"{user.Name}({user.Account}) 创建问卷 {question.Title}({question.Id}) 成功!", QssLogType.Info);
                return(QssResult.Success);
            }
            catch (Exception exception)
            {
                // 保存失败
                ques    = null;
                message = $"创建问卷失败!失败原因:{exception};请重试。";
                QssLogHelper.Log("创建问卷失败", $"{user.Name}({user.Account}) 创建问卷 {question.Title}({question.Id}) 失败!", QssLogType.Error, exception);
                return(QssResult.Fail);
            }
        }