/// <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")); }
/// <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 ? "发布中" : "已完成")); }
/// <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); } }