Esempio n. 1
0
        //类型为正常考试的试卷 权限判断
        private void IsHaveLimitsByNormalExam(int eiid, out bool isEnter)
        {
            isEnter = true;

            model_examInfo = BLL.ExamInfo.Instance.GetExamInfo(eiid);
            if (model_examInfo == null)
            {
                //试卷项目不存在
                noLimits(out isEnter);
                return;
            }

            //判断考试时间是否未到或已过
            IsTimeOver(model_examInfo.ExamStartTime, model_examInfo.ExamEndTime, out isEnter);

            query_examPerson.EIID         = model_examInfo.EIID;
            query_examPerson.ExamType     = 0;
            query_examPerson.ExamPerSonID = loginerID;
            int       count;
            DataTable dt = BLL.ExamPerson.Instance.GetExamPerson(query_examPerson, "", 1, 10000, out count);

            if (dt.Rows.Count == 0)
            {
                //没有在该套试卷中找到登陆人,不允许访问该页面
                noLimits(out isEnter);
                return;
            }

            //判断是否提交过该问卷
            judgeIsSubmit(eiid, 0, out isEnter);
        }
 public bool Action()
 {
     if (Request["id"] != null)
     {//编辑
         int EIID = 0;
         if (int.TryParse(Request["id"].ToString(), out EIID))
         {
             if (BLL.ExamInfo.Instance.IsExistsByEIID(EIID))
             {
                 examInfo  = BLL.ExamInfo.Instance.GetExamInfo(EIID);
                 examPaper = BLL.ExamPaper.Instance.GetExamPaper(examInfo.EPID);
                 GetExamPersions(examInfo.EIID, 0, out ExamPersionsIDs, out ExamPersionsNames);
                 if (examInfo.IsMakeUp == 1)
                 {
                     makeExamInfo  = BLL.MakeUpExamInfo.Instance.GetMakeUpExamInfoByEIID(EIID);
                     makeExamPaper = BLL.ExamPaper.Instance.GetExamPaper(makeExamInfo.MakeUpEPID);
                     GetExamPersions(examInfo.EIID, makeExamInfo.MEIID, out MakeExamPersionsIDs, out MakeExamPersionsNames);
                 }
             }
             else
             {
                 Response.Write("alert('未能找到ID为" + Request["id"].ToString() + "的考试项目');closePage();");
             }
         }
         else
         {
             Response.Write("alert('参数" + Request["id"].ToString() + "转换成数字失败');closePage();");
         }
         return(true);
     }
     else
     { //添加
         return(false);
     }
 }
Esempio n. 3
0
        /// <summary>
        ///  增加一条数据
        /// </summary>
        public int Insert(SqlTransaction sqltran, Entities.ExamInfo model)
        {
            SqlParameter[] parameters =
            {
                new SqlParameter("@EIID",             SqlDbType.BigInt,      8),
                new SqlParameter("@Name",             SqlDbType.NVarChar,  100),
                new SqlParameter("@ECID",             SqlDbType.Int,         4),
                new SqlParameter("@Description",      SqlDbType.NVarChar,  500),
                new SqlParameter("@BusinessGroup",    SqlDbType.NVarChar,   50),
                new SqlParameter("@EPID",             SqlDbType.Int,         4),
                new SqlParameter("@ExamStartTime",    SqlDbType.DateTime),
                new SqlParameter("@ExamEndTime",      SqlDbType.DateTime),
                new SqlParameter("@JoinNum",          SqlDbType.Int,         4),
                new SqlParameter("@IsMakeUp",         SqlDbType.Int,         4),
                new SqlParameter("@CreateTime",       SqlDbType.DateTime),
                new SqlParameter("@CreaetUserID",     SqlDbType.Int,         4),
                new SqlParameter("@LastModifyTime",   SqlDbType.DateTime),
                new SqlParameter("@LastModifyUserID", SqlDbType.Int,         4),
                new SqlParameter("@Status",           SqlDbType.Int,         4),
                new SqlParameter("@BGID",             SqlDbType.Int, 4)
            };
            parameters[0].Direction = ParameterDirection.Output;
            parameters[1].Value     = model.Name;
            parameters[2].Value     = model.ECID;
            parameters[3].Value     = model.Description;
            parameters[4].Value     = model.BusinessGroup;
            parameters[5].Value     = model.EPID;
            parameters[6].Value     = model.ExamStartTime;
            parameters[7].Value     = model.ExamEndTime;
            parameters[8].Value     = model.JoinNum;
            parameters[9].Value     = model.IsMakeUp;
            parameters[10].Value    = model.CreateTime;
            parameters[11].Value    = model.CreaetUserID;
            parameters[12].Value    = model.LastModifyTime;
            parameters[13].Value    = model.LastModifyUserID;
            parameters[14].Value    = model.Status;
            parameters[15].Value    = model.BGID;

            SqlHelper.ExecuteNonQuery(sqltran, CommandType.StoredProcedure, P_EXAMINFO_INSERT, parameters);
            return(Convert.ToInt32(parameters[0].Value));
        }
Esempio n. 4
0
        public void ProcessRequest(HttpContext context)
        {
            BitAuto.YanFa.SysRightManager.Common.UserInfo.Check();
            context.Response.ContentType = "text/plain";
            Entities.ExamInfo examInfo = new Entities.ExamInfo();
            examInfo                  = BLL.ExamInfo.Instance.GetExamInfo(long.Parse(EIID));
            examInfo.Status           = Convert.ToInt32(State);
            examInfo.LastModifyTime   = DateTime.Now;
            examInfo.LastModifyUserID = BLL.Util.GetLoginUserID();
            BLL.ExamInfo.Instance.Update(examInfo);
            string log = "";

            if (State == "1")
            {
                log = "将EIID为'" + examInfo.EIID + "',名称为'" + examInfo.Name + "'的考试项目设置为完成。";
            }
            else if (State == "-1")
            {
                log = "将EIID为'" + examInfo.EIID + "',名称为'" + examInfo.Name + "'的考试项目删除。";
            }
            BLL.Util.InsertUserLog(log);

            context.Response.Write("success");
        }
Esempio n. 5
0
        /// <summary>
        ///  更新一条数据
        /// </summary>
        public int Update(Entities.ExamInfo model)
        {
            SqlParameter[] parameters =
            {
                new SqlParameter("@EIID",             SqlDbType.BigInt,      8),
                new SqlParameter("@Name",             SqlDbType.NVarChar,  100),
                new SqlParameter("@ECID",             SqlDbType.Int,         4),
                new SqlParameter("@Description",      SqlDbType.NVarChar,  500),
                new SqlParameter("@BusinessGroup",    SqlDbType.NVarChar,   50),
                new SqlParameter("@EPID",             SqlDbType.Int,         4),
                new SqlParameter("@ExamStartTime",    SqlDbType.DateTime),
                new SqlParameter("@ExamEndTime",      SqlDbType.DateTime),
                new SqlParameter("@JoinNum",          SqlDbType.Int,         4),
                new SqlParameter("@IsMakeUp",         SqlDbType.Int,         4),
                new SqlParameter("@LastModifyTime",   SqlDbType.DateTime),
                new SqlParameter("@LastModifyUserID", SqlDbType.Int,         4),
                new SqlParameter("@Status",           SqlDbType.Int,         4),
                new SqlParameter("@BGID",             SqlDbType.Int, 4)
            };
            parameters[0].Value  = model.EIID;
            parameters[1].Value  = model.Name;
            parameters[2].Value  = model.ECID;
            parameters[3].Value  = model.Description;
            parameters[4].Value  = model.BusinessGroup;
            parameters[5].Value  = model.EPID;
            parameters[6].Value  = model.ExamStartTime;
            parameters[7].Value  = model.ExamEndTime;
            parameters[8].Value  = model.JoinNum;
            parameters[9].Value  = model.IsMakeUp;
            parameters[10].Value = model.LastModifyTime;
            parameters[11].Value = model.LastModifyUserID;
            parameters[12].Value = model.Status;
            parameters[13].Value = model.BGID;

            return(SqlHelper.ExecuteNonQuery(CONNECTIONSTRINGS, CommandType.StoredProcedure, P_EXAMINFO_UPDATE, parameters));
        }
        public bool subDate(out string msg)
        {
            bool result = false;

            msg = "";
            string log = "";

            #region 事务保存信息

            string        connectionstrings = ConfigurationUtil.GetAppSettingValue("ConnectionStrings_CC");
            SqlConnection connection        = new SqlConnection(connectionstrings);
            connection.Open();
            SqlTransaction tran = connection.BeginTransaction("SampleTransaction");

            //真实的数据操作
            try
            {
                if (examObj.EIID > 0)
                {//编辑
                    Entities.ExamInfo examObjOri = new Entities.ExamInfo();
                    examObjOri      = BLL.ExamInfo.Instance.GetExamInfo(examObj.EIID);
                    examObj.JoinNum = examPersionList.Count;
                    BLL.ExamInfo.Instance.Update(tran, examObj);
                    //先清除参考人员
                    BLL.ExamPerson.Instance.Delete(examObj.EIID);
                    foreach (Entities.ExamPerson examPersion in examPersionList)
                    {
                        examPersion.EIID = examObj.EIID;
                        try
                        {
                            BLL.ExamPerson.Instance.Insert(tran, examPersion);
                        }
                        catch (Exception ex)
                        {
                            msg = ex.Message.ToString().Replace("'", "");
                            msg = msg.Replace("\r\n", "");
                        }
                    }
                    //清除补考
                    BLL.MakeUpExamInfo.Instance.Delete(tran, (int)examObj.EIID);

                    if (examObj.IsMakeUp == 1)
                    {//添加新补考
                        makeExamOjb.JoinNum = makeExamPersionList.Count;
                        makeExamOjb.EIID    = examObj.EIID;
                        makeExamOjb.MEIID   = BLL.MakeUpExamInfo.Instance.Insert(tran, makeExamOjb);
                        foreach (Entities.ExamPerson examPersion in makeExamPersionList)
                        {
                            examPersion.MEIID = makeExamOjb.MEIID;
                            examPersion.EIID  = makeExamOjb.EIID;
                            try
                            {
                                BLL.ExamPerson.Instance.Insert(tran, examPersion);
                            }
                            catch (Exception ex)
                            {
                                msg = ex.Message.ToString().Replace("'", "");
                                msg = msg.Replace("\r\n", "");
                            }
                        }
                        log += ";补考信息更新为-补考MEIID:" + makeExamOjb.MEIID + ";开始时间:"
                               + makeExamOjb.MakeUpExamStartTime + ";结束时间:" + makeExamOjb.MakeupExamEndTime;
                    }
                }
                else
                {//添加
                    examObj.JoinNum = examPersionList.Count;
                    examObj.EIID    = BLL.ExamInfo.Instance.Insert(tran, examObj);

                    foreach (Entities.ExamPerson examPersion in examPersionList)
                    {
                        examPersion.EIID = examObj.EIID;
                        try {
                            BLL.ExamPerson.Instance.Insert(tran, examPersion);
                        }
                        catch (Exception ex)
                        {
                            msg = ex.Message.ToString().Replace("'", "");
                            msg = msg.Replace("\r\n", "");
                        }
                    }
                    log = "添加考试项目-EIID:" + examObj.EIID + ";标题:" + examObj.Name + ";考试说明:"
                          + examObj.Description + ";开始时间:" + examObj.ExamStartTime + ";结束时间:" + examObj.ExamEndTime;
                    if (examObj.IsMakeUp == 1)
                    {//补考
                        makeExamOjb.JoinNum = makeExamPersionList.Count;
                        makeExamOjb.EIID    = examObj.EIID;
                        makeExamOjb.MEIID   = BLL.MakeUpExamInfo.Instance.Insert(tran, makeExamOjb);
                        foreach (Entities.ExamPerson examPersion in makeExamPersionList)
                        {
                            examPersion.MEIID = makeExamOjb.MEIID;
                            examPersion.EIID  = makeExamOjb.EIID;
                            try
                            {
                                BLL.ExamPerson.Instance.Insert(tran, examPersion);
                            }
                            catch (Exception ex)
                            {
                                msg = ex.Message.ToString().Replace("'", "");
                                msg = msg.Replace("\r\n", "");
                            }
                        }
                        log += ";补考信息-补考MEIID:" + makeExamOjb.MEIID + ";开始时间:"
                               + makeExamOjb.MakeUpExamStartTime + ";结束时间:" + makeExamOjb.MakeupExamEndTime;
                    }
                }

                tran.Commit();
                //写入日志
                BLL.Util.InsertUserLog(log);
                result = true;
            }
            catch (Exception ex)
            {
                tran.Rollback();
                msg = ex.Message.ToString().Replace("'", "");
                msg = msg.Replace("\r\n", "");
            }
            finally
            {
                connection.Close();
            }
            return(result);

            #endregion
        }
        //提交或保存:type=submit 提交;type=save 保存
        public void examOnlineOperate(string type, out string msg)
        {
            msg = string.Empty;


            int  loginerID   = BLL.Util.GetLoginUserID(); //登陆者ID
            int  _EOLID      = 0;                         //插入该考生在线考试记录后返回的主键
            int  _EOLDID     = 0;                         //插入在线考试小题明细记录后返回的主键
            int  _totalScore = 0;                         //记录总得分,最后一步更新到在线考试表中
            bool isSubject   = false;                     //是否存在主观题,默认false 不存在(在线考试试卷则为已阅);true存在(在线考试试卷则为未阅)
            int  _paperID;                                //试卷ID

            if (!int.TryParse(RequestExamPaperID, out _paperID))
            {
                msg = "{msg:'试卷ID出错,操作失败!'}";
                return;
            }
            Entities.ExamOnline model_examOnlineInsert       = null;            //新增时增加的在线考试实体,如果之前没保存过,则需要新增
            Entities.ExamOnline model_examOnlineToUpdate     = null;            //需要修改之前保存过的试卷信息
            ArrayList           array_examOnlineDetailDelete = new ArrayList(); //如果有过保存的记录,则保存需要删除的小题明细ID 集合
            ArrayList           array_examOnlineAnswerDelete = new ArrayList(); //如果有过保存的记录,则保存需要删除的答案ID 集合
            bool paperIsSave = false;                                           //该考生试卷是否被保存过,false 没有;true 是;

            ArrayList array_appendValueAnswer = new ArrayList();                //记录答案对应的小题明细数组
            int       examOnlineDetailIndex   = 0;                              //数组值

            int _EIID;

            if (!int.TryParse(RequestEIID, out _EIID))
            {
                msg = "{msg:'项目ID出错,操作失败!'}";
                return;
            }

            judgeSubmitExamLimit(_EIID, out msg);
            if (msg != string.Empty)
            {
                return;
            }

            //在线考试明细表 集合(非主观题)
            List <Entities.ExamOnlineDetail> list_examOnlineDetail = new List <Entities.ExamOnlineDetail>();
            //在线考试答案表 集合(非主观题)
            List <Entities.ExamOnlineAnswer> list_examOnlineAnswer = new List <Entities.ExamOnlineAnswer>();

            //在线考试明细表 集合(主观题)
            List <Entities.ExamOnlineDetail> list_SubjetExamOnlineDetail = new List <Entities.ExamOnlineDetail>();
            //在线考试答案表 集合(主观题)
            List <Entities.ExamOnlineAnswer> list_SubjetExamOnlineAnswer = new List <Entities.ExamOnlineAnswer>();

            //日志:修改 在线考试表 集合
            ArrayList array_updateExamOnlineLog = new ArrayList();

            //在线考试表 修改前的model
            Entities.ExamOnline model_updateExamOnlineLog_Old = null;
            //日志:插入 在线考试表 集合
            ArrayList arry_insertExamOnlineLog = new ArrayList();
            //日志:插入 在线考试明细表 记录集合
            ArrayList array_insertExamOnlineDetailLog = new ArrayList();
            //日志:插入 在线考试答案表 记录集合
            ArrayList array_insertExamOnlineAnswerLog = new ArrayList();



            #region 准备数据

            Entities.QueryExamOnline query_examOnlineSave = new Entities.QueryExamOnline();
            int saveCount;
            if (RequestExamType == "1")    //补考项目考试
            {
                query_examOnlineSave.MEIID    = _EIID;
                query_examOnlineSave.IsMakeUp = 1;
            }
            else if (RequestExamType == "0")    //正常项目考试
            {
                query_examOnlineSave.IsMakeUp = 0;
                query_examOnlineSave.EIID     = _EIID;
            }
            query_examOnlineSave.ExamPersonID = loginerID;
            DataTable dt_examOnlineSave = BLL.ExamOnline.Instance.GetExamOnline(query_examOnlineSave, "", 1, 10000, out saveCount);
            if (dt_examOnlineSave.Rows.Count > 0)
            {
                paperIsSave = true;
                //存在数据,准备上次保存的数据,对其进行修改
                model_examOnlineToUpdate      = BLL.ExamOnline.Instance.GetExamOnline(long.Parse(dt_examOnlineSave.Rows[0]["EOLID"].ToString()));
                model_updateExamOnlineLog_Old = model_examOnlineToUpdate;
                if (model_examOnlineToUpdate != null)
                {
                    model_examOnlineToUpdate.ExamEndTime = DateTime.Now;
                    model_examOnlineToUpdate.IsLack      = 0;
                    //准备需要删除的小题明细ID 集合
                    Entities.QueryExamOnlineDetail query_examOnlineDetailDelete = new Entities.QueryExamOnlineDetail();
                    query_examOnlineDetailDelete.EOLID = int.Parse(model_examOnlineToUpdate.EOLID.ToString());
                    DataTable dt_detailDelete = BLL.ExamOnlineDetail.Instance.GetExamOnlineDetail(query_examOnlineDetailDelete, "", 1, 10000, out saveCount);
                    for (int i = 0; i < dt_detailDelete.Rows.Count; i++)
                    {
                        //插入 集合
                        array_examOnlineDetailDelete.Add(dt_detailDelete.Rows[i]["EOLDID"].ToString());
                        //准备需要删除的该小题答案ID 集合
                        Entities.QueryExamOnlineAnswer query_examOnlineAnswerDelete = new Entities.QueryExamOnlineAnswer();
                        query_examOnlineAnswerDelete.EOLDID = int.Parse(dt_detailDelete.Rows[i]["EOLDID"].ToString());
                        DataTable dt_answerDelete = BLL.ExamOnlineAnswer.Instance.GetExamOnlineAnswer(query_examOnlineAnswerDelete, "", 1, 10000, out saveCount);
                        for (int j = 0; j < dt_answerDelete.Rows.Count; j++)
                        {
                            //插入 集合
                            array_examOnlineAnswerDelete.Add(dt_answerDelete.Rows[j]["RecID"].ToString());
                        }
                    }
                }
            }

            //  a、准备 插入在线考试表记录 数据

            //  如果之前保存过数据,则不需要新增,修改即可
            if (paperIsSave == false)
            {
                model_examOnlineInsert = new Entities.ExamOnline();
                if (RequestExamType == "1")    //补考项目考试
                {
                    model_examOnlineInsert.IsMakeUp = 1;
                    model_examOnlineInsert.MEIID    = _EIID;
                    //根据补考项目ID,找到对应的考试项目ID,并赋值
                    Entities.MakeUpExamInfo model_makeUpExamInfoGetEIID = BLL.MakeUpExamInfo.Instance.GetMakeUpExamInfo(_EIID);
                    if (model_makeUpExamInfoGetEIID == null)
                    {
                        msg = "{msg:'该补考项目对应考试项目ID未找到,操作失败!'}";
                        return;
                    }
                    model_examOnlineInsert.EIID = int.Parse(model_makeUpExamInfoGetEIID.EIID.ToString());
                }
                else if (RequestExamType == "0")    //正常项目考试
                {
                    model_examOnlineInsert.IsMakeUp = 0;
                    model_examOnlineInsert.EIID     = _EIID;
                }
                model_examOnlineInsert.ExamPersonID  = loginerID;
                model_examOnlineInsert.ExamStartTime = DateTime.Parse(RequestExamStartTime);
                model_examOnlineInsert.ExamEndTime   = DateTime.Now;
                model_examOnlineInsert.CreateTime    = DateTime.Now;
                model_examOnlineInsert.CreaetUserID  = loginerID;
                model_examOnlineInsert.IsLack        = 0; //不算缺考

                //_EOLID = insertExamOnline(tran, model_examOnlineInsert);
            }
            if (model_examOnlineInsert != null)
            {
                model_examOnlineInsert.Status = type == "save" ? 0 : 1;
            }
            if (model_examOnlineToUpdate != null)
            {
                model_examOnlineToUpdate.Status = type == "save" ? 0 : 1;
            }

            #endregion

            #region b、准备 插入在线考试小题明细 数据

            #region 1)准备 非主观题 数据
            if (RequestNoSubjectQestion != "")
            {
                //分解成每一个小题数组,类似['大题ID:小题ID:单选题答案','大题ID:小题ID:复选题答案1;复选题答案2;复选题答案3']
                string[] noSubjectQuestion = RequestNoSubjectQestion.Split(',');
                for (int i = 0; i < noSubjectQuestion.Length; i++)
                {
                    examOnlineDetailIndex = i;
                    //分解成每一个小题详细信息的数组,类似['大题ID','小题ID','复选题答案1;复选题答案2;复选题答案3']
                    string[] eachNoSubjectQuestion = noSubjectQuestion[i].Split(':');
                    //如果该小题的详细信息都有值,则插入;否则,不插入
                    if (eachNoSubjectQuestion[0] != "" && eachNoSubjectQuestion[1] != "" && eachNoSubjectQuestion[2] != "")
                    {
                        Entities.ExamOnlineDetail model_examOnlineDetailInsert = new Entities.ExamOnlineDetail();
                        //model_examOnlineDetailInsert.EOLID = int.Parse(_EOLID.ToString());
                        model_examOnlineDetailInsert.EPID  = _paperID;
                        model_examOnlineDetailInsert.BQID  = long.Parse(eachNoSubjectQuestion[0]);
                        model_examOnlineDetailInsert.KLQID = long.Parse(eachNoSubjectQuestion[1]);
                        model_examOnlineDetailInsert.Score = 0;

                        //  (1)根据该生给出的答案去比较正确的答案
                        //  先根据该小题ID去找出该题正确答案串
                        string rightAnswer = string.Empty;
                        Entities.QueryKLQAnswer query_KLQAnswer = new Entities.QueryKLQAnswer();
                        int totalCount;
                        query_KLQAnswer.KLQID = model_examOnlineDetailInsert.KLQID;
                        DataTable dt_KLQAnswer = BLL.KLQAnswer.Instance.GetKLQAnswer(query_KLQAnswer, "", 1, 10000, out totalCount);
                        if (dt_KLQAnswer.Rows.Count == 0)
                        {
                            msg = "{msg:'对应题目的答案未找到,操作失败!'}";
                            return;
                        }
                        for (int j = 0; j < dt_KLQAnswer.Rows.Count; j++)
                        {
                            rightAnswer += dt_KLQAnswer.Rows[j]["KLAOID"].ToString() + ";";
                        }
                        rightAnswer = rightAnswer.TrimEnd(';');

                        //  比较该串与考生给出的答案串是否相同,相同则得分;不相同给零分
                        //  比较方法(两个长度相同,分解考生答案,保证每一个答案都在正确答案内)
                        if (eachNoSubjectQuestion[2].Length == rightAnswer.Length)
                        {
                            string[] eachNoSubjectAnswer = eachNoSubjectQuestion[2].Split(';');
                            bool     IsRightOrWrong      = true; //  答案是否正确,正确true;错误false
                            for (int ea = 0; ea < eachNoSubjectAnswer.Length; ea++)
                            {
                                if (!rightAnswer.Contains(eachNoSubjectAnswer[ea]))
                                {
                                    IsRightOrWrong = false;
                                }
                            }
                            if (IsRightOrWrong)
                            {
                                //  (2)找到该小题如果正确则应得的分数
                                Entities.ExamBigQuestion model_examBigQuestion = BLL.ExamBigQuestion.Instance.GetExamBigQuestion(model_examOnlineDetailInsert.BQID);
                                if (model_examBigQuestion == null)
                                {
                                    msg = "{msg:'对应该小题的对应的分数未找到,操作失败!'}";
                                    return;
                                }
                                int eachQuestionScore = model_examBigQuestion.EachQuestionScore;
                                model_examOnlineDetailInsert.Score = eachQuestionScore;
                                _totalScore += eachQuestionScore;   //计入总得分
                            }
                        }
                        model_examOnlineDetailInsert.CreaetUserID = loginerID;
                        model_examOnlineDetailInsert.CreateTime   = DateTime.Now;
                        //插入在线考试小题明细表 集合
                        list_examOnlineDetail.Add(model_examOnlineDetailInsert);
                        //插入在线考试小题明细表 日志集合
                        string detailsLog = "在线考试小题明细表【插入】";
                        int    epidLog;
                        int    bqidLog;
                        int    klqidLog;
                        if (int.TryParse(model_examOnlineDetailInsert.EPID.ToString(), out epidLog))
                        {
                            Entities.ExamPaper model_examPaperLog = BLL.ExamPaper.Instance.GetExamPaper(epidLog);
                            if (model_examPaperLog != null)
                            {
                                detailsLog += "试卷名称【" + model_examPaperLog.Name + "】";
                            }
                        }
                        if (int.TryParse(model_examOnlineDetailInsert.BQID.ToString(), out bqidLog))
                        {
                            Entities.ExamBigQuestion model_examBigQuestionLog = BLL.ExamBigQuestion.Instance.GetExamBigQuestion(bqidLog);
                            if (model_examBigQuestionLog != null)
                            {
                                detailsLog += "大题名称【" + model_examBigQuestionLog.Name + "】";
                            }
                        }
                        if (int.TryParse(model_examOnlineDetailInsert.KLQID.ToString(), out klqidLog))
                        {
                            Entities.KLQuestion model_klqQestionLog = BLL.KLQuestion.Instance.GetKLQuestion(klqidLog);
                            if (model_klqQestionLog != null)
                            {
                                detailsLog += "小题内容【" + model_klqQestionLog.Ask + "】";
                            }
                        }
                        detailsLog += "本小题得分【" + model_examOnlineDetailInsert.Score + "】插入时间【" + model_examOnlineDetailInsert.CreateTime + "】的记录";
                        array_insertExamOnlineDetailLog.Add(detailsLog);

                        //  (3)插入在线考试答案表
                        //  分解答案串,分条插入该表
                        string[] eachAnswer = eachNoSubjectQuestion[2].Split(';');
                        for (int k = 0; k < eachAnswer.Length; k++)
                        {
                            Entities.ExamOnlineAnswer model_examOnlineAnswer = new Entities.ExamOnlineAnswer();
                            //model_examOnlineAnswer.EOLDID = int.Parse(_EOLDID.ToString());
                            model_examOnlineAnswer.ExamAnswer   = eachAnswer[k];
                            model_examOnlineAnswer.CreaetUserID = loginerID;
                            model_examOnlineAnswer.CreateTime   = DateTime.Now;
                            //插入在线考试答案表 集合
                            list_examOnlineAnswer.Add(model_examOnlineAnswer);

                            array_appendValueAnswer.Add(examOnlineDetailIndex);

                            //插入在线考试答案表 日志集合
                            array_insertExamOnlineAnswerLog.Add("在线考试答案表【插入】提交答案:【" + model_examOnlineAnswer.ExamAnswer + "】插入时间【" + model_examOnlineAnswer.CreateTime + "】的记录");
                        }
                    }
                }
            }

            #endregion

            #region 2)准备 插入主观题 数据(主观题答案为空,也会插入)

            if (RequestSubjectQuestion != "")
            {
                //分解成每一个小题数组,类似['大题ID^^小题ID^^答案','大题ID^^小题ID^^答案','大题ID^^小题ID^^答案']
                string[] subjectQuestion = RequestSubjectQuestion.Split(new string[] { "$$" }, StringSplitOptions.None);
                for (int i = 0; i < subjectQuestion.Length; i++)
                {
                    //分解成每一题的每个详细信息,类似['大题ID','小题ID','答案']
                    string[] eachSubjectQuestion = subjectQuestion[i].Split(new string[] { "^^" }, StringSplitOptions.None);
                    Entities.ExamOnlineDetail model_subjectExamOnlineDetail = new Entities.ExamOnlineDetail();
                    //model_subjectExamOnlineDetail.EOLID = _EOLID.ToString;
                    model_subjectExamOnlineDetail.EPID         = _paperID;
                    model_subjectExamOnlineDetail.BQID         = long.Parse(eachSubjectQuestion[0]);
                    model_subjectExamOnlineDetail.KLQID        = long.Parse(eachSubjectQuestion[1]);
                    model_subjectExamOnlineDetail.Score        = 0;
                    model_subjectExamOnlineDetail.CreaetUserID = loginerID;
                    model_subjectExamOnlineDetail.CreateTime   = DateTime.Now;
                    //插入在线考试小题明细表 集合
                    list_SubjetExamOnlineDetail.Add(model_subjectExamOnlineDetail);
                    //插入在线考试小题明细表 日志集合
                    string detailsLog = "在线考试小题明细表【主观题】【插入】";
                    int    epidLog;
                    int    bqidLog;
                    int    klqidLog;
                    if (int.TryParse(model_subjectExamOnlineDetail.EPID.ToString(), out epidLog))
                    {
                        Entities.ExamPaper model_examPaperLog = BLL.ExamPaper.Instance.GetExamPaper(epidLog);
                        if (model_examPaperLog != null)
                        {
                            detailsLog += "试卷名称【" + model_examPaperLog.Name + "】";
                        }
                    }
                    if (int.TryParse(model_subjectExamOnlineDetail.BQID.ToString(), out bqidLog))
                    {
                        Entities.ExamBigQuestion model_examBigQuestionLog = BLL.ExamBigQuestion.Instance.GetExamBigQuestion(bqidLog);
                        if (model_examBigQuestionLog != null)
                        {
                            detailsLog += "大题名称【" + model_examBigQuestionLog.Name + "】";
                        }
                    }
                    if (int.TryParse(model_subjectExamOnlineDetail.KLQID.ToString(), out klqidLog))
                    {
                        Entities.KLQuestion model_klqQestionLog = BLL.KLQuestion.Instance.GetKLQuestion(klqidLog);
                        if (model_klqQestionLog != null)
                        {
                            detailsLog += "小题内容【" + model_klqQestionLog.Ask + "】";
                        }
                    }
                    detailsLog += "本小题得分【" + model_subjectExamOnlineDetail.Score + "】插入时间【" + model_subjectExamOnlineDetail.CreateTime + "】的记录";
                    array_insertExamOnlineDetailLog.Add(detailsLog);

                    //在线考试答案表 实体
                    Entities.ExamOnlineAnswer model_subjectExamOnlineAnswer = new Entities.ExamOnlineAnswer();
                    //model_subjectExamOnlineAnswer.EOLDID = _EOLDID;
                    model_subjectExamOnlineAnswer.ExamAnswer   = eachSubjectQuestion[2];
                    model_subjectExamOnlineAnswer.CreaetUserID = loginerID;
                    model_subjectExamOnlineAnswer.CreateTime   = DateTime.Now;
                    //插入在线考试答案表 集合
                    list_SubjetExamOnlineAnswer.Add(model_subjectExamOnlineAnswer);

                    //插入在线考试答案表 日志集合
                    array_insertExamOnlineAnswerLog.Add("在线考试答案表【插入】提交答案:【" + model_subjectExamOnlineAnswer.ExamAnswer + "】插入时间【" + model_subjectExamOnlineAnswer.CreateTime + "】的记录");

                    //将isSubject字段修改为 true;在线考试的IsMarking需修改为0未阅
                    isSubject = true;
                }
            }

            if (model_examOnlineInsert != null)
            {
                model_examOnlineInsert.SumScore  = _totalScore;
                model_examOnlineInsert.IsMarking = isSubject == false ? 1 : 0;

                //准备插入数据的日志
                string logStr = string.Empty;
                if (type == "save")
                {
                    logStr += "【保存】";
                }
                else
                {
                    logStr += "【提交】";
                }
                logStr += "在线考试表【插入】";
                string meiidStr  = model_examOnlineInsert.IsMakeUp == 1 ? "补考项目ID【" + model_examOnlineInsert.MEIID + "】" : "";
                string isMakeUp  = model_examOnlineInsert.IsMakeUp == 1 ? "补考" : "未补考";
                string isMakeing = model_examOnlineInsert.IsMarking == 1 ? "已阅" : "未阅";
                string status    = model_examOnlineInsert.Status == 1 ? "提交" : "保存";
                //考试项目名称
                string            eiidName       = string.Empty;
                Entities.ExamInfo model_examInfo = BLL.ExamInfo.Instance.GetExamInfo(model_examOnlineInsert.EIID);
                if (model_examInfo != null)
                {
                    eiidName = model_examInfo.Name;
                    logStr  += "考试项目名称【" + eiidName + "】";
                }
                logStr += meiidStr + "考生名称【" + BLL.Util.GetNameInHRLimitEID(loginerID) + "】考试开始时间【"
                          + model_examOnlineInsert.ExamStartTime + "】考试结束时间【"
                          + model_examOnlineInsert.ExamEndTime + "】总得分【"
                          + model_examOnlineInsert.SumScore + "】是否补考【"
                          + isMakeUp + "】是否阅卷【" + isMakeing + "】状态【" + status + "】的记录";

                arry_insertExamOnlineLog.Add(logStr);
            }
            if (model_examOnlineToUpdate != null)
            {
                model_examOnlineToUpdate.SumScore  = _totalScore;
                model_examOnlineToUpdate.IsMarking = isSubject == false ? 1 : 0;

                //准备修改数据的日志
                string logStr = string.Empty;
                if (type == "save")
                {
                    logStr += "【保存】";
                }
                else
                {
                    logStr += "【提交】";
                }
                logStr += "在线考试表【更新】";
                if (model_updateExamOnlineLog_Old.SumScore != model_examOnlineToUpdate.SumScore)
                {
                    logStr += "总得分从【" + model_updateExamOnlineLog_Old.SumScore + "】修改成【" + model_examOnlineToUpdate.SumScore + "】";
                }
                if (model_updateExamOnlineLog_Old.IsMarking != model_examOnlineToUpdate.IsMarking)
                {
                    string isMarking_Old = model_updateExamOnlineLog_Old.IsMarking == 1 ? "是" : "否";
                    string isMarking_Now = model_examOnlineToUpdate.IsMarking == 1 ? "是" : "否";
                    logStr += "是否阅卷从【" + isMarking_Old + "】修改成【" + isMarking_Now + "】";
                }
                if (model_updateExamOnlineLog_Old.ExamEndTime != model_examOnlineToUpdate.ExamEndTime)
                {
                    logStr += "考试结束时间从【" + model_updateExamOnlineLog_Old.ExamEndTime + "】修改成【" + model_examOnlineToUpdate.ExamEndTime + "】";
                }
                if (model_updateExamOnlineLog_Old.Status != model_examOnlineToUpdate.Status)
                {
                    string status_Old = model_updateExamOnlineLog_Old.Status == 1 ? "提交" : "保存";
                    string status_Now = model_examOnlineToUpdate.Status == 1 ? "提交" : "保存";
                    logStr += "考生试卷状态从【" + status_Old + "】修改成【" + status_Now + "】";
                }
                logStr += "记录";
                array_updateExamOnlineLog.Add(logStr);
            }

            #endregion

            #endregion

            #region 提交、保存 实务操作

            string        connectionstrings = ConfigurationUtil.GetAppSettingValue("ConnectionStrings_CC");
            SqlConnection connection        = new SqlConnection(connectionstrings);
            connection.Open();
            SqlTransaction tran = connection.BeginTransaction("SampleTransaction");
            try
            {
                //如果没有保存过的,新增一条;如果被保存过,修改在线考试这条记录并删除之前的小题明细和答案,然后重新插入,反之都要插入
                if (paperIsSave == false)
                {
                    //插入在线考试表一条记录 _EOLID得到返回的主键值
                    _EOLID = insertExamOnline(tran, model_examOnlineInsert);
                }
                else
                {
                    _EOLID = int.Parse(model_examOnlineToUpdate.EOLID.ToString());

                    //修改在线考试表的该条记录
                    updateExamOnline(tran, model_examOnlineToUpdate);
                    //删除明细表的该考生本张试卷ID的所有明细记录
                    for (int i = 0; i < array_examOnlineDetailDelete.Count; i++)
                    {
                        long eoldid = long.Parse(array_examOnlineDetailDelete[i].ToString());
                        BLL.ExamOnlineDetail.Instance.Delete(tran, eoldid);
                        BLL.Util.InsertUserLog(tran, "在线考试明细表【删除】主键ID:【" + eoldid + "】的记录");
                    }
                    //删除答案表的该考生本张试卷ID的所有答案记录
                    for (int j = 0; j < array_examOnlineAnswerDelete.Count; j++)
                    {
                        long recid = long.Parse(array_examOnlineAnswerDelete[j].ToString());
                        BLL.ExamOnlineAnswer.Instance.Delete(tran, recid);
                        BLL.Util.InsertUserLog(tran, "在线考试答案表【删除】主键ID:【" + recid + "】的记录");
                    }
                }

                //插入非主观题
                for (int kk = 0; kk < list_examOnlineDetail.Count; kk++)
                {
                    //插入在线考试小题明细表 _EOLDID到返回的主键值
                    Entities.ExamOnlineDetail eachExamOnlineDetail = list_examOnlineDetail[kk];
                    eachExamOnlineDetail.EOLID = _EOLID;
                    _EOLDID = insertOnlineDetail(tran, eachExamOnlineDetail);

                    //插入在线考试答案表  这两个表的插入不一定是一对,因为有的是多选,需要多条插入
                    for (int n = kk; n < array_appendValueAnswer.Count; n++)
                    {
                        if (kk == int.Parse(array_appendValueAnswer[n].ToString()))
                        {
                            Entities.ExamOnlineAnswer eachExamOnlineAnswer = list_examOnlineAnswer[n];
                            eachExamOnlineAnswer.EOLDID = _EOLDID;
                            insertExamOnlineAnswer(tran, eachExamOnlineAnswer);
                        }
                    }
                }

                //插入主观题
                for (int tt = 0; tt < list_SubjetExamOnlineDetail.Count; tt++)
                {
                    //插入在线考试小题明细表 _EOLDID到返回的主键值
                    Entities.ExamOnlineDetail eachExamOnlineDetail = list_SubjetExamOnlineDetail[tt];
                    eachExamOnlineDetail.EOLID = _EOLID;
                    _EOLDID = int.Parse(insertOnlineDetail(tran, eachExamOnlineDetail).ToString());

                    //插入在线考试答案表 这两个表的插入肯定是一对,所以不用循环list
                    Entities.ExamOnlineAnswer eachExamOnlineAnswer = list_SubjetExamOnlineAnswer[tt];
                    eachExamOnlineAnswer.EOLDID = _EOLDID;
                    insertExamOnlineAnswer(tran, eachExamOnlineAnswer);
                }

                //插入日志
                for (int log1 = 0; log1 < arry_insertExamOnlineLog.Count; log1++)
                {
                    BLL.Util.InsertUserLog(tran, arry_insertExamOnlineLog[log1].ToString());
                }
                for (int log2 = 0; log2 < array_updateExamOnlineLog.Count; log2++)
                {
                    BLL.Util.InsertUserLog(tran, array_updateExamOnlineLog[log2].ToString());
                }
                for (int log3 = 0; log3 < array_insertExamOnlineDetailLog.Count; log3++)
                {
                    BLL.Util.InsertUserLog(tran, array_insertExamOnlineDetailLog[log3].ToString());
                }
                for (int log4 = 0; log4 < array_insertExamOnlineAnswerLog.Count; log4++)
                {
                    BLL.Util.InsertUserLog(tran, array_insertExamOnlineAnswerLog[log4].ToString());
                }

                //事务提交
                tran.Commit();

                msg = "{msg:'true'}";
            }
            catch (Exception ex)
            {
                tran.Rollback();
                msg = "{msg:'" + ex.Message.ToString() + "'}";
                BLL.Loger.Log4Net.Error("在线考试异常", ex);
            }
            finally
            {
                connection.Close();
            }

            #endregion
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                //long longVal = 0;
                //if (EIID != String.Empty && long.TryParse(EIID,out longVal))
                //{
                //    model = BLL.ExamInfo.Instance.GetExamInfo(longVal);
                //    examPaper = BLL.ExamPaper.Instance.GetExamPaper(model.EPID);
                //    EmployeeNames = getEmployeeNames(long.Parse(EIID), 0,model.EPID);

                //    if (model.IsMakeUp == 1)
                //    {
                //        examInfo_Make = BLL.MakeUpExamInfo.Instance.GetMakeUpExamInfoByEIID( Convert.ToInt32(model.EIID));

                //        examPaper_Make = BLL.ExamPaper.Instance.GetExamPaper(examInfo_Make.MakeUpEPID);

                //        EmployeeNames_Make = getEmployeeNames(long.Parse(EIID), examInfo_Make.MEIID,Convert.ToInt32(examInfo_Make.MakeUpEPID));
                //    }
                //    if (model != null)
                //    {
                //        hidEIID.Value = EIID;
                //        hidEName.Value = model.Name;
                //    }
                //}


                if (string.IsNullOrEmpty(EIID))
                {
                    Response.Write(@"<script language='javascript'>alert('考试项目ID不能为空,页面将被关闭。');try {
                                                           window.external.MethodScript('/browsercontrol/closepagereloadppage');
                                                       }
                                                       catch (e) {
                                                           window.opener = null; window.open('', '_self'); window.close();
                                                       }</script>");
                }
                else
                {
                    long longVal = 0;
                    if (long.TryParse(EIID, out longVal))
                    {
                        model = BLL.ExamInfo.Instance.GetExamInfo(longVal);


                        if (model == null)
                        {
                            Response.Write(@"<script language='javascript'>alert('考试项目不存在,页面将被关闭。');try {
                                                           window.external.MethodScript('/browsercontrol/closepagereloadppage');
                                                       }
                                                       catch (e) {
                                                           window.opener = null; window.open('', '_self'); window.close();
                                                       }</script>");
                        }
                        else
                        {
                            examPaper = BLL.ExamPaper.Instance.GetExamPaper(model.EPID);
                            if (examPaper == null)
                            {
                                Response.Write(@"<script language='javascript'>alert('考试试卷不存在,页面将被关闭。');try {
                                                           window.external.MethodScript('/browsercontrol/closepagereloadppage');
                                                       }
                                                       catch (e) {
                                                           window.opener = null; window.open('', '_self'); window.close();
                                                       }</script>");
                            }
                            else
                            {
                                EmployeeNames  = getEmployeeNames(long.Parse(EIID), 0, model.EPID);
                                hidEIID.Value  = EIID;
                                hidEName.Value = model.Name;
                                if (model.IsMakeUp == 1)
                                {
                                    examInfo_Make = BLL.MakeUpExamInfo.Instance.GetMakeUpExamInfoByEIID(Convert.ToInt32(model.EIID));
                                    if (examInfo_Make != null)
                                    {
                                        examPaper_Make = BLL.ExamPaper.Instance.GetExamPaper(examInfo_Make.MakeUpEPID);
                                        if (examPaper_Make != null)
                                        {
                                            EmployeeNames_Make = getEmployeeNames(long.Parse(EIID), examInfo_Make.MEIID, Convert.ToInt32(examInfo_Make.MakeUpEPID));
                                        }
                                        else
                                        {
                                            Response.Write(@"<script language='javascript'>alert('补考试卷不存在,页面将被关闭。');try {
                                                           window.external.MethodScript('/browsercontrol/closepagereloadppage');
                                                       }
                                                       catch (e) {
                                                           window.opener = null; window.open('', '_self'); window.close();
                                                       }</script>");
                                        }
                                    }
                                    else
                                    {
                                        Response.Write(@"<script language='javascript'>alert('补考项目不存在,页面将被关闭。');try {
                                                           window.external.MethodScript('/browsercontrol/closepagereloadppage');
                                                       }
                                                       catch (e) {
                                                           window.opener = null; window.open('', '_self'); window.close();
                                                       }</script>");
                                    }
                                }
                            }
                        }
                    }
                    else
                    {
                        Response.Write(@"<script language='javascript'>alert('考试项目ID数据格式不正确,页面将被关闭。');try {
                                                           window.external.MethodScript('/browsercontrol/closepagereloadppage');
                                                       }
                                                       catch (e) {
                                                           window.opener = null; window.open('', '_self'); window.close();
                                                       }</script>");
                    }
                }
            }
        }
Esempio n. 9
0
 /// <summary>
 /// 更新一条数据
 /// </summary>
 public int Update(SqlTransaction sqltran, Entities.ExamInfo model)
 {
     return(Dal.ExamInfo.Instance.Update(sqltran, model));
 }
Esempio n. 10
0
 /// <summary>
 /// 更新一条数据
 /// </summary>
 public int Update(Entities.ExamInfo model)
 {
     return(Dal.ExamInfo.Instance.Update(model));
 }
Esempio n. 11
0
 /// <summary>
 /// 增加一条数据
 /// </summary>
 public int  Insert(SqlTransaction sqltran, Entities.ExamInfo model)
 {
     return(Dal.ExamInfo.Instance.Insert(sqltran, model));
 }
Esempio n. 12
0
 /// <summary>
 /// 增加一条数据
 /// </summary>
 public int  Insert(Entities.ExamInfo model)
 {
     return(Dal.ExamInfo.Instance.Insert(model));
 }
Esempio n. 13
0
        private Entities.ExamInfo LoadSingleExamInfo(DataRow row)
        {
            Entities.ExamInfo model = new Entities.ExamInfo();

            if (row["EIID"].ToString() != "")
            {
                model.EIID = long.Parse(row["EIID"].ToString());
            }
            model.Name = row["Name"].ToString();
            if (row["ECID"].ToString() != "")
            {
                model.ECID = int.Parse(row["ECID"].ToString());
            }
            model.Description   = row["Description"].ToString();
            model.BusinessGroup = row["BusinessGroup"].ToString();
            if (row["EPID"].ToString() != "")
            {
                model.EPID = int.Parse(row["EPID"].ToString());
            }
            if (row["ExamStartTime"].ToString() != "")
            {
                model.ExamStartTime = DateTime.Parse(row["ExamStartTime"].ToString());
            }
            if (row["ExamEndTime"].ToString() != "")
            {
                model.ExamEndTime = DateTime.Parse(row["ExamEndTime"].ToString());
            }
            if (row["JoinNum"].ToString() != "")
            {
                model.JoinNum = int.Parse(row["JoinNum"].ToString());
            }
            if (row["IsMakeUp"].ToString() != "")
            {
                model.IsMakeUp = int.Parse(row["IsMakeUp"].ToString());
            }
            if (row["CreateTime"].ToString() != "")
            {
                model.CreateTime = DateTime.Parse(row["CreateTime"].ToString());
            }
            if (row["CreaetUserID"].ToString() != "")
            {
                model.CreaetUserID = int.Parse(row["CreaetUserID"].ToString());
            }
            if (row["LastModifyTime"].ToString() != "")
            {
                model.LastModifyTime = DateTime.Parse(row["LastModifyTime"].ToString());
            }
            if (row["LastModifyUserID"].ToString() != "")
            {
                model.LastModifyUserID = int.Parse(row["LastModifyUserID"].ToString());
            }
            if (row["Status"].ToString() != "")
            {
                model.Status = int.Parse(row["Status"].ToString());
            }
            if (row["BGID"] != null && row["BGID"].ToString() != "")
            {
                model.BGID = int.Parse(row["BGID"].ToString());
            }
            return(model);
        }