/// <summary> /// 获取问卷/投票列表 /// </summary> /// <param name="type">获取类型</param> /// <param name="message">处理结果信息</param> /// <param name="quesList">获取到的问卷/投票列表</param> /// <returns></returns> public QssResult GetList(QssGetQuesVoteType type, string searchStr, out string message, out IEnumerable <QuesAndVoteModel> qvs) { var result = qvText == "问卷" ? DbSession.QuestionDal.GetList(type, searchStr, out message, out int uid, out IQueryable <QuesAndVoteModel> _qvs) : DbSession.VoteDal.GetList(type, searchStr, out message, out uid, out _qvs); if (result != QssResult.Success) { qvs = null; return(result); } qvs = _qvs.ToList().Select(p => new QuesAndVoteModel { Id = p.Id, JoinNum = p.JoinNum, State = p.State, Title = p.Title, BeginTime = p.BeginTime, Creator = p.Creator, Readable = p.Readable, Writeable = p.Writeable, Publisher = p.Publisher, IsWrite = DbSession.WtLogDal.GetEntities(q => q.Type == (qvText == "问卷" ? QssWtLogType.Question : QssWtLogType.Vote) && q.User.Id == uid && q.QuesVoteId == p.Id).Any() }); return(QssResult.Success); }
/// <summary> /// 问卷管理 /// </summary> /// <param name="page">页数</param> /// <param name="pageSize">每页显示条数</param> /// <param name="strSearch">搜索内容</param> /// <returns></returns> public ActionResult QuesList(string strSearch, string type = "all", int page = 1, int pageSize = 6) { ViewBag.QType = type; // 获取问卷列表类型 QssGetQuesVoteType _type = type == QssGetQuesVoteType.all.ToString() ? QssGetQuesVoteType.all : type == QssGetQuesVoteType.audit.ToString() ? QssGetQuesVoteType.audit : type == QssGetQuesVoteType.create.ToString() ? QssGetQuesVoteType.create : QssGetQuesVoteType.write; // 和自己相关的所有问卷:创建、审核、填写、查看 if (QuestionService.GetList(_type, strSearch, out string message, out IEnumerable <QuesAndVoteModel> model) != Common.QssResult.Success) { return(Content(QssReturnHepler.QssGetReturnContent(message, "/Account/LogOff"))); } // 分页返回 return(View(model.OrderByDescending(p => p.Id).ToPagedList(page, pageSize))); }
/// <summary> /// 获取问卷/投票列表 /// </summary> /// <param name="type">获取类型</param> /// <param name="message">处理结果信息</param> /// <param name="uid">当前用户Id</param> /// <param name="quesList">获取到的问卷/投票列表</param> /// <returns></returns> public QssResult GetList(QssGetQuesVoteType type, string searchStr, out string message, out int uid, out IQueryable <QuesAndVoteModel> quesList) { // 获取当前用户 var result = QssGetUserByAccount(User.Identity.Name, out User user); if (result != QssResult.Success) { message = "获取当前用户失败!"; quesList = null; uid = 0; return(result); } // 选择 我创建、我审核、我填写、我查看 IQueryable <Vote> queryable = type == QssGetQuesVoteType.all ? Db.Set <Vote>().Where(p => Db.Users.Where(u => u.Id == user.Id && (u.Id == p.Auditor.Id || u.Id == p.Creator.Id || (u.JoinOrganizes.Intersect(p.VoteRdOrganizes).Any() && p.State == QssQuesAndVoteState.End) || (u.JoinOrganizes.Intersect(p.VoteWtOrganizes).Any() && (p.State == QssQuesAndVoteState.End || p.State == QssQuesAndVoteState.Write)))).Any()) : type == QssGetQuesVoteType.audit ? Db.Set <Vote>().Where(p => p.Auditor.Id == user.Id) : type == QssGetQuesVoteType.create ? Db.Set <Vote>().Where(p => p.Creator.Id == user.Id) : Db.Set <Vote>().Where(p => Db.Users.Where(u => u.Id == user.Id && u.JoinOrganizes.Intersect(p.VoteWtOrganizes).Any()).Any() && (p.State == QssQuesAndVoteState.End || p.State == QssQuesAndVoteState.Write) && Db.WtLogs.Where(l => l.QuesVoteId == p.Id && l.Type == QssWtLogType.Vote && l.User.Account == User.Identity.Name).Count() == 1); // 搜索 if (!string.IsNullOrWhiteSpace(searchStr)) { queryable.Where(p => p.Title.Contains(searchStr)); } var joinOrgnizes = user.JoinOrganizes.Select(x => x.Id); // 投影 quesList = queryable .Select(p => new QuesAndVoteModel { Id = p.Id, State = p.State, Title = p.Title, BeginTime = p.BeginTime, Creator = p.Creator.Account, Publisher = p.Publisher, JoinNum = p.JoinNum, Readable = p.VoteRdOrganizes.Where(x => joinOrgnizes.Contains(x.Id)).Any(), Writeable = p.VoteRdOrganizes.Where(x => joinOrgnizes.Contains(x.Id)).Any() }); message = $"获取投票列表成功!"; uid = user.Id; return(QssResult.Success); }