public ActionResult AddCourseAtivity(Course_UnitContent model)
        {
            Course_UnitContentBLL bll = new Course_UnitContentBLL();

            int id = bll.Add(model);
            if (id > 0)
            {
                return Json(new { Result = true, UnitContent = id, Msg = "新增成功!" }, JsonRequestBehavior.AllowGet);
            }
            else
            {
                return Json(new { Result = false, UnitContent = id, Msg = "新增失败!" }, JsonRequestBehavior.AllowGet);
            }
        }
        /// <summary>
        /// 分页查询所有的活动信息
        /// </summary>
        /// <param name="iUnitContentId"></param>
        /// <returns></returns>
        private List<Course_UnitContent> GetCourseUnitContentActivities(int iTrainingId = 0)
        {
            var List_Course_UnitContent = new List<Course_UnitContent>();
            var unitContentbll = new Course_UnitContentBLL();
            var stbSqlWhere = new StringBuilder();
            var strOrderBy = "Course_UnitDetail.Id,Course_UnitContent.Sort";

            if (iTrainingId > 0)
                stbSqlWhere.AppendFormat("Course_UnitDetail.TrainingId = {0}", iTrainingId);
            List_Course_UnitContent = unitContentbll.GetListOther(stbSqlWhere.ToString(), strOrderBy);

            //按照页面排列  章-节-活动

            return List_Course_UnitContent;
        }
        /// <summary>
        /// 获取当前[章]的进度是否已完成
        /// </summary>
        /// <param name="iUnitId">当前节ID</param>
        /// <param name="iClassId">当前登录用户的班级ID</param>
        /// <param name="iTrainingId">当前课程ID</param>
        /// <param name="iAccountId">当前登录用户ID</param>
        /// <param name="iPartOverCount">已完成的[节]的数量</param>
        /// <returns></returns>
        private bool GetChapterProgress(int iUnitId, int iClassId, int iTrainingId, int iAccountId)
        {
            var UnitContentBll = new Course_UnitContentBLL();
            var Member_ClassUnitContentSchedulebll = new Member_ClassUnitContentScheduleBLL();

            int iActivityTotalCount = 0;
            var strActitityId = string.Empty;//活动的Id

            //获取最外层的章的ID,得到该章下面所有的节
            var Molde_Course_UnitDetail = this.GetCourse_UnitDetail(iUnitId, iTrainingId);
            if (Molde_Course_UnitDetail != null)
            {
                //根据课程ID和最外层的章的ID, 获取该[章]下面所有的活动
                string strWhere = string.Format(@" UnitId IN (Select Course_UnitDetail.Id from Course_UnitDetail where (Id = {0} OR parentId = {0}) AND TrainingId = {1} AND Display = 1 AND Delflag = 0) AND Display=1 AND Delflag=0",
                    Molde_Course_UnitDetail.Id, iTrainingId);
                List<Course_UnitContent> List_Course_UnitContent = UnitContentBll.GetList(strWhere, "Sort");
                iActivityTotalCount = List_Course_UnitContent.Count;//得到该[章],[节]下面所有的活动数

                if (iActivityTotalCount <= 0)//当[章],[节]下面没有活动时,默认该章未完成
                    return false;

                //获取活动的Id
                foreach (var item in List_Course_UnitContent)
                {
                    strActitityId += item.Id + ",";
                }
                strActitityId = strActitityId.Substring(0, strActitityId.LastIndexOf(','));

                //联合Member_ClassUnitContentSchedule 查看当前用户有没有将当前小章节的课程学习完
                var strWhere_Activity = string.Format(@" Status = 1 AND Delflag = 0 AND ClassId = {0} AND TrainingId = {1} AND AccountId = {2} AND UnitContent IN ({3})",
                    iClassId, iTrainingId, iAccountId, strActitityId);
                //已完成的[章],[节]下面的活动数
                var iOutPartOverCount = Member_ClassUnitContentSchedulebll.GetList(strWhere_Activity, "Id").Count;

                return iActivityTotalCount == iOutPartOverCount;//当前章节下所有活动已完成学习,若相等,该[章]完成
            }
            else
            {
                return false;
            }
        }
        /// <summary>
        /// 刷新活动时间记录
        /// </summary>
        /// <param name="ClassId"></param>
        /// <param name="TrainingId"></param>
        /// <param name="UnitContent"></param>
        /// <returns></returns>
        public ActionResult RefashTimeRecord(int ClassId, int TrainingId, int UnitContent, int RecordId)
        {
            int iUnitId = 0, iUnitType = 0, iAccountId = 0;
            double dblContentTimeLength = 0;
            var TimeRecordBll = new Member_ClassContentTimeRecordBLL();
            var UnitContentBll = new Course_UnitContentBLL();

            var Model_UnitContent = UnitContentBll.GetModel(UnitContent, string.Empty);
            if (Model_UnitContent == null)
                return View();

            iAccountId = Code.SiteCache.Instance.LoginInfo.UserId;
            iUnitId = Model_UnitContent.UnitId == null ? 0 : Model_UnitContent.UnitId.Value;
            iUnitType = Model_UnitContent.UnitType;
            dblContentTimeLength = Model_UnitContent.TimeLength == null ? 0 : Model_UnitContent.TimeLength.Value;

            var Model_TimeRecord = TimeRecordBll.GetModel(RecordId, string.Empty);
            if (Model_TimeRecord != null)
            {
                Model_TimeRecord.EndTime = DateTime.Now;
                TimeRecordBll.Update(Model_TimeRecord);

                var startDateTime = Model_TimeRecord.StartTime.Value.AddMinutes(dblContentTimeLength);
                var dtCompare = DateTime.Compare(Model_TimeRecord.EndTime.Value, startDateTime);
                if (dtCompare >= 0)//若结束时间 >= 开始时间 + 活动限时,即完成该活动
                {
                    //更新活动进度
                    this.UpdateOverallProgress(iUnitId, ClassId, TrainingId, iAccountId, UnitContent);
                    //若活动是阅读或者视频[1文本,2影音教材,3讨论,4作业,5测试,6结业考试]
                    if (iUnitType == 1 || iUnitType == 2)
                    {
                        this.ScoreSet(1, UnitContent, ClassId, TrainingId);//设置分数
                    }
                }
            }

            return View();
        }
        /// <summary>
        /// 讨论新增
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public ActionResult EditCourseUnitReply(Course_UnitReplyDetail model)
        {
            //此处借用model.AttList传递TrainingId
            if (this.GetCourseIsOver(model.ClassId, int.Parse(model.AttList), model.AccountId))
                return Json(new { Result = false, Msg = "提交失败.当前课程已结束,不能执行该操作!" }, JsonRequestBehavior.AllowGet);

            model.AttList = string.Empty;

            var UnitContentBll = new Course_UnitContentBLL();
            var ReplyBll = new Course_UnitReplyDetailBLL();

            var Model_UnitContent = UnitContentBll.GetModel(model.UnitContent, string.Empty);
            var iUnitType = Model_UnitContent.UnitType;//[1文本,2影音教材,3讨论,4作业,5测试,6结业考试]

            if (model.Id == 0)//新增
            {
                model.Delflag = false;
                model.Display = true;
                model.CreateDate = DateTime.Now;

                if (iUnitType == 3)//仅当活动为讨论时,计分(视频下的讨论不再记分)
                    this.ScoreSet(2, 0, 0, 0, true, model);//设置分数并更新讨论的进度

                if (ReplyBll.Add(model))
                {
                    return Json(new { Result = true, Msg = "提交成功!" }, JsonRequestBehavior.AllowGet);
                }
                else
                {
                    return Json(new { Result = true, Msg = "提交失败!" }, JsonRequestBehavior.AllowGet);
                }
            }
            else//[删除] 修改DelFlag = 1
            {
                if (model.ParentReplyId == 0)
                {
                    if (ReplyBll.Update(model.Id))
                    {
                        if (iUnitType == 3)//仅当活动为讨论时,计分(视频下的讨论不再记分)
                            this.ScoreSet(2, 0, 0, 0, false, model);//设置分数并更新讨论的进度

                        return Json(new { Result = true, Msg = "话题删除成功!" }, JsonRequestBehavior.AllowGet);
                    }
                    else
                    {
                        return Json(new { Result = false, Msg = "话题删除失败!" }, JsonRequestBehavior.AllowGet);
                    }
                }
                else
                {
                    if (ReplyBll.Update(model.Id))
                    {
                        if (iUnitType == 3)//仅当活动为讨论时,计分(视频下的讨论不再记分)
                            this.ScoreSet(2, 0, 0, 0, false, model);//设置分数并更新讨论的进度

                        return Json(new { Result = true, Msg = "回复删除成功!" }, JsonRequestBehavior.AllowGet);
                    }
                    else
                    {
                        return Json(new { Result = false, Msg = "回复删除失败!" }, JsonRequestBehavior.AllowGet);
                    }
                }
            }
        }
        /// <summary>
        /// 设置分数
        /// </summary>
        /// <param name="iUnitType">//1阅读,2讨论
        /// <param name="IsAdd">True:新增 False:删除</param>
        /// <param name="obj">数据对象</param>
        private void ScoreSet(int iUnitType, int? iUnitContent = 0, int iClassId = 0, int iTrainingId = 0, bool IsAdd = false, Object obj = null)
        {
            var scheduleBll = new Member_ClassUnitContentScheduleBLL();
            var replyBll = new Course_UnitReplyDetailBLL();

            int iPlanId = 0, iAccountId = 0, iUnitId = 0;
            double dblScore = 0;
            var stbSqlWhere = new StringBuilder();

            if (iUnitType == 1)
            {
                iPlanId = Code.SiteCache.Instance.PlanId;
                iAccountId = Code.SiteCache.Instance.LoginInfo.UserId;

                stbSqlWhere.AppendFormat(" ClassId = {0} AND TrainingId = {1} AND AccountId = {2} AND UnitContent = {3} AND Status = 1 AND Delflag = 0",
                    iClassId, iTrainingId, iAccountId, iUnitContent);

                var List_Schedule = scheduleBll.GetList(stbSqlWhere.ToString(), string.Empty);
                if (List_Schedule != null && List_Schedule.Count > 0 && List_Schedule[0].score == null)//当存在记录,并且Score=null时记录分数
                {
                    Web.Code.ScoreSetHelper.ScoreSet(iUnitContent, iUnitType, iClassId, iPlanId, iAccountId, dblScore);
                }
            }
            else if (iUnitType == 2)//讨论  参与次数要 >=1
            {
                var model = obj as Course_UnitReplyDetail;
                iUnitContent = model.UnitContent;
                iClassId = model.ClassId;
                iPlanId = Code.SiteCache.Instance.PlanId;
                iAccountId = model.AccountId;
                stbSqlWhere.AppendFormat(" ClassId = {0} AND AccountId = {1} AND UnitContent = {2} AND Display = 1 AND Delflag = 0",
                        iClassId, iAccountId, iUnitContent);

                var List_ReplyDetail = replyBll.GetList(stbSqlWhere.ToString(), string.Empty);
                if (List_ReplyDetail != null)
                {
                    if (IsAdd)
                    {
                        if (List_ReplyDetail.Count <= 0)
                        {
                            Web.Code.ScoreSetHelper.ScoreSet(iUnitContent, iUnitType, iClassId, iPlanId, iAccountId, dblScore, true);
                        }
                    }
                    else
                    {
                        Web.Code.ScoreSetHelper.ScoreSet(iUnitContent, iUnitType, iClassId, iPlanId, iAccountId, dblScore, false);
                    }
                }

                //获取当前活动的UnitId
                var unitContentBll = new Course_UnitContentBLL();
                var Model_UnitContent = unitContentBll.GetModel(iUnitContent.Value, string.Empty);
                iUnitId = Model_UnitContent.UnitId == null ? 0 : Model_UnitContent.UnitId.Value;
                //获取TrainingId
                var unitDetailBll = new Course_UnitDetailBLL();
                var Model_UnitDetail = unitDetailBll.GetModel(iUnitId, string.Empty);
                iTrainingId = Model_UnitDetail.TrainingId == null ? 0 : Model_UnitDetail.TrainingId.Value;
                //更新总进度
                this.UpdateOverallProgress(iUnitId, iClassId, iTrainingId, iAccountId, iUnitContent.Value);//分数添加之后更新总进度
            }
        }
        /// <summary>
        /// 在线学习-结业考试提交
        /// </summary>
        /// <returns></returns>
        public ActionResult LearnOnLineExamEdit(List<Member_CourseContentTestAnswerOther> listOther)
        {
            var TestAnswerResultBll = new Member_CourseContentTestAnswerResultBLL();
            var unitBll = new Course_UnitContentBLL();
            var stbSqlWhere = new StringBuilder();
            var strOrderBy = "CreateDate";

            int iTrainingId = 0, iId = 0;

            var Model_ExamAnswerResult = this.GetLearnOnLineExamResult(listOther, out iTrainingId);
            if (Model_ExamAnswerResult == null)
            {
                return Json(new { Result = true, Msg = "试题提交异常!" }, JsonRequestBehavior.AllowGet);
            }

            //若课程已结束禁止操作
            if (this.GetCourseIsOver(Model_ExamAnswerResult.ClassId, iTrainingId, Model_ExamAnswerResult.AccountId))
                return Json(new { Result = true, Msg = "提交失败.当前课程已结束,不能执行该操作!" }, JsonRequestBehavior.AllowGet);
            //查看当前活动是否已打分,若已打分则禁止操作
            if (this.GetActivityScore(Model_ExamAnswerResult.ClassId, iTrainingId, Model_ExamAnswerResult.AccountId, Model_ExamAnswerResult.UnitContent))
                return Json(new { Result = false, Msg = "提交失败.当前活动已打分,不能执行该操作!" }, JsonRequestBehavior.AllowGet);

            //提交时,判断其剩余考试次数
            var model = unitBll.GetModel(Model_ExamAnswerResult.UnitContent, string.Empty);

            stbSqlWhere.AppendFormat(@" UnitContent = {0} and AccountId = {1} and Delflag = 0", Model_ExamAnswerResult.UnitContent, Model_ExamAnswerResult.AccountId);
            var List_Result = TestAnswerResultBll.GetList(stbSqlWhere.ToString(), strOrderBy);
            if (List_Result.Count >= model.TestCnt && model.TestCnt != -1)
            {
                return Json(new { Result = true, Msg = "试题提交失败。你的结业考试 - [ " + model.Title + " ] 剩余答题次数不足!" }, JsonRequestBehavior.AllowGet);
            }

            //提交总分到表 Member_CourseContentTestAnswerResult
            bool bolResult = TestAnswerResultBll.Add(Model_ExamAnswerResult) > 0;
            iId = Model_ExamAnswerResult.Id;

            //提交数据到用户答案表 Member_CourseContentTestAnswer
            if (bolResult)
            {
                bolResult = this.SaveMember_CourseContentTestAnswer(listOther, iId);
            }

            if (bolResult)
            {
                SessionHelper sess = new SessionHelper();
                sess.Remove("LearnOnLineExam");

                int iUnitContent = Model_ExamAnswerResult.UnitContent;
                //更新总进度
                this.UpdateOverallProgress(model.UnitId.Value, Model_ExamAnswerResult.ClassId, iTrainingId, Model_ExamAnswerResult.AccountId, iUnitContent);

                return Json(new { Result = true, Msg = "试题提交成功!" }, JsonRequestBehavior.AllowGet);
            }
            else
            {
                return Json(new { Result = true, Msg = "试题提交失败!" }, JsonRequestBehavior.AllowGet);
            }
        }
 public ActionResult IsSectionEditRename(int ParentId, string tilte, int CourseId)
 {
     bool IsSectionEditRename = new Course_UnitContentBLL().IsSectionEditRename(ParentId, tilte, CourseId);
     return Json(new { Data = IsSectionEditRename }, JsonRequestBehavior.AllowGet);
 }
        public ActionResult CourseActivityQuizEdit(int TrainingId, int UnitId)
        {
            //ViewBag.Title = "测试编辑";
            Course_DetailBLL bll_CourseDetail = new Course_DetailBLL();
            Course_UnitContentBLL bll = new Course_UnitContentBLL();
            Course_UnitQuestionBLL bll_UnitQuestion = new Course_UnitQuestionBLL();

            //指定课程的课程ID
            ViewBag.TrainingId = TrainingId;
            //获取指定课程ID对应的课程单元信息
            ViewBag.TrainingInfo = bll_CourseDetail.GetTrainingInfoById(Convert.ToInt32(TrainingId));
            //获取测试Model
            ViewBag.ActivityQuizModel = bll.GetModel(Convert.ToInt32(UnitId), "Delflag = 0");
            //指定单元活动是否已经添加试题
            ViewBag.IsExistsQuizQues = bll_UnitQuestion.IsExistsQuizQues(Convert.ToInt32(UnitId));

            return View();
        }
 public ActionResult IsActivityEditRename(int UnitId, int UnitType, string tilte, int UnitContent)
 {
     bool IsActivityEditRename = new Course_UnitContentBLL().IsActivityEditRename(UnitId, UnitType, tilte, UnitContent);
     return Json(new { Data = IsActivityEditRename }, JsonRequestBehavior.AllowGet);
 }
 public ActionResult IsChapterAddRename(int TrainingId, string tilte)
 {
     bool IsChapterAddRename = new Course_UnitContentBLL().IsChapterAddRename(TrainingId, tilte);
     return Json(new { Data = IsChapterAddRename }, JsonRequestBehavior.AllowGet);
 }
 public ActionResult GetUnitContentMaxOrder(int UnitId, int UnitType)
 {
     Course_UnitContentBLL bll = new Course_UnitContentBLL();
     int Order = bll.GetUnitContentMaxOrder(UnitId, UnitType);
     return Json(new { MaxOrder = Order }, JsonRequestBehavior.AllowGet);
 }
Example #13
0
        /// <summary>
        /// 重新打分
        /// </summary>
        /// <param name="classId"></param>
        /// <param name="planId"></param>
        /// <param name="accountId"></param>
        public static void resetScore(int classId, int planId)
        {
            var member_classBll = new Member_ClassRegisterBLL();

            var classDetail = new Class_DetailBLL().GetModel(classId);

            var traningBll = new Traning_DetailBLL();
            var traning_detail = traningBll.GetModel(classDetail.TraningId, "");
            if (traning_detail == null) return;

            var courseBll = new Course_DetailBLL();
            var cousre_detail = courseBll.GetList(" TrainingId=" + traning_detail.Id, "");
            if (cousre_detail == null || cousre_detail.Count == 0) return;

            var unitContentBll = new Course_UnitContentBLL();
            var memberList = member_classBll.GetList("Delflag=0 and ClassId=" + classId + " and PlanId=" + planId, "");
            foreach (var memberModel in memberList)
            {
                var accountId = memberModel.AccountId;
                int total = 1;

                IList<Course_UnitContent> contentList = new List<Course_UnitContent>();

                #region
                //重新计算阅读分数

                total = unitContentBll.GetUnitCountByClassAndUnitType(classId, "1,2");
                contentList = DataTableToListHelper<Course_UnitContent>.ConvertToModel(unitContentBll.GetUnitByClassAndUnitType(classId, "1,2"));
                if (contentList != null)
                {
                    var scheduleBll = new Member_ClassUnitContentScheduleBLL();
                    int scoreCount = 0;
                    foreach (var item in contentList)
                    {
                        var scheduleModel = scheduleBll.GetList("Delflag=0 and ClassId=" + classId + " and AccountId=" + accountId + " and UnitContent=" + item.Id, "");
                        if (scheduleModel != null && scheduleModel.Count > 0)
                        {
                            if (scheduleModel.First().score.HasValue)//如果有值说明打过分
                            {
                                scoreCount++;
                            }
                        }
                    }
                    if (scoreCount == total)//全部阅读过,给满分
                    {
                        memberModel.ReadingScore = cousre_detail[0].ReadingRate;
                    }
                    else
                    {
                        memberModel.ReadingScore = cousre_detail[0].ReadingRate * scoreCount / total;//阅读数与总数折算
                    }
                }

                //重新计算讨论分数

                total = unitContentBll.GetUnitCountByClassAndUnitType(classId, "3");
                contentList = DataTableToListHelper<Course_UnitContent>.ConvertToModel(unitContentBll.GetUnitByClassAndUnitType(classId, "3"));
                if (contentList != null)
                {
                    var scheduleBll = new Member_ClassUnitContentScheduleBLL();
                    int scoreCount = 0;
                    foreach (var item in contentList)
                    {
                        var scheduleModel = scheduleBll.GetList("Delflag=0 and ClassId=" + classId + " and AccountId=" + accountId + " and UnitContent=" + item.Id, "");
                        if (scheduleModel != null && scheduleModel.Count > 0)
                        {
                            if (scheduleModel.First().score.HasValue)//如果有值说明打过分
                            {
                                scoreCount++;
                            }
                        }
                    }
                    if (scoreCount == total)//全部讨论过,给满分
                    {
                        memberModel.DiscussScore = cousre_detail[0].DisscusRate;
                    }
                    else
                    {
                        memberModel.DiscussScore = cousre_detail[0].DisscusRate * scoreCount / total;//讨论数与总数折算
                    }
                }

                //如有分值,重新计算作业分数

                total = unitContentBll.GetUnitCountByClassAndUnitType(classId, "4");
                contentList = DataTableToListHelper<Course_UnitContent>.ConvertToModel(unitContentBll.GetUnitByClassAndUnitType(classId, "4"));
                if (contentList != null)
                {
                    var homeworkBll = new Course_UnitHomeWorkBLL();
                    double homeworkscore = 0;
                    foreach (var item in contentList)
                    {
                        var scheduleModel = homeworkBll.GetList("Delflag=0 and ClassId=" + classId + " and AccountId=" + accountId + " and UnitContent=" + item.Id, "");
                        if (scheduleModel != null && scheduleModel.Count > 0)
                        {
                            if (scheduleModel.First().Score.HasValue)//如果有值说明打过分
                            {
                                homeworkscore += (scheduleModel.First().Score.Value * (cousre_detail[0].HomeWorkRate) / (total * 100)).ToDouble();//已打分数与总数折算
                            }
                        }
                    }

                    memberModel.HomeWorkScore = homeworkscore;
                }

                //重新计算测试分数

                total = unitContentBll.GetUnitCountByClassAndUnitType(classId, "5");
                contentList = DataTableToListHelper<Course_UnitContent>.ConvertToModel(unitContentBll.GetUnitByClassAndUnitType(classId, "5"));
                if (contentList != null)
                {
                    var scheduleBll = new Member_ClassUnitContentScheduleBLL();
                    double testscore = 0;
                    foreach (var item in contentList)
                    {
                        var scheduleModel = scheduleBll.GetList("Delflag=0 and ClassId=" + classId + " and AccountId=" + accountId + " and UnitContent=" + item.Id, "");
                        if (scheduleModel != null && scheduleModel.Count > 0)
                        {
                            if (scheduleModel.First().score.HasValue)
                            {
                                testscore += (scheduleModel.First().score.Value * (cousre_detail[0].QuestionRate) / (total * 100)).ToDouble();
                            }
                        }
                    }
                    memberModel.TestingScore = testscore;
                }

                //重新计算考试分数

                total = unitContentBll.GetUnitCountByClassAndUnitType(classId, "6");
                contentList = DataTableToListHelper<Course_UnitContent>.ConvertToModel(unitContentBll.GetUnitByClassAndUnitType(classId, "6"));
                if (contentList != null)
                {
                    var scheduleBll = new Member_ClassUnitContentScheduleBLL();
                    double examcore = 0;
                    foreach (var item in contentList)
                    {
                        var scheduleModel = scheduleBll.GetList("Delflag=0 and ClassId=" + classId + " and AccountId=" + accountId + " and UnitContent=" + item.Id, "");
                        if (scheduleModel != null && scheduleModel.Count > 0)
                        {
                            if (scheduleModel.First().score.HasValue)
                            {
                                examcore += (scheduleModel.First().score.Value * (cousre_detail[0].TestingRate) / (total * 100)).ToDouble();
                            }
                        }
                    }
                    memberModel.ExaminationScore = examcore;
                }
                #endregion

                member_classBll.Update(memberModel);
            }
        }
Example #14
0
        /// <summary>
        /// 
        /// </summary>
        /// <param name="objectId">单元ID</param>
        /// <param name="objectType">单元类型</param>
        /// <param name="classId">班级ID</param>
        /// <param name="planId">计划ID</param>
        /// <param name="accountId">成员ID</param>
        /// <param name="score">分值</param>
        public static void ScoreSet(int? objectId, int objectType, int classId, int planId, int accountId, double score, bool add = true)
        {
            dynamic objectBll;
            dynamic model;
            Member_ClassRegister memberModel;
            int total = 1;
            var member_classBll = new Member_ClassRegisterBLL();
            var member_class = member_classBll.GetList(" Delflag=0 and ClassId=" + classId + " and PlanId=" + planId + " and AccountId=" + accountId, "");
            if (member_class == null || member_class.Count == 0) return;
            memberModel = member_class.FirstOrDefault();

            var traningBll = new Traning_DetailBLL();
            var traning_detail = traningBll.GetModel(memberModel.TrainingId.Value, "");
            if (traning_detail == null) return;

            var courseBll = new Course_DetailBLL();
            var cousre_detail = courseBll.GetList(" Delflag=0 and TrainingId=" + traning_detail.Id, "");
            if (cousre_detail == null || cousre_detail.Count == 0) return;

            var unitContentBll = new Course_UnitContentBLL();
            var oldScore = 0.0;
            switch (objectType)
            {
                case 1://read

                    objectBll = new Member_ClassUnitContentScheduleBLL();
                    model = objectBll.GetList("Delflag=0 and ClassId=" + classId + " and AccountId=" + accountId + " and UnitContent=" + objectId, "");
                    if (model.Count > 0)
                    {
                        if (add)
                            model[0].score = 1;
                        else
                            model[0].score = 0;
                        objectBll.Update(model[0]);//
                    }
                    total = unitContentBll.GetUnitCountByClassAndUnitType(classId, "1,2");//阅读视频类的单元活动数
                    if (total > 1)
                    {
                        if (add)
                            memberModel.ReadingScore = (memberModel.ReadingScore.HasValue ? memberModel.ReadingScore.Value : 0)
                                + (cousre_detail[0].ReadingRate / (total)).ToDouble();
                        else
                        {
                            if (memberModel.ReadingScore.HasValue && memberModel.ReadingScore.Value.ToInt() > 0)
                                memberModel.ReadingScore = memberModel.ReadingScore.Value
                                    - (cousre_detail[0].ReadingRate / (total)).ToDouble();
                        }
                    }
                    else
                    {
                        if (add)
                            memberModel.ReadingScore = cousre_detail[0].ReadingRate;
                        else
                            memberModel.ReadingScore = 0.0;
                    }

                    if (memberModel.ReadingScore > cousre_detail[0].ReadingRate)
                    {
                        memberModel.ReadingScore = cousre_detail[0].ReadingRate;
                    }
                    if (memberModel.ReadingScore < 0)
                    {
                        memberModel.ReadingScore = 0;
                    }
                    member_classBll.Update(memberModel);//更新班级成员考试分数总值
                    break;
                case 2://discuss
                    objectBll = new Member_ClassUnitContentScheduleBLL();
                    model = objectBll.GetList("Delflag=0 and ClassId=" + classId + " and AccountId=" + accountId + " and UnitContent=" + objectId, "");
                    if (model.Count > 0)
                    {
                        if (add)
                            model[0].score = 1;
                        else
                            model[0].score = 0;
                        objectBll.Update(model[0]);//
                    }
                    total = unitContentBll.GetUnitCountByClassAndUnitType(classId, "3");//讨论类的单元活动数
                    if (total > 1)
                    {
                        if (add)
                            memberModel.DiscussScore = (memberModel.DiscussScore.HasValue ? memberModel.DiscussScore.Value : 0)
                                + (cousre_detail[0].DisscusRate / (total)).ToDouble();
                        else
                        {
                            if (memberModel.ReadingScore.HasValue && memberModel.ReadingScore.Value.ToInt() > 0)
                                memberModel.DiscussScore = memberModel.DiscussScore.Value
                                    - (cousre_detail[0].DisscusRate / (total)).ToDouble();
                        }
                    }
                    else
                    {
                        if (add)
                            memberModel.DiscussScore = cousre_detail[0].DisscusRate;
                        else
                            memberModel.DiscussScore = 0.0;
                    }

                    if (memberModel.DiscussScore > cousre_detail[0].DisscusRate)
                    {
                        memberModel.DiscussScore = cousre_detail[0].DisscusRate;
                    }
                    if (memberModel.DiscussScore < 0)
                    {
                        memberModel.DiscussScore = 0;
                    }
                    member_classBll.Update(memberModel);//更新班级成员考试分数总值
                    break;
                case 3://homework
                    #region

                    objectBll = new Course_UnitHomeWorkBLL();
                    model = objectBll.GetModel(objectId.Value, "");
                    model.Score = score;
                    model.ScoreCreater = SiteCache.Instance.ManagerId;
                    objectBll.Update(model);//更新结果表
                    total = unitContentBll.GetUnitCountByClassAndUnitType(classId, "4");//作业类的单元活动数
                    if (total > 1)
                    {
                        memberModel.HomeWorkScore = (memberModel.HomeWorkScore.HasValue ? memberModel.HomeWorkScore.Value : 0)
                           + (score * (cousre_detail[0].HomeWorkRate) / (total * 100)).ToDouble();
                    }
                    else
                    {
                        memberModel.HomeWorkScore = (score * (cousre_detail[0].HomeWorkRate) / (100)).ToDouble();
                    }

                    if (memberModel.HomeWorkScore > cousre_detail[0].HomeWorkRate)
                    {
                        memberModel.HomeWorkScore = cousre_detail[0].HomeWorkRate;
                    }
                    member_classBll.Update(memberModel);//更新班级成员作业分数总值
                    #endregion
                    break;
                case 4://question
                    #region

                    objectBll = new Member_ClassUnitContentScheduleBLL();
                    model = objectBll.GetModel(objectId.Value, "");
                    oldScore = model.score == null ? 0 : model.score;
                    model.score = score;
                    objectBll.Update(model);//更新班级成员测试分数总值
                    total = unitContentBll.GetUnitCountByClassAndUnitType(classId, "5");//测试类的单元活动数
                    if (add)//第一次打分
                    {
                        if (total > 1)
                        {
                            memberModel.TestingScore = (memberModel.TestingScore.HasValue ? memberModel.TestingScore.Value : 0)
                               + (score * (cousre_detail[0].QuestionRate) / (total * 100)).ToDouble();
                        }
                        else
                        {
                            memberModel.TestingScore = (score * (cousre_detail[0].QuestionRate) / (100)).ToDouble();
                        }
                    }
                    else//多次打分,重新计算
                    {
                        var contentList = DataTableToListHelper<Course_UnitContent>.ConvertToModel(unitContentBll.GetUnitByClassAndUnitType(classId, "5"));
                        if (contentList != null)
                        {
                            var scheduleBll = new Member_ClassUnitContentScheduleBLL();
                            double testscore = 0;
                            foreach (var item in contentList)
                            {
                                var scheduleModel = scheduleBll.GetList("Delflag=0 and ClassId=" + classId + " and AccountId=" + accountId + " AND UnitContent=" + item.Id, "");
                                if (scheduleModel != null && scheduleModel.Count > 0)
                                {
                                    if (scheduleModel.First().score.HasValue)
                                    {
                                        testscore += (scheduleModel.First().score.Value * (cousre_detail[0].QuestionRate) / (total * 100)).ToDouble();
                                    }
                                }
                            }
                            memberModel.TestingScore = testscore;
                        }
                    }
                    if (memberModel.TestingScore > cousre_detail[0].QuestionRate)
                    {
                        memberModel.TestingScore = cousre_detail[0].QuestionRate;
                    }
                    member_classBll.Update(memberModel);//更新班级成员测试分数总值
                    #endregion
                    break;
                case 5://examnation
                    #region

                    objectBll = new Member_ClassUnitContentScheduleBLL();
                    model = objectBll.GetModel(objectId.Value, "");
                    oldScore = model.score == null ? 0 : model.score;
                    model.score = score;
                    if (score >= 60)//考试大于等于60分算通过
                        memberModel.IsPass = true;
                    objectBll.Update(model);//更新班级成员考试分数总值
                    total = unitContentBll.GetUnitCountByClassAndUnitType(classId, "6");//考试类的单元活动数
                    if (total > 1)
                    {
                        memberModel.ExaminationScore = (memberModel.ExaminationScore.HasValue ? memberModel.ExaminationScore.Value : 0)
                            + (score * (cousre_detail[0].TestingRate) / (total * 100)).ToDouble();
                    }
                    else
                    {
                        memberModel.ExaminationScore = (score * (cousre_detail[0].TestingRate) / (100)).ToDouble();
                    }

                    if (memberModel.ExaminationScore > cousre_detail[0].TestingRate)
                    {
                        memberModel.ExaminationScore = cousre_detail[0].TestingRate;
                    }
                    member_classBll.Update(memberModel);//更新班级成员考试分数总值
                    #endregion
                    break;
                case 6://comment
                    #region
                    objectBll = new Member_ClassRegisterBLL();
                    model = objectBll.GetList(" Delflag=0 and ClassId=" + classId + " and PlanId=" + planId + " and AccountId=" + accountId, "")[0];
                    model.CommentScore = (score * (cousre_detail[0].CommentRate) / (total * 100)).ToDouble();
                    objectBll.Update(model);//更新班级成员评价分数总值
                    #endregion
                    break;
                default: break;
            }
        }
        /// <summary>
        /// 获取页面活动的公共方法
        /// </summary>
        /// <param name="bolNeedUpdateProgress">是否需要更新总进度</param>
        /// <returns></returns>
        private Course_UnitContent GetCourseUnitContentActivity(int TrainingId, int UnitContent, int ClassId, bool bolNeedUpdateProgress = true)
        {
            //获取所有的阅读信息
            var courseBll = new Course_UnitContentBLL();
            var DetailBll = new Traning_DetailBLL();
            var List_Course_UnitContent = new List<Course_UnitContent>();
            var Model_Course_UnitContent = new Course_UnitContent();
            var stbSqlWhere = new StringBuilder();
            var strOrderBy = "Sort";

            int iAccountId = 0, iUnitId = 0;
            iAccountId = Code.SiteCache.Instance.LoginInfo.UserId;

            stbSqlWhere.Append(" 1 = 1");
            if (TrainingId > 0)
                stbSqlWhere.AppendFormat(" AND Course_UnitDetail.TrainingId = {0}", TrainingId);
            if (UnitContent > 0)
                stbSqlWhere.AppendFormat(" AND Course_UnitContent.Id = {0}", UnitContent);

            List_Course_UnitContent = courseBll.GetListOther(stbSqlWhere.ToString(), strOrderBy);
            if (List_Course_UnitContent != null && List_Course_UnitContent.Count == 1)
                Model_Course_UnitContent = List_Course_UnitContent[0];

            //根据 TrainingId 获取 Title
            var Model_Traning_Detail = DetailBll.GetModel(TrainingId, string.Empty);

            ViewBag.TraningDetailTitle = Model_Traning_Detail.Title;
            ViewBag.UnitId = iUnitId = Model_Course_UnitContent.UnitId.Value;
            ViewBag.AccountId = iAccountId;
            ViewBag.ClassId = ClassId;
            ViewBag.TrainingId = TrainingId;
            ViewBag.UnitContent = UnitContent = Model_Course_UnitContent.Id;
            ViewBag.Model_Course_UnitContent = Model_Course_UnitContent;

            if (bolNeedUpdateProgress && List_Course_UnitContent != null && List_Course_UnitContent.Count > 0)
            {
                //更新总体进度
                this.UpdateOverallProgress(iUnitId, ClassId, TrainingId, iAccountId, UnitContent);
            }

            return Model_Course_UnitContent;
        }
        public ActionResult CourseActivityVideoEdit(int TrainingId, int UnitId)
        {
            //ViewBag.Title = "影音教材编辑";
            Course_DetailBLL bll_CourseDetail = new Course_DetailBLL();
            Course_UnitContentBLL bll = new Course_UnitContentBLL();

            //指定课程的课程ID
            ViewBag.TrainingId = TrainingId;
            //获取指定课程ID对应的课程单元信息
            ViewBag.TrainingInfo = bll_CourseDetail.GetTrainingInfoById(Convert.ToInt32(TrainingId));
            //获取影音教材Model
            ViewBag.ActivityVideoModel = bll.GetModel(Convert.ToInt32(UnitId), "Delflag = 0");

            return View();
        }
        /// <summary>
        /// 获取[结业考试]结果
        /// </summary>
        /// <param name="listOther"></param>
        /// <returns></returns>
        private Member_CourseContentTestAnswerResult GetLearnOnLineExamResult(List<Member_CourseContentTestAnswerOther> listResultOther, out int TrainingId)
        {
            var strVerson = string.Empty;
            int iUnitContent = 0, iClassId = 0, iAccountId = 0, iQuestionCnt = 0, iRightAnswer = 0, iWrongAnswer = 0, iTrainingId = 0;
            double dblScore = 0, dblTestTotalScore = 0;
            var bolResult = false;

            var unitContentBll = new Course_UnitContentBLL();
            var Model_ExamResult = new Member_CourseContentTestAnswerResult();//保存总分
            var Model_ExamAnswer = new Member_CourseContentTestAnswer();

            if (listResultOther.Count > 0)
            {
                iTrainingId = listResultOther[0].TrainingId;
                iClassId = listResultOther[0].ClassId;
                iAccountId = Code.SiteCache.Instance.LoginInfo.UserId;
                iUnitContent = listResultOther[0].UnitContentId;//一批题目的UnitContentId相同
            }

            TrainingId = iTrainingId;

            var List_Course_UnitTest = this.GetExamCourseUnitTest(iTrainingId);
            iQuestionCnt = List_Course_UnitTest.Count;//总题数
            strVerson = List_Course_UnitTest[0].Verson;
            foreach (var item in listResultOther)
            {
                var modelUnitTest = List_Course_UnitTest.Find(x => x.Id == item.Id);
                if (modelUnitTest.QTtype == 4)//问答题
                {
                    iRightAnswer++;
                }
                else
                {
                    if (item.Answer.Trim() == modelUnitTest.Answer.Trim())//答案正确
                    {
                        iRightAnswer++;
                        dblScore += modelUnitTest.Credit.Value;//用户得分
                    }
                    else//答案错误
                    {
                        iWrongAnswer++;
                    }
                    dblTestTotalScore += modelUnitTest.Credit.Value;//所有题目的总分数
                }
            }

            //获取学员是否过关
            var Model_Content = unitContentBll.GetModel(iUnitContent, string.Empty);
            bolResult = iRightAnswer >= Model_Content.PassLine;

            Model_ExamResult.Verson = strVerson;
            Model_ExamResult.UnitContent = iUnitContent;
            Model_ExamResult.ClassId = iClassId;
            Model_ExamResult.Score = dblScore;
            Model_ExamResult.QuestionCnt = iQuestionCnt;
            Model_ExamResult.RightAnswer = iRightAnswer;
            Model_ExamResult.WrongAnswer = iWrongAnswer;

            Model_ExamResult.Result = bolResult;
            Model_ExamResult.AccountId = iAccountId;
            Model_ExamResult.Delflag = false;
            Model_ExamResult.CreateDate = DateTime.Now;

            return Model_ExamResult;
        }
        public ActionResult DeleteCourseAtivity(int id)
        {
            Course_UnitContentBLL bll = new Course_UnitContentBLL();
            Member_ClassUnitContentScheduleBLL bll_Sch = new Member_ClassUnitContentScheduleBLL();

            if (bll.Delete(id) && bll_Sch.Delete(id))
            {
                return Json(new { Result = true, Msg = "删除成功!" }, JsonRequestBehavior.AllowGet);
            }
            else
            {
                return Json(new { Result = false, Msg = "删除失败!" }, JsonRequestBehavior.AllowGet);
            }
        }
        /*
         * 进度汇总逻辑:
         *
         * 1.用户每次学习课程时需要往 Member_ClassUnitContentSchedule 中插入数据,作为当前的章节小进度.
         * 2.当当前章节所有的课程学习结束,需要判断当前在章节是否学习结束;
         * 3.在修改章节进度和总进度时,需要重新验证所有的章节进度是否已完成(可能存在章节追加的情况).
         * 4.若当前章节全部学习结束,需要在总进度表中 Member_ClassRegister 更改CurrentSchedule(当前章节进度),TotalSchedule(总课程进度).
         *
         * 所用表:
            select * from Member_ClassRegister
            select * from Course_UnitContent  --1文本,2影音教材,3讨论,4作业 5测试,6结业考试
            select * from Member_ClassUnitContentSchedule
            select * from Course_Detail
            select * from Course_UnitDetail
         *
         * [课程]下 分 [章]下 分 [节]下 分 [活动]
         * 同时也可以在[章]下面没有节,只有[活动],所以需要获取章下面所有的活动
         */
        /// <summary>
        /// 更新总体进度
        /// </summary>
        /// <param name="iUnitId">当前[活动]所在[节]的ID</param>
        /// <param name="iClassId"></param>
        /// <param name="iTrainingId"></param>
        /// <param name="iAccountId"></param>
        /// <param name="iUnitContent"></param>
        private void UpdateOverallProgress(int iUnitId, int iClassId, int iTrainingId, int iAccountId, int iUnitContent)
        {
            var unitBll = new Course_UnitContentBLL();
            var detailBll = new Class_DetailBLL();
            var UnitDetailBll = new Course_UnitDetailBLL();
            var ClassRegisterBll = new Member_ClassRegisterBLL();
            var Member_ClassUnitContentSchedulebll = new Member_ClassUnitContentScheduleBLL();
            int iOverChapterCount = 0, iChapterTotalCount = 0;//完成的[章]的数量,当前课程需要学习的[章]总数,该[章]已完成的[节]的数量(该章的进度)

            //用户的在线学习模块都要插入一条数据到Member_ClassUnitContentSchedule,作为当前小章节的学习进度
            if (this.InsertMember_ClassUnitContentSchedule(iClassId, iTrainingId, iAccountId, iUnitContent))
            {
                var List_Course_UnitDetail = UnitDetailBll.GetList(" ParentId = 0 AND Display = 1 AND Delflag = 0 AND TrainingId = " + iTrainingId, string.Empty);
                iChapterTotalCount = List_Course_UnitDetail.Count;//当前课程学员需要完成学习的总章数

                foreach (var ChapterItem in List_Course_UnitDetail)
                {
                    bool bolResult = this.GetChapterProgress(ChapterItem.Id, iClassId, ChapterItem.TrainingId.Value, iAccountId);
                    if (bolResult)//当前[章]的进度
                    {
                        iOverChapterCount++;
                    }
                }
                //[Status] 1等待学校审核 2学校审核通过 3学校审核不通过 4开班机构审核通过 5开班机构审核不通过
                int iPlanId = Code.SiteCache.Instance.PlanId;
                string strWhere = string.Format(@" AccountId = {0} AND ClassId = {1} AND PlanId = {2} and TrainingId = {3} and Delflag = 0 AND Status = 4",
                    iAccountId, iClassId, iPlanId, iTrainingId);

                var List_Member_ClassRegister = ClassRegisterBll.GetList(strWhere, "CreateDate");
                if (List_Member_ClassRegister != null && List_Member_ClassRegister.Count == 1)
                {
                    var Model_Member_ClassRegister = List_Member_ClassRegister[0];

                    Model_Member_ClassRegister.CurrentSchedule = iOverChapterCount;//[章,节]完成数
                    Model_Member_ClassRegister.TotalSchedule = iChapterTotalCount;//课程总章,节数
                    Model_Member_ClassRegister.CreateDate = DateTime.Now;

                    bool bolResult = ClassRegisterBll.Update(Model_Member_ClassRegister);
                }
            }
        }
        public ActionResult DisplayCourseAtivity(int id)
        {
            Course_UnitContentBLL bll = new Course_UnitContentBLL();

            Course_UnitContent model = bll.GetModel(id, "Delflag = 0");

            //设置是否显示
            if (model.Display)
            {
                model.Display = false;
            }
            else
            {
                model.Display = true;
            }

            if (bll.Update(model))
            {
                return Json(new { Result = true, Display = model.Display }, JsonRequestBehavior.AllowGet);
            }
            else
            {
                return Json(new { Result = false, Display = model.Display }, JsonRequestBehavior.AllowGet);
            }
        }
        /// <summary>
        /// 在线学习-[单元测试]提交
        /// </summary>
        /// <returns></returns>
        public ActionResult LearnOnLineQuizEdit(List<Member_CourseContentAnswerOther> listOther)
        {
            string strVerson = string.Empty;
            int iClassId = 0, iAccountId = 0, iPlanId = 0, iResultId = 0, iUnitContent = 0, iTrainingId = 0, iQuestionCnt = 0, iRightCount = 0, iWrongCount = 0;
            double dblScoreTotal = 0, dblGetScore = 0, dblResultScore = 0;
            var stbSqlWhere = new StringBuilder();
            //获取 答题总数,答题正确的个数,答题错误的个数,结果
            iQuestionCnt = listOther.Count;//总题数
            bool bolResult = false;

            var unitQuesBll = new Course_UnitQuestionBLL();
            var CourseContentAnswerBll = new Member_CourseContentAnswerBLL();
            var unitBll = new Course_UnitContentBLL();
            var Member_ClassUnitContentSchedulebll = new Member_ClassUnitContentScheduleBLL();

            iAccountId = Code.SiteCache.Instance.LoginInfo.UserId;
            iPlanId = Code.SiteCache.Instance.PlanId;

            //获取[单元测试]总得分
            foreach (var item in listOther)
            {
                //获取该题目的正确答案
                var Model_Ques = unitQuesBll.GetModel(item.Id, string.Empty);
                if (!string.IsNullOrEmpty(item.Credits))
                {
                    double dblCre = 0;
                    double.TryParse(item.Credits, out dblCre);
                    dblScoreTotal += dblCre;//获取所有题目的答案的总得分

                    if (item.Answer == Model_Ques.Answer)
                    {
                        iRightCount++;//正确答题数
                        dblResultScore += dblCre;//用户得分
                    }
                    else
                        iWrongCount++;//错误答题数

                    strVerson = item.Verson;//题目版本号,一批题目的版本号都一样
                    iUnitContent = item.UnitContentId;//一批题目的UnitContentId都一样
                    iClassId = item.ClassId;//一批题目的ClassId都一样
                    iTrainingId = item.TrainingId;//一批题目的TrainingId都一样
                }
            }

            //若课程已结束禁止操作
            if (this.GetCourseIsOver(iClassId, iTrainingId, iAccountId))
                return Json(new { Result = true, Msg = "提交失败.当前课程已结束,不能执行该操作!" }, JsonRequestBehavior.AllowGet);
            ////查看当前活动是否已打分,若已打分则禁止操作[待删除.打分操作为自动打分,不作为判断条件]
            //if (this.GetActivityScore(iClassId, iTrainingId, iAccountId, iUnitContent))
            //    return Json(new { Result = false, Msg = "提交失败.当前活动已打分,不能执行该操作!" }, JsonRequestBehavior.AllowGet);

            //提交时,判断其剩余考试次数
            stbSqlWhere.AppendFormat(@"UnitContent = {0} AND ClassId = {1} AND AccountId = {2} AND Delflag = 0", iUnitContent, iClassId, iAccountId);
            var ResultBll = new Member_ContentAnswerResultBLL();
            var List_Member_ContentAnswerResult = ResultBll.GetList(stbSqlWhere.ToString());
            int iRowsCount = List_Member_ContentAnswerResult.Tables[0].Rows.Count;//获取已考试的次数

            var model = unitBll.GetModel(iUnitContent, string.Empty);
            if (iRowsCount >= model.TestCnt && model.TestCnt != -1)
            {
                return Json(new { Result = false, Msg = "试题提交失败。你的单元测试 - [ " + model.Title + " ] 剩余答题次数不足!" }, JsonRequestBehavior.AllowGet);
            }

            var ResultModel = new Member_ContentAnswerResult();
            ResultModel.Verson = strVerson;
            ResultModel.UnitContent = iUnitContent;
            ResultModel.ClassId = iClassId;
            ResultModel.Score = decimal.Parse(dblResultScore.ToString());//用户的答题得分
            ResultModel.QuestionCnt = iQuestionCnt;
            ResultModel.RightAnswer = iRightCount;
            ResultModel.WrongAnswer = iWrongCount;
            ResultModel.Result = bolResult;
            ResultModel.AccountId = iAccountId;
            ResultModel.Delflag = false;
            ResultModel.CreateDate = DateTime.Now;

            //将数据插入到总分表
            bool bolRes = this.InsertMember_ContentAnswerResult(ResultModel, out iResultId);

            if (bolRes)
            {
                foreach (var itemQues in listOther)
                {
                    //获取该题目的正确答案
                    var Model_Ques = unitQuesBll.GetModel(itemQues.Id, string.Empty);

                    double dblGetCreTmp = 0;
                    double.TryParse(itemQues.Credits, out dblGetCreTmp);

                    //将用户的[单元测试]答案保存
                    Member_CourseContentAnswer Model_Answer = new Member_CourseContentAnswer();
                    Model_Answer.AnswerResult = iResultId;
                    Model_Answer.Question = itemQues.Id;
                    Model_Answer.Answer = itemQues.Answer;
                    Model_Answer.Result = Model_Ques.Answer == itemQues.Answer;//比对正确答案
                    dblGetScore += Model_Ques.Answer == itemQues.Answer ? dblGetCreTmp : 0;//当前学员答题得分
                    Model_Answer.AccountId = iAccountId;
                    Model_Answer.Delflag = false;
                    Model_Answer.CreateDate = DateTime.Now;

                    //将数据插入到学员答题内容表,用户的[课程评价]答案保存
                    bolRes = CourseContentAnswerBll.Add(Model_Answer);
                }
            }

            if (bolRes)
            {
                //更新总进度
                this.UpdateOverallProgress(model.UnitId.Value, iClassId, iTrainingId, iAccountId, iUnitContent);
                //查询该学员的[单元测试]的成绩中最大分数的数据对象
                var Model_ActivityMaxScore = this.GetActivityMaxScore(iClassId, iTrainingId, iAccountId, iUnitContent);
                if (Model_ActivityMaxScore != null)
                {
                    var strWhere_Activity = string.Format(@" Status = 1 AND Delflag = 0 AND ClassId = {0} AND TrainingId = {1} AND AccountId = {2} AND UnitContent IN ({3})",
                        iClassId, iTrainingId, iAccountId, iUnitContent);
                    var List_ClassUnitContentSchedule = Member_ClassUnitContentSchedulebll.GetList(strWhere_Activity, "Id");
                    if (List_ClassUnitContentSchedule != null && List_ClassUnitContentSchedule.Count == 1)
                    {
                        var Model_ClassUnitContentSchedule = List_ClassUnitContentSchedule[0];
                        ScoreSetHelper.ScoreSet(Model_ClassUnitContentSchedule.Id, 4, iClassId, iPlanId, iAccountId, Model_ActivityMaxScore.Score.ToDouble(), Model_ClassUnitContentSchedule.score == null);
                    }
                }

                return Json(new { Result = true, Msg = "单元测试提交成功!", TotalScore = dblGetScore }, JsonRequestBehavior.AllowGet);
            }
            else
            {
                return Json(new { Result = false, Msg = "单元测试提交失败!" }, JsonRequestBehavior.AllowGet);
            }
        }
        public ActionResult EditCourseAtivity(Course_UnitContent model)
        {
            Course_UnitContentBLL bll = new Course_UnitContentBLL();

            model.Display = true;

            if (bll.Update(model))
            {
                return Json(new { Result = true, UnitContent = model.Id, Msg = "修改成功!" }, JsonRequestBehavior.AllowGet);
            }
            else
            {
                return Json(new { Result = false, UnitContent = model.Id, Msg = "修改失败!" }, JsonRequestBehavior.AllowGet);
            }
        }
        //作业列表
        public ActionResult ClassTask(string classId, string unit, string status, int pageIndex = 1)
        {
            var param_classId = Dianda.Common.QueryString.Decrypt(classId).ToInt();

            IList<Member_ClassRegister> list = new List<Member_ClassRegister> { };

            var TrainingId = new Class_DetailBLL().GetModel(param_classId).TraningId;

            //作业单元
            var classUnit = new Course_UnitContentBLL().GetList(" Display=1 and  UnitType=4 and delflag=0 AND UnitId IN (SELECT id FROM dbo.Course_UnitDetail WHERE TrainingId=" + TrainingId + ")", "")
                ;
            var unitList = from c in classUnit select c;
            ViewBag.UnitList = unitList;

            int totalPage = 0;

            string param_status = "";//状态

            switch (status)
            {
                case "-1"://未提交
                    param_status = @" and not EXISTS ( SELECT 1
                     FROM   dbo.Course_UnitHomeWork cw
                            JOIN dbo.Course_UnitContent cu ON cw.UnitContent = cu.Id
                     WHERE  m.AccountId = cw.AccountId
                            AND cw.ClassId = m.ClassId
                            AND cu.Id= {1}  and cw.Delflag=0)";
                    break;
                case "0"://单元未得分
                    param_status = @" AND  EXISTS ( SELECT 1
                     FROM   dbo.Course_UnitHomeWork cw
                            JOIN dbo.Course_UnitContent cu ON cw.UnitContent = cu.Id
                     WHERE  m.AccountId = cw.AccountId
                            AND cw.ClassId = m.ClassId
                            AND cu.Id= {1} AND isnull(cw.Score,0)=0 and cw.Delflag=0)

                            AND not EXISTS ( SELECT 1
                     FROM   dbo.Course_UnitHomeWork cw
                            JOIN dbo.Course_UnitContent cu ON cw.UnitContent = cu.Id
                     WHERE  m.AccountId = cw.AccountId
                            AND cw.ClassId = m.ClassId
                            AND cu.Id= {1} AND isnull(cw.Score,0)!=0 and cw.Delflag=0)";
                    break;
                case "1"://单元已得分
                    param_status = @" AND  EXISTS ( SELECT 1
                     FROM   dbo.Course_UnitHomeWork cw
                            JOIN dbo.Course_UnitContent cu ON cw.UnitContent = cu.Id
                     WHERE  m.AccountId = cw.AccountId
                            AND cw.ClassId = m.ClassId
                            AND cu.Id= {1} AND isnull(cw.Score,0)!=0 and cw.Delflag=0)";
                    break;
                default://全部
                    break;
            }

            var Course_UnitContentBLL = new Course_UnitContentBLL();
            StringBuilder sbSql = new StringBuilder();
            if (string.IsNullOrEmpty(unit))
            {
                foreach (var item in unitList)
                {
                    sbSql.AppendFormat(@"SELECT  m.* ,
                '{1}' as cqId,
                homeworkId = ( SELECT hw.id
                             FROM   dbo.Course_UnitHomeWork hw
                             WHERE  hw.AccountId = m.AccountId
                                    AND hw.ClassId = {0}
                                    AND hw.UnitContent = {1} and hw.Delflag=0
                           )
            FROM    dbo.Member_ClassRegister m
                LEFT JOIN dbo.Class_Detail d ON m.ClassId = d.Id
                LEFT JOIN dbo.Course_UnitDetail ud ON ud.TrainingId = d.TraningId
                LEFT JOIN Course_UnitContent uc ON uc.UnitId = ud.Id
                LEFT JOIN dbo.Member_Account ma ON m.AccountId = ma.Id
            WHERE   m.status=4 AND m.Delflag=0 and m.ClassId = {0}
                AND uc.id = {1} " + param_status, param_classId, item.Id);
                    sbSql.Append(" union ");
                }
            }
            else
            {
                sbSql.AppendFormat(@"SELECT  m.* ,
                '{1}' as cqId,
                homeworkId = ( SELECT hw.id
                             FROM   dbo.Course_UnitHomeWork hw
                             WHERE  hw.AccountId = m.AccountId
                                    AND hw.ClassId = {0}
                                    AND hw.UnitContent = {1} and hw.Delflag=0
                           )
            FROM    dbo.Member_ClassRegister m
                LEFT JOIN dbo.Class_Detail d ON m.ClassId = d.Id
                LEFT JOIN dbo.Course_UnitDetail ud ON ud.TrainingId = d.TraningId
                LEFT JOIN Course_UnitContent uc ON uc.UnitId = ud.Id
                LEFT JOIN dbo.Member_Account ma ON m.AccountId = ma.Id
            WHERE m.status=4 AND m.Delflag=0 and  m.ClassId = {0}
                AND uc.id = {1}" + param_status, param_classId, unit);
            }
            if (sbSql.Length > 0)
            {
                if (sbSql.ToString().Contains("union"))
                {
                    sbSql = sbSql.Remove(sbSql.ToString().LastIndexOf("union"), 5);
                }
                list = DataTableToListHelper<Dianda.AP.Model.Member_ClassRegister>
                                     .ConvertToModel(PagingQueryBll.GetPagingDataTable("(" + sbSql.ToString() + ") as tmp", " 1=1 ", "CreateDate", pageIndex, out totalPage, @"*"));
            }
            ViewBag.classId = classId;
            ViewBag.param_classId = param_classId;
            //分页
            ViewBag.pageIndex = pageIndex;
            ViewBag.totalPage = totalPage;
            ViewBag.basecount = 10;

            var classModel = new Class_DetailBLL().GetModel(param_classId);
            if (classModel != null)
            {
                ViewBag.CourseName = new Traning_DetailBLL().GetModel(classModel.TraningId, "").Title;
                ViewBag.ClassName = classModel.Title;
                ViewBag.planId = classModel.PlanId;
            }

            return View(list);
        }
        /// <summary>
        /// 获取页面活动的公共方法
        /// </summary>
        /// <returns></returns>
        private Course_UnitContent GetCourseUnitContentActivity()
        {
            //获取所有的阅读信息
            var courseBll = new Course_UnitContentBLL();
            var DetailBll = new Traning_DetailBLL();
            var List_Course_UnitContent = new List<Course_UnitContent>();
            var Model_Course_UnitContent = new Course_UnitContent();
            var stbSqlWhere = new StringBuilder();
            var strOrderBy = "Sort";

            int iClassId = 0, iTrainingId = 0, iAccountId = 0, iUnitContent = 0, iUnitId = 0;
            int.TryParse(Convert.ToString(Request["TrainingId"]) == "" ? "0" : QueryString.Decrypt(Request["TrainingId"]), out iTrainingId);
            int.TryParse(Convert.ToString(Request["UnitContent"]) == "" ? "0" : QueryString.Decrypt(Request["UnitContent"]), out iUnitContent);

            stbSqlWhere.Append(" 1 = 1 ");
            if (iTrainingId > 0)
                stbSqlWhere.AppendFormat("AND Course_UnitDetail.TrainingId = {0}", iTrainingId);
            if (iTrainingId > 0)
                stbSqlWhere.AppendFormat("AND Course_UnitContent.Id = {0}", iUnitContent);

            List_Course_UnitContent = courseBll.GetListOther(stbSqlWhere.ToString(), strOrderBy);
            if (List_Course_UnitContent != null && List_Course_UnitContent.Count == 1)
                Model_Course_UnitContent = List_Course_UnitContent[0];
            //获取当前登录用户的班级和ID

            iAccountId = Code.SiteCache.Instance.LoginInfo.UserId;

            //根据 TrainingId 获取 Title
            var Model_Traning_Detail = DetailBll.GetModel(iTrainingId, string.Empty);

            ViewBag.TraningDetailTitle = Model_Traning_Detail.Title;
            ViewBag.AccountId = iAccountId;
            ViewBag.TrainingId = iTrainingId;
            ViewBag.UnitContent = iUnitContent = Model_Course_UnitContent.Id;
            ViewBag.Model_Course_UnitContent = Model_Course_UnitContent;

            return Model_Course_UnitContent;
        }