Esempio n. 1
0
        public JsonResult GetExaminationById(int Id)
        {
            ClassExamShow exammodel = new ClassExamShow();
            tbExamination exam      = _examinationBL.GetExamination(Id);

            if (exam != null)
            {
                exam.ExamBeginTime  = exam.ExamBeginTime.ToLocalTime();
                exam.ExamEndTime    = exam.ExamEndTime.ToLocalTime();
                exam.LastUpdateTime = exam.LastUpdateTime.ToLocalTime();
            }
            string ApprovalUserIds = exam.ApprovalUser == null
                ? ""
                : exam.ApprovalUser.GetString(defaultValue: "");

            tbExampaperRedundancy paper = _exampaperBL.GetExampaperRedundancy(exam.PaperID);

            exammodel.ExamID           = exam != null ? exam._id : 0;
            exammodel.PaperID          = paper != null ? paper.ExampaperId : 0;
            exammodel.PaperName        = paper != null ? paper.ExampaperTitle : "";
            exammodel.ExaminationTitle = exam.ExaminationTitle;
            exammodel.ExamBeginTime    = exam.ExamBeginTime.ToString("yyyy-MM-dd");
            exammodel.ExamEndTime      = exam.ExamEndTime.ToString("yyyy-MM-dd");
            exammodel.ExamLength       = exam.ExamLength;
            exammodel.TestTimes        = exam.TestTimes;
            exammodel.RadomOrderFlag   = exam.RadomOrderFlag;
            exammodel.PassScore        = exam.PassScore;
            exammodel.ApprovalUserIds  = ApprovalUserIds;
            return(Json(new { result = exammodel }, JsonRequestBehavior.AllowGet));
        }
Esempio n. 2
0
        /// <summary>
        /// 所有的考试
        /// </summary>
        /// <param name="classId"></param>
        /// <returns></returns>
        public List <Tr_TrainClassToExam> GetClassExamShow(int classId)
        {
            var examList = _dataAccess.GetList <Tr_TrainClassToExam>(" Tr_TrainClassToExam.IsDelete=0 and ClassId=" + classId);

            if (examList.Any())
            {
                var dbExamList  = _examinationDb.GetAllExamination(examList.Select(p => p.ExamID));
                var dbPaperList = _exampaperDb.GetExampaperRedundancyList();
                foreach (var exam in examList)
                {
                    if (exam.ExamID > 0)
                    {
                        tbExamination         model = dbExamList.FirstOrDefault(p => p._id == exam.ExamID);
                        tbExampaperRedundancy paper = dbPaperList.FirstOrDefault(p => p.ExampaperId == model.PaperID);
                        exam.PaperID        = paper != null ? paper._id : 0;
                        exam.Papername      = paper != null ? paper.ExampaperTitle : "--";
                        exam.TestTimes      = model.TestTimes;
                        exam.RadomOrderFlag = model.RadomOrderFlag;
                        exam.PassScore      = model.PassScore;
                    }
                }
            }

            return(examList);
        }
Esempio n. 3
0
        /// <summary>
        /// 个人学习记录统计 - 详情 - 考试
        /// </summary>
        /// <param name="userId"></param>
        /// <param name="starttime"></param>
        /// <param name="endtime"></param>
        /// <returns></returns>
        public List <Rpt_UserStatistics_Exam> GetUserStatisticsUserExamDetailByUser(int userId, DateTime?starttime, DateTime?endtime)
        {
            //获取我的考试信息
            List <tbExamSendStudent> myTotalExamList = _examTestDB.GetMyExamList(userId);
            //相关的考试
            List <tbExamination> examlist = _examinationDB.GetAllExamination(myTotalExamList.Select(p => p.RelationID))
                                            .FindAll(p => (!starttime.HasValue || p.ExamBeginTime.ToLocalTime() >= starttime.Value) &&
                                                     (!endtime.HasValue || p.ExamEndTime.ToLocalTime() <= endtime.Value) &&
                                                     p.AlreadySendScore == 1
                                                     );
            //相关的试卷
            List <tbExampaperRedundancy> paperList = _exampaperDB.GetAllExampaperRedundancy(examlist.Select(p => p.PaperID));
            //筛选后的我的考试
            var list = new List <Rpt_UserStatistics_Exam>();

            foreach (var item in myTotalExamList)
            {
                var exam = examlist.FirstOrDefault(pa => pa._id == item.RelationID);
                if (exam != null && exam.PublishResult == 1)
                {
                    tbExampaperRedundancy paper = paperList.FirstOrDefault(pa => pa._id == exam.PaperID);
                    if (paper != null && paper.ExampaperScore > 0)
                    {
                        list.Add(new Rpt_UserStatistics_Exam
                        {
                            ExamID        = item.RelationID,
                            ExamTitle     = exam.ExaminationTitle,
                            StartTime     = exam.ExamBeginTime.ToLocalTime(),
                            EndTime       = exam.ExamEndTime.ToLocalTime(),
                            UserTestTimes = item.TestTimes,
                            ExamTestTimes = exam.TestTimes,
                            GetScore      = exam.AlreadySendScore == 1 ? item.Score + "" : "--",
                            PassScore     = (int)(paper.ExampaperScore * exam.PassScore / 100),
                            ExamScore     = paper.ExampaperScore,
                            PassFlag      = exam.AlreadySendScore == 1 ? (exam.PublishResult == 1 ? item.IsPass : 0) : -1,
                            DoExamStatus  = item.DoExamStatus
                        });
                    }
                }
            }
            // list = list.OrderByDescending(p => p.ExamUserID).Skip((pageIndex - 1) * pageSize).Take(pageSize);

            return(list);
        }
Esempio n. 4
0
        public void SavePromotionWayPostList(out List <int> deleteIds, int promotionId, List <PromotionStage> list)
        {
            deleteIds = new List <int>();
            var _exampaperDB = new RetechWing.BusinessCommon.Examination.ExaminationCommonMethod();

            string where = string.Format(" Ab_PromotionStage.IsDelete = 0 and Ab_PromotionStage.PromotionId = {0} ", promotionId);
            var postList = _dataAccess.GetList <PromotionStage>(where);

            if (postList.Count > 0)
            {
                foreach (var item in postList)
                {
                    var tmp = list.Find(p => p.PostId == item.PostId);
                    if (tmp == null)
                    {
                        deleteIds.Add(item.StageId);
                        UpdatePostPromotion(item.PostId, 0);
                    }
                    else
                    {
                        item.Description         = tmp.Description;
                        item.Period              = tmp.Period;
                        item.ObligatoryLessScore = tmp.ObligatoryLessScore;
                        item.ElectiveLessScore   = tmp.ElectiveLessScore;
                        item.PassScore           = tmp.PassScore;
                        item.OrderNum            = tmp.OrderNum;

                        if (tmp.ExamId > 0)
                        {
                            tbExampaper           exampaper = _exampaperDB.GetSingleById <tbExampaper>(tmp.ExamId);
                            tbExampaperRedundancy model     = new tbExampaperRedundancy
                            {
                                ExampaperId        = exampaper._id,
                                Description        = exampaper.Description,
                                Distribution       = exampaper.Distribution,
                                ExamSortID         = exampaper.ExamSortID,
                                TrainDetailId      = exampaper.TrainDetailId,
                                UserID             = exampaper.UserID,
                                CreateTime         = exampaper.CreateTime,
                                ExampaperAvailable = exampaper.ExampaperAvailable,
                                ExampaperOpen      = exampaper.ExampaperOpen,
                                ExampaperScore     = exampaper.ExampaperScore,
                                ExampaperTitle     = exampaper.ExampaperTitle,
                                ExamType           = exampaper.ExamType,
                                LastUpdateTime     = exampaper.LastUpdateTime,
                                QuestionList       = exampaper.QuestionList,
                                QuestionRule       = exampaper.QuestionRule,
                                QuestionTypeOrder  = exampaper.QuestionTypeOrder,
                                Realname           = exampaper.Realname,
                                Status             = exampaper.Status,
                                TenantId           = exampaper.TenantId
                            };
                            item.ExamId = _exampaperDB.Insert <tbExampaperRedundancy>(model);
                        }
                        _dataAccess.UpdateEntity(item);
                        list.Remove(tmp);
                    }
                }
            }
            if (deleteIds.Count > 0)
            {
                _dataAccess.UpdateField("Ab_PromotionStage", "IsDelete", "1", "where StageId in (" + deleteIds.GetString() + ")");
            }
            if (list.Count > 0)
            {
                foreach (var item in list)
                {
                    if (item.ExamId > 0)
                    {
                        tbExampaper           exampaper = _exampaperDB.GetSingleById <tbExampaper>(item.ExamId);
                        tbExampaperRedundancy model     = new tbExampaperRedundancy
                        {
                            ExampaperId        = exampaper._id,
                            Description        = exampaper.Description,
                            Distribution       = exampaper.Distribution,
                            ExamSortID         = exampaper.ExamSortID,
                            TrainDetailId      = exampaper.TrainDetailId,
                            UserID             = exampaper.UserID,
                            CreateTime         = exampaper.CreateTime,
                            ExampaperAvailable = exampaper.ExampaperAvailable,
                            ExampaperOpen      = exampaper.ExampaperOpen,
                            ExampaperScore     = exampaper.ExampaperScore,
                            ExampaperTitle     = exampaper.ExampaperTitle,
                            ExamType           = exampaper.ExamType,
                            LastUpdateTime     = exampaper.LastUpdateTime,
                            QuestionList       = exampaper.QuestionList,
                            QuestionRule       = exampaper.QuestionRule,
                            QuestionTypeOrder  = exampaper.QuestionTypeOrder,
                            Realname           = exampaper.Realname,
                            Status             = exampaper.Status,
                            TenantId           = exampaper.TenantId
                        };
                        item.ExamId = _exampaperDB.Insert <tbExampaperRedundancy>(model);
                    }
                }
                _dataAccess.AddEntities(list);
            }
        }
Esempio n. 5
0
        ///// <summary>
        ///// 添加试卷冗余(通过试卷)
        ///// </summary>
        ///// <param name="exampaper">试卷</param>
        ///// <returns></returns>
        //public int InsertExampaperRedundancy(tbExampaper exampaper)
        //{
        //    tbExampaperRedundancy model = new tbExampaperRedundancy
        //    {
        //        ExampaperId = exampaper._id,
        //        Description = exampaper.Description,
        //        Distribution = exampaper.Distribution,
        //        ExamSortID = exampaper.ExamSortID,
        //        TrainDetailId = exampaper.TrainDetailId,
        //        UserID = exampaper.UserID,
        //        CreateTime = exampaper.CreateTime,
        //        ExampaperAvailable = exampaper.ExampaperAvailable,
        //        ExampaperOpen = exampaper.ExampaperOpen,
        //        ExampaperScore = exampaper.ExampaperScore,
        //        ExampaperTitle = exampaper.ExampaperTitle,
        //        ExamType = exampaper.ExamType,
        //        LastUpdateTime = exampaper.LastUpdateTime,
        //        QuestionList = exampaper.QuestionList,
        //        QuestionRule = exampaper.QuestionRule,
        //        QuestionTypeOrder = exampaper.QuestionTypeOrder,
        //        Realname = exampaper.Realname,
        //        Status = exampaper.Status,
        //        TenantId = exampaper.TenantId
        //    };
        //    return EDB.Insert(model);
        //}

        ///// <summary>
        ///// 添加试卷冗余(通过试卷ID)
        ///// </summary>
        ///// <param name="exampaperId">试卷ID</param>
        ///// <returns></returns>
        //public int InsertExampaperRedundancy(int exampaperId)
        //{
        //    tbExampaper exampaper = EDB.GetSingleById<tbExampaper>(exampaperId);
        //    tbExampaperRedundancy model = new tbExampaperRedundancy
        //    {
        //        ExampaperId = exampaper._id,
        //        Description = exampaper.Description,
        //        Distribution = exampaper.Distribution,
        //        ExamSortID = exampaper.ExamSortID,
        //        TrainDetailId = exampaper.TrainDetailId,
        //        UserID = exampaper.UserID,
        //        CreateTime = exampaper.CreateTime,
        //        ExampaperAvailable = exampaper.ExampaperAvailable,
        //        ExampaperOpen = exampaper.ExampaperOpen,
        //        ExampaperScore = exampaper.ExampaperScore,
        //        ExampaperTitle = exampaper.ExampaperTitle,
        //        ExamType = exampaper.ExamType,
        //        LastUpdateTime = exampaper.LastUpdateTime,
        //        QuestionList = exampaper.QuestionList,
        //        QuestionRule = exampaper.QuestionRule,
        //        QuestionTypeOrder = exampaper.QuestionTypeOrder,
        //        Realname = exampaper.Realname,
        //        Status = exampaper.Status,
        //        TenantId = exampaper.TenantId
        //    };
        //    return EDB.Insert(model);
        //}



        /// <summary>
        /// 添加试卷冗余(通过试卷ID)
        /// </summary>
        /// <param name="exampaperId">试卷ID</param>
        /// <param name="oldExampaperRedundancyId">已冗余ID  【如果未冗余过,则传0】</param>
        /// <returns></returns>
        public int InsertExampaperRedundancy(int exampaperId, int oldExampaperRedundancyId)
        {
            if (oldExampaperRedundancyId > 0)
            {
                var old = EDB.GetSingleById <tbExampaperRedundancy>(oldExampaperRedundancyId);
                if (old.ExampaperId == exampaperId)
                {
                    return(oldExampaperRedundancyId);
                }

                tbExampaper exampaper = EDB.GetSingleById <tbExampaper>(exampaperId);

                var coll = MongoPooledConnection.WriteDatabase.GetCollection("tbExampaperRedundancy");
                coll.Remove(Query.And(new[] { Query.EQ("_id", oldExampaperRedundancyId) }), WriteConcern.Acknowledged);

                int seq = MongoBaseMethod.GetSeqence("SeqencetbExampaperRedundancy");
                tbExampaperRedundancy model = new tbExampaperRedundancy
                {
                    _id                = seq,
                    ExampaperId        = exampaper._id,
                    Description        = exampaper.Description,
                    Distribution       = exampaper.Distribution,
                    ExamSortID         = exampaper.ExamSortID,
                    TrainDetailId      = exampaper.TrainDetailId,
                    UserID             = exampaper.UserID,
                    CreateTime         = exampaper.CreateTime,
                    ExampaperAvailable = exampaper.ExampaperAvailable,
                    ExampaperOpen      = exampaper.ExampaperOpen,
                    ExampaperScore     = exampaper.ExampaperScore,
                    ExampaperTitle     = exampaper.ExampaperTitle,
                    ExamType           = exampaper.ExamType,
                    LastUpdateTime     = exampaper.LastUpdateTime,
                    QuestionList       = exampaper.QuestionList,
                    QuestionRule       = exampaper.QuestionRule,
                    QuestionTypeOrder  = exampaper.QuestionTypeOrder,
                    Realname           = exampaper.Realname,
                    Status             = exampaper.Status,
                    TenantId           = exampaper.TenantId
                };
                coll.Insert(model, WriteConcern.Acknowledged);
                return(seq);
            }

            var exampap      = EDB.GetSingleById <tbExampaper>(exampaperId);
            var tbExampaperR = new tbExampaperRedundancy
            {
                ExampaperId        = exampap._id,
                Description        = exampap.Description,
                Distribution       = exampap.Distribution,
                ExamSortID         = exampap.ExamSortID,
                TrainDetailId      = exampap.TrainDetailId,
                UserID             = exampap.UserID,
                CreateTime         = exampap.CreateTime,
                ExampaperAvailable = exampap.ExampaperAvailable,
                ExampaperOpen      = exampap.ExampaperOpen,
                ExampaperScore     = exampap.ExampaperScore,
                ExampaperTitle     = exampap.ExampaperTitle,
                ExamType           = exampap.ExamType,
                LastUpdateTime     = exampap.LastUpdateTime,
                QuestionList       = exampap.QuestionList,
                QuestionRule       = exampap.QuestionRule,
                QuestionTypeOrder  = exampap.QuestionTypeOrder,
                Realname           = exampap.Realname,
                Status             = exampap.Status,
                TenantId           = exampap.TenantId
            };

            return(EDB.Insert(tbExampaperR));
        }
Esempio n. 6
0
        /// <summary>
        /// 获取试卷的试题
        /// </summary>
        /// <param name="exampaper">试卷信息</param>
        /// <param name="exam">试卷信息</param>
        /// <param name="examuser">学员答案</param>
        /// <param name="examination">考试信息</param>
        private void GetExampaper(ExampaperShow exampaper, tbExampaperRedundancy exam, tbExamSendStudent examuser, tbExamination examination)
        {
            var radomOrder = string.IsNullOrWhiteSpace(examination.RadomOrderFlag) ? new string[0] : examination.RadomOrderFlag.Split(',');

            //IMongoQuery query = Query.In("_id", new BsonArray(exam.QuestionList.Select(p => p.Qid)));
            IMongoQuery query = Query.In("_id", new BsonArray(examuser.StudentAnswerList.Select(p => p.Qid)));

            if (!examuser.StudentAnswerList.Any())
            {
                //如果没有试题,则加入试题
                if (exam.ExamType == 0)
                {
                    exam.QuestionList.ForEach(p =>
                    {
                        examuser.StudentAnswerList.Add(new ReStudentExamAnswer
                        {
                            Qid               = p.Qid,
                            Questionid        = p.Questionid,
                            Order             = p.QOrder,
                            QType             = p.QType,
                            Score             = p.QScore,
                            DoneFlag          = 0,
                            Answer            = "",
                            Evlution          = "",
                            GetScore          = 0,
                            WrongQuestionFlag = 0
                        });
                    });
                }
                else
                {
                    examuser = new RetechWing.BusinessCommon.Examination.GenerateExampaper().RandomGenerate(examuser, exam.QuestionRule);
                    var questionIds = examuser.StudentAnswerList.Select(p => p.Questionid);
                    var questions   = Etdb.GetAllList <tbQuestion>(Query.In("_id", new BsonArray(questionIds)));
                    int i           = 1;
                    foreach (var item in examuser.StudentAnswerList)
                    {
                        var tmp         = questions.FirstOrDefault(p => p._id == item.Questionid);
                        var questionRed = new tbQuestionRedundancy
                        {
                            QuestionId         = tmp._id,
                            QuestionSortID     = tmp.QuestionSortID,
                            QuestionOpen       = tmp.QuestionOpen,
                            UserID             = tmp.UserID,
                            CreateTime         = tmp.CreateTime,
                            FileUpload         = tmp.FileUpload,
                            LastUpdateTime     = tmp.LastUpdateTime,
                            QuestionAnalysis   = tmp.QuestionAnalysis,
                            QuestionAnswer     = tmp.QuestionAnswer,
                            QuestionAnswerKeys = tmp.QuestionAnswerKeys,
                            QuestionAvailable  = tmp.QuestionAvailable,
                            QuestionContent    = tmp.QuestionContent,
                            QuestionKey        = tmp.QuestionKey,
                            QuestionLevel      = tmp.QuestionLevel,
                            QuestionType       = tmp.QuestionType,
                            Status             = tmp.Status,
                            TenantId           = tmp.TenantId
                        };
                        item.Qid   = Etdb.Insert <tbQuestionRedundancy>(questionRed);
                        item.Order = i;
                        i++;
                    }
                }
                Etdb.Modify <tbExamSendStudent>(examuser);

                query = Query.In("_id", new BsonArray(examuser.StudentAnswerList.Select(p => p.Qid)));
            }

            ////从缓存中读取所有问题
            //List<tbQuestionRedundancy> quList; //获取试题
            //var cachekey = "examquestions:tenant:" + exam.TenantId;
            //quList = _cacheService.Get<List<tbQuestionRedundancy>>(cachekey);
            //if (quList == null || quList.Count == 0)
            //{
            //    quList = Etdb.GetAllList<tbQuestionRedundancy>(query);
            //    _cacheService.Set(cachekey, quList, CachingExpirationType.Stable);
            //}

            var quList = Etdb.GetAllList <tbQuestionRedundancy>(query);

            //题目随机
            if (radomOrder.Contains("1"))
            {
                var radomList = new List <int>();
                var next      = 0;
                var length    = examuser.StudentAnswerList.Count;
                for (int i = 0; i < length; i++)
                {
                    do
                    {
                        next = new Random().Next();
                        if (!radomList.Contains(next))
                        {
                            examuser.StudentAnswerList[i].Order = next;
                            radomList.Add(next);
                            break;
                        }
                    } while (true);
                }
            }

            var m = 0;

            examuser.StudentAnswerList.OrderBy(p => p.Order).ToList().ForEach(p =>
            {
                p.Order = ++m;
                tbQuestionRedundancy qu = quList.FirstOrDefault(q => q._id == p.Qid);
                if (qu != null)
                {
                    ReStudentExamAnswer an = examuser == null
                                                     ? null
                                                     : examuser.StudentAnswerList.FirstOrDefault(
                        pa => pa.Qid == p.Qid);
                    var newqu = new MQuestion
                    {
                        QAnswerType = qu.QuestionType == 6 ? qu.QuestionAnswer[0].AnswerType : 0,
                        QType       = qu.QuestionType,
                        //QuestionContent = qu.QuestionContent,
                        QuestionContent   = qu.QuestionContent.NoHtml().HtmlDecode(),
                        QuestionID        = qu._id,
                        QuestionLevel     = EnumsLanguage.GetString(((QuestionLevel)qu.QuestionLevel).ToString()),
                        QuestionOrder     = p.Order,
                        Score             = p.Score,
                        UserAnswer        = an == null ? "" : (an.Answer),
                        UserAnswerScore   = an == null ? 0 : an.GetScore,
                        FillBlankCount    = qu.QuestionContent.Split(new[] { "()" }, StringSplitOptions.None).Length - 1,
                        WrongQuestionFlag = an == null ? 0 : an.WrongQuestionFlag,
                        QuestionAnalysis  = qu.QuestionAnalysis
                    };

                    //记录选项随机前的原有序号
                    var tmpquestionlist = new List <MQuestionAnswer>();

                    //选择随机
                    if (radomOrder.Contains("2"))
                    {
                        var radomList = new List <int>();
                        var next      = 0;
                        var length    = qu.QuestionAnswer.Count;
                        for (int i = 0; i < length; i++)
                        {
                            do
                            {
                                next = new Random().Next();
                                if (!radomList.Contains(next))
                                {
                                    tmpquestionlist.Add(new MQuestionAnswer
                                    {
                                        Order    = next,
                                        oldOrder = qu.QuestionAnswer[i].Order
                                    });
                                    qu.QuestionAnswer[i].Order = next;
                                    radomList.Add(next);
                                    break;
                                }
                            } while (true);
                        }
                    }

                    var n = 0;
                    qu.QuestionAnswer.OrderBy(o => o.Order).ToList().ForEach(pa =>
                    {
                        var tmp  = tmpquestionlist.FirstOrDefault(t => t.Order == pa.Order);
                        pa.Order = ++n;
                        newqu.QuestionAnswer.Add(new MQuestionAnswer
                        {
                            AnswerContent = pa.Answer,
                            AnswerFlag    = pa.AnswerFlag,
                            AnswerType    = pa.AnswerType,
                            Order         = pa.Order,
                            QuID          = newqu.QuestionID,
                            QType         = newqu.QType,
                            oldOrder      = tmp == null ? pa.Order : tmp.oldOrder
                        });
                    });

                    qu.FileUpload.ForEach(pa => newqu.FileUpload.Add(new QuestionFile
                    {
                        _fileName = pa.FileName,
                        _fileType = pa.FileType,
                        _realName = pa.RealName
                    }));
                    exampaper.QuestionList.Add(newqu);
                }
            });

            exampaper.QuestionList = exampaper.QuestionList.OrderBy(p => p.QuestionOrder).ToList();
        }