示例#1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="LearnVideoInforId"></param>
        /// <param name="allallduration">视频总时长</param>
        /// <param name="Co_CourseResourceId"></param>
        /// <param name="tt">视频当前播放进度</param>
        /// <returns></returns>
        public JsonResult FUpdateProgress(int LearnId, string allallduration, string tt, int ResourseId, int UserId)
        {
            double Progress = Convert.ToDouble(tt) / Convert.ToDouble(allallduration) * 100;

            var CpaLearnStatus = ICpaLearnStatusBL.GetCl_CpaLearnStatusByLearnId(LearnId, UserId);
            var course         = CoCourseBL.GetCo_Course(CpaLearnStatus.CourseID);

            //var Sys_ParamConfig = AllSystemConfigs.Find(p => p.ConfigType == 25);//读取参数配置 观看课程时长达到视频总时长的

            var learn = IClLearnVideoInforBL.Get(LearnId, ResourseId);

            if (learn.Progress < Convert.ToDecimal(Progress))
            {
                IClLearnVideoInforBL.UpdateProgress(Convert.ToDecimal(Progress), LearnId, ResourseId);
            }

            var courseResource = ICoCourseResourceBL.GetVedioList(CpaLearnStatus.CourseID, UserId);
            //var hege = courseResource.Where(p => p.Progress >= Convert.ToDecimal(Sys_ParamConfig.ConfigValue)).ToList();
            var hege = courseResource.Where(p => p.Progress >= Convert.ToDecimal(course.ReturnTimes)).ToList();

            if (courseResource.Count == hege.Count)
            {
                if (course.IsPing == 0 && course.IsTest == 0)
                {
                    if (CpaLearnStatus.Progress == 0)
                    {
                        ICpaLearnStatusBL.UpdateGetCl_CpaLearnStatusByCourseId(CpaLearnStatus.CourseID, UserId, course.CourseLength, 1);

                        if (course.IsCPA == 1)
                        {
                            Cl_CpaLearnStatus cls = new Cl_CpaLearnStatus();
                            cls.CourseID   = course.Id;
                            cls.UserID     = UserId;
                            cls.IsAttFlag  = 0;
                            cls.Progress   = 0;
                            cls.LearnTimes = 0;
                            if (course.IsMust == 1)
                            {
                                cls.GetLength = course.CourseLength * Convert.ToDecimal(0.5);
                            }
                            if (course.IsMust == 0)
                            {
                                cls.GetLength = course.CourseLength;
                            }
                            cls.CpaFlag     = 2;
                            cls.GradeStatus = 1;
                            cls.IsPass      = 1;

                            ICpaLearnStatusBL.SubscribeCPALearnStatus(cls);
                        }
                    }
                }
            }


            return(Json(new
            {
                result = 1
            }, JsonRequestBehavior.AllowGet));
        }
示例#2
0
 public void SubscribeCPA(Cl_CpaLearnStatus model)
 {
     using (IDbConnection conn = OpenConnection())
     {
         const string sqlwhere = @"insert into Cl_CpaLearnStatus( CourseId,UserId,CpaFlag,LastUpdateTime) values (@CourseId,@UserId,1,getdate())";
         var          param    = new
         {
             model.CourseID,
             model.UserID,
         };
         decimal id = conn.Query <decimal>(sqlwhere, param).FirstOrDefault();
         model.Id = decimal.ToInt32(id);
     }
 }
示例#3
0
        /// <summary>
        /// 修复数据
        /// </summary>
        public void FInsertNewListCpa()
        {
            var list = _cpaLearnStatusDb.NewGetList(@"
                    select 
		Cl_CpaLearnStatus.Id 
		,Cl_CpaLearnStatus.CourseID
		,Cl_CpaLearnStatus.UserID
		,Cl_CpaLearnStatus.IsAttFlag
		,Cl_CpaLearnStatus.IsPass
		,Cl_CpaLearnStatus.Progress
		,Cl_CpaLearnStatus.LearnTimes
		,Cl_CpaLearnStatus.GetLength
		,Cl_CpaLearnStatus.LastUpdateTime
		,Cl_CpaLearnStatus.CpaFlag
		,Cl_CpaLearnStatus.GradeStatus
    from Cl_CpaLearnStatus 
              left join dbo.Co_Course on Cl_CpaLearnStatus.CourseId=Co_Course.Id
               where Co_Course.Way=2 and Co_Course.IsCPA=1 and Cl_CpaLearnStatus.[CpaFlag] in(0,2) and Co_Course.CourseFrom=2	   
                order by Cl_CpaLearnStatus.UserId 
                
            ");

            var iscpa = list.Where(p => p.CpaFlag == 2).ToList();

            foreach (var item in list)
            {
                Cl_CpaLearnStatus t = null;

                var a = list.Where(p => p.CourseID == item.CourseID && p.UserID == item.UserID).ToList();
                if (a.Count < 2)
                {
                    if (a.Any(p => p.CpaFlag == 2))
                    {
                        t            = new Cl_CpaLearnStatus();
                        item.CpaFlag = 0;
                        _cpaLearnStatusDb.UpdateCPALearnStatus(item);


                        Cl_CpaLearnStatus model = item;
                        model.CpaFlag = 2;
                        _cpaLearnStatusDb.SubscribeCPALearnStatus(model);
                    }
                }
            }
        }
示例#4
0
 /// <summary>
 /// 修改
 /// </summary>
 /// <param name="model">实体</param>
 /// <returns>执行结果</returns>
 public bool UpdateCPALearnStatus(Cl_CpaLearnStatus model)
 {
     using (IDbConnection conn = OpenConnection())
     {
         const string sqlwhere = @"Update Cl_CpaLearnStatus SET IsAttFlag=@IsAttFlag,IsPass = @IsPass,Progress = @Progress,LearnTimes = @LearnTimes,GetLength = @GetLength,LastUpdateTime = @LastUpdateTime,CpaFlag = @CpaFlag,GradeStatus = @GradeStatus WHERE Id=@Id";
         var          param    = new
         {
             model.IsAttFlag,
             model.IsPass,
             model.Progress,
             model.LearnTimes,
             model.GetLength,
             LastUpdateTime = DateTime.Now,
             model.CpaFlag,
             model.GradeStatus,
             model.Id
         };
         int result = conn.Execute(sqlwhere, param);
         return(result > 0);
     }
 }
示例#5
0
        public void SubscribeCPALearnStatus(Cl_CpaLearnStatus model)
        {
            using (IDbConnection conn = OpenConnection())
            {
                const string sqlwhere =
                    @"insert into Cl_CpaLearnStatus( CourseId,UserId,IsAttFlag,IsPass,Progress,LearnTimes,GetLength,LastUpdateTime,CpaFlag,GradeStatus) 
                      values (@CourseId,@UserId,@IsAttFlag,@IsPass,@Progress,@LearnTimes,@GetLength,getdate(),@CpaFlag,@GradeStatus);SELECT @@IDENTITY AS ID";
                var param = new
                {
                    model.CourseID,
                    model.UserID,
                    model.IsAttFlag,
                    model.IsPass,
                    model.Progress,
                    model.LearnTimes,
                    model.GetLength,
                    model.CpaFlag,
                    model.GradeStatus
                };

                dynamic list = conn.Query <dynamic>(sqlwhere, param).FirstOrDefault();
                model.Id = decimal.ToInt32(list.ID);
            }
        }
示例#6
0
        /// <summary>
        /// 考勤结束计算学时
        /// </summary>
        /// <param name="CourseId"></param>
        /// <param name="userid"></param>
        public void UpScore(int CourseId, int userid, DateTime starttime, DateTime endtime)
        {
            decimal         GetScore      = 0;
            decimal         AttLessLength = 0;
            decimal         LessLength    = 0;
            Co_Course       coUser        = AttDB.GetCoAndUser(CourseId, userid);
            Cl_Attendce     attmodel      = clAttDB.GetCl_Attendce(CourseId, userid);
            Sys_ParamConfig param         = paramConfigDB.GetSys_ParamConfig(5);
            //Sys_ParamConfig param1 = paramConfigDB.GetSys_ParamConfig(24);
            //违纪学时配置
            var configstr = param.ConfigValue.ToString();
            //课程学时比例配置
            var configstr1 = coUser.CourseLengthDistribute;
            var cstr1      = configstr1.Split(';');
            //违纪学时组装配置集合
            var configList = new List <TempConfig>();

            foreach (var constr in configstr.Split(';'))
            {
                if (constr != "")
                {
                    var str = constr.Split(',');
                    configList.Add(new TempConfig
                    {
                        EndMinite   = Convert.ToInt32(str[2]),
                        Percent     = Convert.ToInt32(str[3]),
                        StartMinite = Convert.ToInt32(str[1]),
                        Type        = Convert.ToInt32(str[0])
                    });
                }
            }
            //计算违纪学时
            if (coUser.AttFlag == 1 && starttime.Year != 2050)
            {
                LessLength = GetLessLength(configList, coUser.AttFlag, coUser.StartTime, coUser.EndTime, starttime, endtime, coUser.CourseLength);
            }
            else if (coUser.AttFlag == 2 && endtime.Year != 2000)
            {
                LessLength = GetLessLength(configList, coUser.AttFlag, coUser.StartTime, coUser.EndTime, starttime, endtime, coUser.CourseLength);
            }
            else if (coUser.AttFlag == 3 && (starttime.Year != 2050 || endtime.Year != 2000))
            {
                LessLength = GetLessLength(configList, coUser.AttFlag, coUser.StartTime, coUser.EndTime, starttime, endtime, coUser.CourseLength);
            }
            string         whereStr = string.Format(" where CourseId={0} and UserId={1}", CourseId, userid);
            Cl_CourseOrder Comodel  = CoDB.Getmodel(whereStr);

            //计算课程总学时,违纪学时
            //根据课程编号判断是否第一次学习
            if (AttDB.ExistAtts(CourseId, userid))
            {
                if (coUser.AttFlag == 1 && starttime.Year == 2050)
                {
                    GetScore      = 0;
                    AttLessLength = 0;
                }
                else if (coUser.AttFlag == 2 && endtime.Year == 2000)
                {
                    GetScore      = 0;
                    AttLessLength = 0;
                }
                else if (coUser.AttFlag == 3 && starttime.Year == 2050 && endtime.Year == 2000)
                {
                    GetScore      = 0;
                    AttLessLength = 0;
                }
                else
                {
                    //判断是否有课后评估
                    if (coUser.IsTest == 0 && coUser.IsPing == 0)
                    {
                        GetScore      = coUser.CourseLength - LessLength;
                        AttLessLength = 0 - LessLength;
                    }
                    else
                    {
                        decimal attLength = coUser.CourseLength * (Convert.ToDecimal(cstr1[0])) / 100;
                        GetScore      = attLength - LessLength;
                        GetScore      = Math.Round(GetScore, 2, MidpointRounding.AwayFromZero);
                        AttLessLength = 0 - LessLength;
                    }
                }
                //折算CPA学时
                if (coUser.Way == 1 && coUser.IsCPA == 1)
                {
                    if (Comodel != null && Comodel.AttFlag == 0)
                    {
                        Cl_CpaLearnStatus CPAmodel = cpastatDB.GetCl_CpaLearnStatusByCourseId(CourseId, userid);

                        if (CPAmodel == null)
                        {
                            CPAmodel            = new Cl_CpaLearnStatus();
                            CPAmodel.CourseID   = CourseId;
                            CPAmodel.UserID     = userid;
                            CPAmodel.IsAttFlag  = 0;
                            CPAmodel.IsPass     = 1;
                            CPAmodel.Progress   = 0;
                            CPAmodel.LearnTimes = 0;
                            if (coUser.IsMust == 1)
                            {
                                CPAmodel.GetLength = Math.Round((GetScore * 50 / 100), 2, MidpointRounding.AwayFromZero);
                            }
                            else
                            {
                                CPAmodel.GetLength = GetScore;
                            }
                            CPAmodel.CpaFlag     = 2;
                            CPAmodel.GradeStatus = 1;
                            cpastatDB.SubscribeCPALearnStatus(CPAmodel);
                        }
                        else
                        {
                            CPAmodel.IsAttFlag  = 0;
                            CPAmodel.IsPass     = 1;
                            CPAmodel.Progress   = 0;
                            CPAmodel.LearnTimes = 0;
                            if (coUser.IsMust == 1)
                            {
                                decimal linshi = Convert.ToDecimal((CPAmodel.GetLength * 2) - Comodel.AttScore + GetScore);
                                CPAmodel.GetLength = Math.Round((linshi * 50 / 100), 2, MidpointRounding.AwayFromZero);
                            }
                            else
                            {
                                CPAmodel.GetLength = (CPAmodel.GetLength - Comodel.AttScore) + GetScore;
                            }

                            CPAmodel.CpaFlag     = 2;
                            CPAmodel.GradeStatus = 1;
                            cpastatDB.UpdateCPALearnStatus(CPAmodel);
                        }
                    }
                }
            }
            else
            {
                GetScore      = 0;
                AttLessLength = 0;
            }

            if (Comodel != null && Comodel.AttFlag == 0)
            {
                Comodel.GetScore = GetScore + (Comodel.GetScore - Comodel.AttScore);
                Comodel.AttScore = GetScore;
                CoDB.Update(Comodel);
            }
            if (attmodel != null)
            {
                if (Comodel != null && Comodel.AttFlag == 0)
                {
                    attmodel.LessLength = AttLessLength;
                    clAttDB.UpdateAttendce(attmodel);
                }
            }
        }
示例#7
0
 public void  SubscribeCPALearnStatus(Cl_CpaLearnStatus model)
 {
     _cpaLearnStatusDb.SubscribeCPALearnStatus(model);
 }
示例#8
0
 public bool UpdateCPALearnStatusByModel(Cl_CpaLearnStatus model)
 {
     return(_cpaLearnStatusDb.UpdateCPALearnStatus(model));
 }
示例#9
0
        /// <summary>
        ///     保存学员答案
        /// </summary>
        /// <param name="form">答案</param>
        /// <param name="euid">学员考试ID</param>
        /// <param name="submitType">1:暂存;2:提交</param>
        /// <param name="pecent">是否百分制(0:是;1:否)</param>
        /// <param name="passScore">及格线</param>
        /// 0为考试试卷1为课程下试卷
        /// <returns></returns>
        public JsonResult SubmitStudentAnswer(FormCollection form, int euid = 0, int submitType = 1, int pecent = 0,
                                              int passScore = 0, int courseType = 0)
        {
            string answer  = form["userAnswer"];    //答案
            string quScore = form["questionScore"]; //试题分值
            string quOrder = form["questionOrder"]; //试题题序

            if (answer == "" || quScore == "" || quOrder == "")
            {
                return(Json(new { result = 0 }, JsonRequestBehavior.AllowGet));
            }

            //tbExamSendStudent examUser = ExamTestBL.GetExamUser(euid);

            tbExamSendStudent examUser = null;
            tbExamSendStudent student  = null;

            if (courseType == 0)
            {
                examUser = ExamTestBL.GetExamUser(euid);
            }
            else
            {
                //var  student= ExamTestBL.GetExamUser(euid);
                student  = ExamTestBL.GetExamUser(euid);
                examUser = ExaminationBL.GetSingletbExamSendStudentByCourseIdAndUserId(student.RelationID, CurrentUser.UserId, student.SourceType);
                //if (student.SourceType == 1)
                //{
                //    examUser = ExaminationBL.GetSingletbExamSendStudentByCourseIdAndUserId(student.RelationID, CurrentUser.UserId,1);
                //}
                //else
                //{
                //    examUser = ExaminationBL.GetSingletbExamSendStudentByCourseIdAndUserId(student.RelationID, CurrentUser.UserId, 2);
                //}
            }

            var oldPaperScore = examUser.StudentAnswerList; //.Sum(p => p.GetScore);

            var pass         = 0;                           //0没通过,1通过
            var nopassnumber = 0;

            var dicAnswer = new Dictionary <int, string>();

            answer.Split(new[] { "**!!!**" }, StringSplitOptions.None).ToList().ForEach(p =>
            {
                string[] arr = p.Split(new[] { "!!***!!" }, StringSplitOptions.None);
                dicAnswer.Add(arr[0].StringToInt32(), arr[1]);
            });

            var dicScore = new Dictionary <int, int>();

            quScore.Split(';').ToList().ForEach(p =>
            {
                string[] arr = p.Split(',');
                dicScore.Add(arr[0].StringToInt32(), arr[1].StringToInt32());
            });

            var dicOrder = new Dictionary <int, int>();

            quOrder.Split(';').ToList().ForEach(p =>
            {
                string[] arr = p.Split(',');
                dicOrder.Add(arr[0].StringToInt32(), arr[1].StringToInt32());
            });

            List <tbQuestion> qulist = ExamTestBL.GetQuestionList(dicAnswer.Keys.ToList());

            examUser.StudentAnswerList = new List <ReStudentExamAnswer>();

            //int NowSum = 0;//记录当前分数

            //循环学员答案
            foreach (var o in dicAnswer)
            {
                tbQuestion qu = qulist.FirstOrDefault(p => p._id == o.Key); //试题
                if (qu != null)
                {
                    int score = submitType == 2 ? GetScore(qu, o.Value, dicScore[o.Key]) : 0;
                    examUser.StudentAnswerList.Add(new ReStudentExamAnswer
                    {
                        DoneFlag = o.Value == "" ? 0 : 1,
                        Evlution = "",
                        GetScore = score,
                        Answer   = o.Value,
                        Qid      = o.Key,
                        QType    = qu.QuestionType,
                        Order    = dicOrder[o.Key],
                        Score    = dicScore[o.Key]
                    });
                    // NowSum += score;
                }
            }
            if (submitType == 2)
            {
                examUser.DoExamStatus = 2;
                int totalScore = dicScore.Values.Sum();                                       //总分
                examUser.PaperScore = pecent == 1 ? passScore : totalScore * passScore / 100; //考试通过的基线
                int userScore = examUser.StudentAnswerList.Sum(p => p.GetScore);              //考生得分
                if (pecent == 0)
                {
                    examUser.IsPass = userScore * 100 / totalScore >= passScore ? 1 : 0;
                }
                else
                {
                    examUser.IsPass = userScore >= passScore ? 1 : 0;
                }
            }

            //当1的时候是课程下的考试
            if (examUser.SourceType == 1)
            //if(courseType==1)
            {
                //var student = ExamTestBL.GetExamUser(euid);
                //查找这门课程对应的通过线和考试次数
                var CoCoursePaper = ICoCoursePaperBL.GetCo_CourseMainPaper(student.RelationID);
                //查找课程信息 用于查找该课程的学时
                var course = ICourseBl.GetCo_Course(student.RelationID);
                //查找试卷总分
                var exampaper = ExampaperBL.GetExampaper(CoCoursePaper.PaperId);


                if (IAttendceBL.ExistAtts(course.Id, CurrentUser.UserId))
                {
                    //获取这个人预定信息 因为集中课程学时是走一步算一步 获取已经获得的学时
                    var courseorder = CourseOrderBL.GetCourseById(student.RelationID, CurrentUser.UserId);

                    //如果当前考试分数大于上一次考的分数则修改, 如果小则还是记录以前的分数
                    int fenshju = examUser.StudentAnswerList.Sum(p => p.GetScore);
                    //int olderfenshuju=
                    if (fenshju > oldPaperScore.Sum(p => p.GetScore))
                    {
                        //examUser.PaperScore = fenshju;
                        ExamTestBL.SaveExamUser(examUser);
                    }
                    else
                    {
                        if (oldPaperScore.Count != 0)  // 如果第一次没过就记录当前选项
                        {
                            examUser.StudentAnswerList = oldPaperScore;
                        }
                        ExamTestBL.SaveExamUser(examUser);
                    }

                    //var xueshi = AllSystemConfigs.Find(p => p.ConfigType == 24);
                    var xueshi     = course.CourseLengthDistribute;
                    var aa         = examUser.StudentAnswerList.Sum(p => p.GetScore);
                    var tongguofen = (exampaper.ExampaperScore * CoCoursePaper.LevelScore) / 100;
                    //var aa = ((double)examUser.StudentAnswerList.Sum(p => p.GetScore) / (double)exampaper.ExampaperScore)*100;

                    //考试没有超过通线 记录课后评估
                    //if ((int)aa < CoCoursePaper.LevelScore)
                    nopassnumber = Convert.ToInt32(CoCoursePaper.TestTimes) - student.TestTimes;
                    if ((int)aa < (int)tongguofen)
                    {
                        pass = 0;
                        //考试不过则不做任何操作
                        if (examUser.Number == 0)
                        {
                            //double afterlenght = (double) Convert.ToInt32(xueshi.ConfigValue.Split(';')[0])/100 +
                            //                        (double) Convert.ToInt32(xueshi.ConfigValue.Split(';')[2])/100;

                            ////获取考试不过的百分比
                            //decimal forlenght = course.CourseLength*Convert.ToDecimal(afterlenght);

                            ////加上已得分数
                            //decimal tt = courseorder.GetScore  + forlenght;
                            ////PassStatus;1:通过;2:不通过;LearnStatus: 1:进行中;2:已完成
                            //CourseOrderBL.UpdateGetScore(course.Id, CurrentUser.UserId, tt, 2, 1);
                        }
                    }
                    else //考试通过
                    {
                        pass = 1;
                        //当Number为1的时候 则不在记录学时
                        if (examUser.Number == 0)
                        {
                            //只有考勤和考试 没有评估 考试通过后则把考试和评估的部分都加上去
                            if (course.IsPing == 0 && course.IsTest == 1)
                            {
                                double afterlenght = (double)Convert.ToInt32(xueshi.Split(';')[1]) / 100 +
                                                     (double)Convert.ToInt32(xueshi.Split(';')[2]) / 100;
                                decimal fortestlenght = (Convert.ToDecimal(afterlenght) * course.CourseLength) + courseorder.GetScore;


                                #region 折算CPA学时
                                if (course.IsCPA == 1)
                                {
                                    Cl_CpaLearnStatus cls = ICpaLearnStatusBL.GetCl_CpaLearnStatusByCourseId(course.Id, CurrentUser.UserId);
                                    if (cls == null)
                                    {
                                        cls            = new Cl_CpaLearnStatus();
                                        cls.CourseID   = course.Id;
                                        cls.UserID     = CurrentUser.UserId;
                                        cls.IsAttFlag  = 0;
                                        cls.Progress   = 0;
                                        cls.LearnTimes = 0;
                                        if (course.IsMust == 1)
                                        {
                                            cls.GetLength = fortestlenght * Convert.ToDecimal(0.5);
                                        }
                                        if (course.IsMust == 0)
                                        {
                                            cls.GetLength = fortestlenght;
                                        }

                                        cls.CpaFlag     = 2;
                                        cls.GradeStatus = 1;
                                        ICpaLearnStatusBL.SubscribeCPALearnStatus(cls);
                                    }
                                    else
                                    {
                                        cls.IsAttFlag  = 0;
                                        cls.IsPass     = 1;
                                        cls.Progress   = 0;
                                        cls.LearnTimes = 0;
                                        //cls.GetLength = fortestlenght;
                                        if (course.IsMust == 1)
                                        {
                                            cls.GetLength = fortestlenght * Convert.ToDecimal(0.5);
                                        }
                                        if (course.IsMust == 0)
                                        {
                                            cls.GetLength = fortestlenght;
                                        }
                                        cls.CpaFlag     = 2;
                                        cls.GradeStatus = 1;
                                        ICpaLearnStatusBL.UpdateCPALearnStatusByModel(cls);
                                    }
                                }
                                #endregion



                                CourseOrderBL.UpdateGetScore(course.Id, CurrentUser.UserId, fortestlenght, 1, 2);

                                //考试通过后就把Number标志位改成1 以后在考试则不记学时
                                ExaminationBL.UpdateNumber(student._id, 1);
                            }
                            else //有考勤 评估 考试。考试通过则把考试那部分加上去
                            {
                                //考过后 已得到的分数+考试所占的比例
                                decimal fortestlenght = (course.CourseLength * Convert.ToDecimal((double)Convert.ToInt32(xueshi.Split(';')[1]) / 100)) + courseorder.GetScore;
                                CourseOrderBL.UpdateGetScore(course.Id, CurrentUser.UserId, fortestlenght, 1, 2);

                                //考试通过后就把Number标志位改成1 以后在考试则不记学时
                                ExaminationBL.UpdateNumber(student._id, 1);

                                #region 折算CPA学时
                                if (course.IsCPA == 1)
                                {
                                    Cl_CpaLearnStatus cls = ICpaLearnStatusBL.GetCl_CpaLearnStatusByCourseId(course.Id, CurrentUser.UserId);
                                    if (cls == null)
                                    {
                                        cls            = new Cl_CpaLearnStatus();
                                        cls.CourseID   = course.Id;
                                        cls.UserID     = CurrentUser.UserId;
                                        cls.IsAttFlag  = 0;
                                        cls.Progress   = 0;
                                        cls.LearnTimes = 0;
                                        if (course.IsMust == 1)
                                        {
                                            cls.GetLength = fortestlenght * Convert.ToDecimal(0.5);
                                        }
                                        if (course.IsMust == 0)
                                        {
                                            cls.GetLength = fortestlenght;
                                        }

                                        cls.CpaFlag     = 2;
                                        cls.GradeStatus = 1;
                                        ICpaLearnStatusBL.SubscribeCPALearnStatus(cls);
                                    }
                                    else
                                    {
                                        cls.IsAttFlag  = 0;
                                        cls.IsPass     = 1;
                                        cls.Progress   = 0;
                                        cls.LearnTimes = 0;
                                        //cls.GetLength = fortestlenght;
                                        if (course.IsMust == 1)
                                        {
                                            cls.GetLength = fortestlenght * Convert.ToDecimal(0.5);
                                        }
                                        if (course.IsMust == 0)
                                        {
                                            cls.GetLength = fortestlenght;
                                        }
                                        cls.CpaFlag     = 2;
                                        cls.GradeStatus = 1;
                                        ICpaLearnStatusBL.UpdateCPALearnStatusByModel(cls);
                                    }
                                }
                                #endregion
                            }
                        }
                    }

                    //如果当前考试次数等于考试总次数后 改变考试通过LearnStatus
                    if (CoCoursePaper.TestTimes == examUser.TestTimes)
                    {
                        CourseOrderBL.UpdateLearnStatus(course.Id, CurrentUser.UserId, 2);
                    }
                }
            }
            else if (examUser.SourceType == 2)//2为视频下的考试
            {
                //var student = ExamTestBL.GetExamUser(euid);
                var CoCoursePaper = ICoCoursePaperBL.GetCo_CourseMainPaper(student.RelationID);
                var course        = ICourseBl.GetCo_Course(student.RelationID);
                var exampaper     = ExampaperBL.GetExampaper(CoCoursePaper.PaperId);

                //var courseorder = CourseOrderBL.GetCourseById(student.RelationID);

                //如果当前考试分数大于上一次考的分数则修改, 如果小则还是记录以前的分数
                if (examUser.StudentAnswerList.Sum(p => p.GetScore) > oldPaperScore.Sum(p => p.GetScore))
                {
                    ExamTestBL.SaveExamUser(examUser);
                }
                else
                {
                    if (oldPaperScore.Count != 0)
                    {
                        examUser.StudentAnswerList = oldPaperScore;
                    }
                    ExamTestBL.SaveExamUser(examUser);
                }

                var aa         = examUser.StudentAnswerList.Sum(p => p.GetScore);
                var tongguofen = (exampaper.ExampaperScore * CoCoursePaper.LevelScore) / 100;
                //var aa = ((double)examUser.StudentAnswerList.Sum(p => p.GetScore) / (double)exampaper.ExampaperScore) * 100;

                nopassnumber = Convert.ToInt32(CoCoursePaper.TestTimes) - student.TestTimes;
                //考试没有超过通线 记录课后评估
                if (aa < tongguofen)
                {
                    pass = 0;
                    //考试没过的话
                    if (student.TestTimes == 1)
                    {
                        ICpaLearnStatusBL.UpdateGetCl_CpaLearnStatusByCourseId(course.Id, CurrentUser.UserId, 0, 0);
                    }
                    //关键 如果考试次数达到考试次数还没过 则清空他学习记录 重新在读
                }
                else
                {
                    pass = 1;
                    if (examUser.Number == 0)
                    {
                        ICpaLearnStatusBL.UpdateGetCl_CpaLearnStatusByCourseId(course.Id, CurrentUser.UserId,
                                                                               course.CourseLength, 1);
                        ExaminationBL.UpdateNumber(student._id, 1);

                        #region 折算cpa学时

                        if (course.IsCPA == 1)
                        {
                            Cl_CpaLearnStatus cls = new Cl_CpaLearnStatus();
                            cls.CourseID   = course.Id;
                            cls.UserID     = CurrentUser.UserId;
                            cls.IsAttFlag  = 0;
                            cls.Progress   = 0;
                            cls.LearnTimes = 0;
                            if (course.IsMust == 1)
                            {
                                cls.GetLength = course.CourseLength * (Convert.ToDecimal(0.5));
                            }
                            if (course.IsMust == 0)
                            {
                                cls.GetLength = course.CourseLength;
                            }

                            cls.CpaFlag     = 2;
                            cls.GradeStatus = 1;
                            cls.IsPass      = 1;

                            ICpaLearnStatusBL.SubscribeCPALearnStatus(cls);
                        }
                        #endregion
                    }
                }

                //通过了之后 达到考试次数就不在清数据..如果达到次数都没过就清次数
                if (examUser.Number == 0 && examUser.TestTimes == CoCoursePaper.TestTimes)
                {
                    var examUserSecond = ExaminationBL.GetSingletbExamSendStudentByCourseIdAndUserId(student.RelationID, CurrentUser.UserId, 2);
                    if (examUser.TestTimes == CoCoursePaper.TestTimes && aa < CoCoursePaper.LevelScore)
                    {
                        var cpa = ICpaLearnStatusBL.GetCl_CpaLearnStatusByCourseId(examUserSecond.RelationID,
                                                                                   CurrentUser.UserId);
                        ICpaLearnStatusBL.DeleteLearn(cpa.Id);
                        ExaminationBL.DeleteExamSendStudentWithByCourseIdAndUserId(course.Id, CurrentUser.UserId, 2);
                    }
                }
            }
            else
            {
                ExamTestBL.SaveExamUser(examUser);
                return(Json(new { result = 1 }, JsonRequestBehavior.AllowGet));
            }
            return(Json(new { result = 0, courseid = examUser.RelationID, way = examUser.SourceType, pass = pass, nopassnumber = nopassnumber }, JsonRequestBehavior.AllowGet));
        }