예제 #1
0
        /// <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);
        }
예제 #2
0
        /// <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)));
        }
예제 #3
0
        /// <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);
        }