/// <summary>
 /// 新增一条记录
 /// </summary>
 /// <param name="model"></param>
 /// <returns></returns>
 public int Add(Member_CourseContentAnswer model)
 {
     StringBuilder sql = new StringBuilder();
     sql.Append("insert into [dbo].[Member_CourseContentAnswer] ([AnswerResult],[Question],[Answer],[Result],[AccountId],[Delflag],[CreateDate])");
     sql.Append(" values (@AnswerResult,@Question,@Answer,@Result,@AccountId,@Delflag,@CreateDate)");
     sql.Append(" set @Id=@@IDENTITY");
     SqlParameter[] cmdParams = new SqlParameter[]{
         new SqlParameter("@Id", SqlDbType.Int, 4) { Value = model.Id, Direction = ParameterDirection.Output },
         new SqlParameter("@AnswerResult", SqlDbType.Int, 4) { Value = model.AnswerResult },
         new SqlParameter("@Question", SqlDbType.Int, 4) { Value = model.Question },
         new SqlParameter("@Answer", SqlDbType.VarChar, 100) { Value = model.Answer },
         new SqlParameter("@Result", SqlDbType.Bit, 1) { Value = model.Result },
         new SqlParameter("@AccountId", SqlDbType.Int, 4) { Value = model.AccountId },
         new SqlParameter("@Delflag", SqlDbType.Bit, 1) { Value = model.Delflag },
         new SqlParameter("@CreateDate", SqlDbType.DateTime, 8) { Value = model.CreateDate }
     };
     int result = Convert.ToInt32(MSEntLibSqlHelper.ExecuteNonQueryBySql(sql.ToString(), cmdParams));
     model.Id = Convert.ToInt32(cmdParams[0].Value);
     return result;
 }
 /// <summary>
 /// 获取数据集
 /// </summary>
 /// <param name="where"></param>
 /// <param name="orderBy"></param>
 /// <returns></returns>
 public List<Member_CourseContentAnswer> GetList(string where, string orderBy)
 {
     StringBuilder sql = new StringBuilder();
     sql.Append("select * from [dbo].[Member_CourseContentAnswer]");
     if (!string.IsNullOrEmpty(where))
         sql.Append(" where " + where);
     if (!string.IsNullOrEmpty(orderBy))
         sql.Append(" order by " + orderBy);
     List<Member_CourseContentAnswer> list = new List<Member_CourseContentAnswer>();
     using (IDataReader reader = MSEntLibSqlHelper.ExecuteDataReaderBySql(sql.ToString()))
     {
         while (reader.Read())
         {
             Member_CourseContentAnswer model = new Member_CourseContentAnswer();
             ConvertToModel(reader, model);
             list.Add(model);
         }
     }
     return list;
 }
        /// <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);
            }
        }
 /// <summary>
 /// 获取分页数据集
 /// </summary>
 /// <param name="pageSize"></param>
 /// <param name="pageIndex"></param>
 /// <param name="where"></param>
 /// <param name="orderBy"></param>
 /// <param name="recordCount"></param>
 /// <returns></returns>
 public List<Member_CourseContentAnswer> GetList(int pageSize, int pageIndex, string where, string orderBy, out int recordCount)
 {
     if (string.IsNullOrEmpty(orderBy))
         throw new ArgumentNullException();
     StringBuilder sb = new StringBuilder();
     sb.Append("select count(1) from [dbo].[Member_CourseContentAnswer]");
     if (!string.IsNullOrEmpty(where))
         sb.Append(" where " + where);
     recordCount = Convert.ToInt32(MSEntLibSqlHelper.ExecuteScalarBySql(sb.ToString()));
     int start = (pageIndex - 1) * pageSize + 1;
     int end = pageIndex * pageSize;
     StringBuilder sql = new StringBuilder();
     sql.Append("select * from (select *,ROW_NUMBER() over (order by " + orderBy + ") as [RowNum] from [dbo].[Member_CourseContentAnswer]");
     if (!string.IsNullOrEmpty(where))
         sql.Append(" where " + where);
     sql.Append(") as T where [RowNum] between " + start + " and " + end);
     List<Member_CourseContentAnswer> list = new List<Member_CourseContentAnswer>();
     using (IDataReader reader = MSEntLibSqlHelper.ExecuteDataReaderBySql(sql.ToString()))
     {
         while (reader.Read())
         {
             Member_CourseContentAnswer model = new Member_CourseContentAnswer();
             ConvertToModel(reader, model);
             list.Add(model);
         }
     }
     return list;
 }
 private void ConvertToModel(IDataReader reader, Member_CourseContentAnswer model)
 {
     if (reader["Id"] != DBNull.Value)
         model.Id = Convert.ToInt32(reader["Id"]);
     if (reader["AnswerResult"] != DBNull.Value)
         model.AnswerResult = Convert.ToInt32(reader["AnswerResult"]);
     if (reader["Question"] != DBNull.Value)
         model.Question = Convert.ToInt32(reader["Question"]);
     if (reader["Answer"] != DBNull.Value)
         model.Answer = reader["Answer"].ToString();
     if (reader["Result"] != DBNull.Value)
         model.Result = Convert.ToBoolean(reader["Result"]);
     if (reader["AccountId"] != DBNull.Value)
         model.AccountId = Convert.ToInt32(reader["AccountId"]);
     if (reader["Delflag"] != DBNull.Value)
         model.Delflag = Convert.ToBoolean(reader["Delflag"]);
     if (reader["CreateDate"] != DBNull.Value)
         model.CreateDate = Convert.ToDateTime(reader["CreateDate"]);
 }
 /// <summary>
 /// 更新一条记录
 /// </summary>
 /// <param name="model"></param>
 /// <returns></returns>
 public int Update(Member_CourseContentAnswer model)
 {
     StringBuilder sql = new StringBuilder();
     sql.Append("update [dbo].[Member_CourseContentAnswer] set ");
     sql.Append("[AnswerResult]=@AnswerResult,[Question]=@Question,[Answer]=@Answer,[Result]=@Result,[AccountId]=@AccountId,[Delflag]=@Delflag,[CreateDate]=@CreateDate");
     sql.Append(" where [Id]=@Id");
     SqlParameter[] cmdParams = new SqlParameter[] {
         new SqlParameter("@Id", SqlDbType.Int, 4) { Value = model.Id },
         new SqlParameter("@AnswerResult", SqlDbType.Int, 4) { Value = model.AnswerResult },
         new SqlParameter("@Question", SqlDbType.Int, 4) { Value = model.Question },
         new SqlParameter("@Answer", SqlDbType.VarChar, 100) { Value = model.Answer },
         new SqlParameter("@Result", SqlDbType.Bit, 1) { Value = model.Result },
         new SqlParameter("@AccountId", SqlDbType.Int, 4) { Value = model.AccountId },
         new SqlParameter("@Delflag", SqlDbType.Bit, 1) { Value = model.Delflag },
         new SqlParameter("@CreateDate", SqlDbType.DateTime, 8) { Value = model.CreateDate }
     };
     return MSEntLibSqlHelper.ExecuteNonQueryBySql(sql.ToString(), cmdParams);
 }
 /// <summary>
 /// 取得一条记录
 /// </summary>
 /// <param name="id"></param>
 /// <param name="where"></param>
 /// <returns></returns>
 public Member_CourseContentAnswer GetModel(int id, string where)
 {
     string sql = "select * from [dbo].[Member_CourseContentAnswer] where [Id]=@Id";
     if (!string.IsNullOrEmpty(where))
         sql += " and " + where;
     SqlParameter[] cmdParams = new SqlParameter[]{
         new SqlParameter("@Id", SqlDbType.Int, 4) { Value = id }
     };
     using (IDataReader reader = MSEntLibSqlHelper.ExecuteDataReaderBySql(sql, cmdParams))
     {
         if (reader.Read())
         {
             Member_CourseContentAnswer model = new Member_CourseContentAnswer();
             ConvertToModel(reader, model);
             return model;
         }
         else
         {
             return null;
         }
     }
 }
 /// <summary>
 /// 更新一条记录
 /// </summary>
 /// <param name="model"></param>
 /// <returns></returns>
 public bool Update(Member_CourseContentAnswer model)
 {
     return dal.Update(model) > 0;
 }
 /// <summary>
 /// 新增一条记录
 /// </summary>
 /// <param name="model"></param>
 /// <returns></returns>
 public bool Add(Member_CourseContentAnswer model)
 {
     return dal.Add(model) > 0;
 }