Esempio n. 1
0
        public async Task <IHttpActionResult> GetExamRecord(int ExamID, int DisabledID, int First = 0)
        {
            ExamRecord examRecord = await db.ExamRecords.Where(e => e.ExamID == ExamID && e.DisabledID == DisabledID).FirstOrDefaultAsync();

            if (First != 0)
            {
                examRecord = await db.ExamRecords.Where(e => e.First == First && e.DisabledID == DisabledID && e.ExamID == ExamID).FirstOrDefaultAsync();
            }
            if (examRecord == null)
            {
                if (ExamID == 9 || ExamID == 10 || ExamID == 11)
                {
                    ExamRecord record = new ExamRecord(ExamID, DisabledID, 0, First);
                    db.ExamRecords.Add(record);
                    db.SaveChanges();
                    return(Ok(record));
                }
                else
                {
                    var ExamName = db.Categories.Find(ExamID).Name;
                    examRecord = await db.ExamRecords.Where(a => a.Exam.Name == ExamName && a.DisabledID == DisabledID).FirstOrDefaultAsync();

                    if (examRecord == null)
                    {
                        return(NotFound());
                    }
                }
            }
            return(Ok(examRecord));
        }
Esempio n. 2
0
 public ResponseMessageWrap <int> Insert([FromBody] ExamRecord examRecord)
 {
     return(new ResponseMessageWrap <int>
     {
         Body = ExamRecordService.Insert(examRecord)
     });
 }
Esempio n. 3
0
        public async Task <IHttpActionResult> ChangeExamState(ExamRecord record)
        {
            ExamRecord exam = await db.ExamRecords.Where(x => x.ExamID == record.ExamID && x.DisabledID == record.DisabledID).FirstOrDefaultAsync();

            if (exam == null)
            {
                return(NotFound());
            }
            else
            {
                var er   = db.ExamRecords.Where(x => x.DisabledID == record.DisabledID);
                var flag = false;
                foreach (var item in er)
                {
                    if (item.ExamID == 10 || item.ExamID == 11)
                    {
                        flag = true;
                    }
                }
                if (flag)
                {
                    exam.State = ExamState.已完成;
                }
                db.SaveChanges();
            }
            return(StatusCode(HttpStatusCode.NoContent));
        }
Esempio n. 4
0
        public async Task <IHttpActionResult> ModifyExamRecords(IList <ExamRecord> record)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var answer = record[0];

            ExamRecord examRecord = await db.ExamRecords.Where(e => e.ExamID == answer.ExamID && e.DisabledID == answer.DisabledID).FirstOrDefaultAsync();

            if (examRecord == null)
            {
                return(NotFound());
            }
            if (examRecord.State == ExamState.待审核)
            {
                examRecord.State   = ExamState.待完成;
                examRecord.Auditor = answer.Auditor;
            }
            else if (examRecord.State == ExamState.待完成)
            {
                examRecord.State      = ExamState.待回访;
                examRecord.Complete   = answer.Complete;
                examRecord.FinishTime = DateTime.Now;
            }
            await db.SaveChangesAsync();

            return(StatusCode(HttpStatusCode.NoContent));
        }
Esempio n. 5
0
        public async Task <IHttpActionResult> PutExamRecord(int id, ExamRecord examRecord)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            if (id != examRecord.ID)
            {
                return(BadRequest());
            }

            db.Entry(examRecord).State = EntityState.Modified;

            try
            {
                await db.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!ExamRecordExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(StatusCode(HttpStatusCode.NoContent));
        }
Esempio n. 6
0
 public ResponseMessageWrap <int> Update([FromBody] ExamRecord examRecord)
 {
     return(new ResponseMessageWrap <int>
     {
         Body = ExamRecordService.Update(examRecord)
     });
 }
Esempio n. 7
0
        public ExamMode GetExamMode(ExamRecord record)
        {
            var Exam = new ExamMode();

            Exam.ExamTime = record.BeginTime.Value.ToString("HH:mm:ss") + "-" + record.EndTime.Value.ToString("HH:mm:ss");

            //获取考试扣分项
            var breakeRules = examBreakeRuleRecordRepository.LoadEntities(s => s.ExamRecordId == record.Id);

            var breakeRulesStr = string.Join(",", breakeRules.Select(s => s.DeductedReason));

            Exam.Score          = record.Score;
            Exam.DedictionRules = breakeRulesStr;
            var Captures = examCaptureRepository.LoadEntities(s => s.ExamRecordId == record.Id);

            for (int i = 0; i < Captures.Count() && i < 3; i++)
            {
                if (i == 0)
                {
                    Exam.CaptureImageFirstPath = GetImagePath("FirstCaptureImage", Captures[i].Image);
                }
                else if (i == 1)
                {
                    Exam.CaptureImageSecondPath = GetImagePath("SecondCaptureImage", Captures[i].Image);
                }
                else if (i == 2)
                {
                    Exam.CaptureImageThirdPath = GetImagePath("ThirdCaptureImage", Captures[i].Image);
                }
            }

            return(Exam);
            //简单逻辑 我只需要前面三张照片
        }
Esempio n. 8
0
        /// <summary>
        /// 通过条件查询
        /// </summary>
        /// <param name="WhereString">查询条件</param>
        /// <returns>ExamRecord实体类对象</returns>
        public List <ExamRecord> SelectByWhere(string WhereString)
        {
            SqlParameter[] param = new SqlParameter[]
            {
                new SqlParameter("@where", WhereString)
            };
            List <ExamRecord> list  = new List <ExamRecord>();
            ExamRecord        model = null;

            using (SqlDataReader dr = DBHelper.RunProcedure("ExamRecord_SelectByWhere", param))
            {
                while (dr.Read())
                {
                    model = new ExamRecord();
                    model.ExamRecordId = Convert.ToInt32(dr["ExamRecordId"]);
                    model.ExamId       = Convert.ToInt32(dr["ExamId"]);
                    model.PaperId      = Convert.ToInt32(dr["PaperId"]);
                    model.UserId       = Convert.ToInt32(dr["UserId"]);
                    if (DBNull.Value != dr["CreateDate"])
                    {
                        model.CreateDate = Convert.ToDateTime(dr["CreateDate"]);
                    }
                    if (DBNull.Value != dr["LastDate"])
                    {
                        model.LastDate = Convert.ToDateTime(dr["LastDate"]);
                    }
                    if (DBNull.Value != dr["TotalTime"])
                    {
                        model.TotalTime = Convert.ToInt32(dr["TotalTime"]);
                    }
                    if (DBNull.Value != dr["ExamNumber"])
                    {
                        model.ExamNumber = Convert.ToInt32(dr["ExamNumber"]);
                    }
                    if (DBNull.Value != dr["LastScore"])
                    {
                        model.LastScore = Convert.ToInt32(dr["LastScore"]);
                    }
                    if (DBNull.Value != dr["HighScore"])
                    {
                        model.HighScore = Convert.ToInt32(dr["HighScore"]);
                    }
                    if (DBNull.Value != dr["UserCredit"])
                    {
                        model.UserCredit = Convert.ToDecimal(dr["UserCredit"]);
                    }
                    if (DBNull.Value != dr["UserCoin"])
                    {
                        model.UserCoin = Convert.ToDecimal(dr["UserCoin"]);
                    }
                    if (DBNull.Value != dr["IsDelete"])
                    {
                        model.IsDelete = Convert.ToBoolean(dr["IsDelete"]);
                    }
                    list.Add(model);
                }
            }
            return(list);
        }
Esempio n. 9
0
 public ExamFinishModel() : base()
 {
     VexamRecord          = new ExamRecord();
     VExamScore           = new ExamScore();
     Listexam             = new ExamScoreInfo();
     examList             = new List <ExamScoreInfo>();
     ListVexamRecord      = new List <ExamRecord>();
     Listexam.ansowerList = new List <LAnsower>();
 }
Esempio n. 10
0
 public ScoreLoader(string schoolYear, string semester, ExamRecord exam, bool isCurrentSemester)
 {
     this.SchoolYear           = schoolYear;
     this.Semester             = semester;
     this.Exam                 = exam;
     this.ExamID               = int.Parse(exam.ID);
     this.isCurrentSemester    = isCurrentSemester;
     this._DicStudentScoreInfo = new Dictionary <string, StudentScoreInfo>();
 }
Esempio n. 11
0
        /// <summary>
        /// 通过Id查询
        /// </summary>
        /// <param name="Id">主键Id</param>
        /// <returns>ExamRecord实体类对象</returns>
        public ExamRecord SelectById(int Id)
        {
            SqlParameter[] param = new SqlParameter[]
            {
                new SqlParameter("@ExamRecordId", Id)
            };
            ExamRecord model = new ExamRecord();

            using (SqlDataReader dr = DBHelper.RunProcedure("ExamRecord_SelectById", param))
            {
                if (dr.Read())
                {
                    model.ExamRecordId = Convert.ToInt32(dr["ExamRecordId"]);
                    model.ExamId       = Convert.ToInt32(dr["ExamId"]);
                    model.PaperId      = Convert.ToInt32(dr["PaperId"]);
                    model.UserId       = Convert.ToInt32(dr["UserId"]);
                    if (DBNull.Value != dr["CreateDate"])
                    {
                        model.CreateDate = Convert.ToDateTime(dr["CreateDate"]);
                    }
                    if (DBNull.Value != dr["LastDate"])
                    {
                        model.LastDate = Convert.ToDateTime(dr["LastDate"]);
                    }
                    if (DBNull.Value != dr["TotalTime"])
                    {
                        model.TotalTime = Convert.ToInt32(dr["TotalTime"]);
                    }
                    if (DBNull.Value != dr["ExamNumber"])
                    {
                        model.ExamNumber = Convert.ToInt32(dr["ExamNumber"]);
                    }
                    if (DBNull.Value != dr["LastScore"])
                    {
                        model.LastScore = Convert.ToInt32(dr["LastScore"]);
                    }
                    if (DBNull.Value != dr["HighScore"])
                    {
                        model.HighScore = Convert.ToInt32(dr["HighScore"]);
                    }
                    if (DBNull.Value != dr["UserCredit"])
                    {
                        model.UserCredit = Convert.ToDecimal(dr["UserCredit"]);
                    }
                    if (DBNull.Value != dr["UserCoin"])
                    {
                        model.UserCoin = Convert.ToDecimal(dr["UserCoin"]);
                    }
                    if (DBNull.Value != dr["IsDelete"])
                    {
                        model.IsDelete = Convert.ToBoolean(dr["IsDelete"]);
                    }
                }
            }
            return(model);
        }
Esempio n. 12
0
        internal ExamRecordEditor(ExamRecord record)
            : this()
        {
            ID           = record.ID;
            Name         = record.Name;
            Description  = record.Description;
            DisplayOrder = record.DisplayOrder;

            Exam = record;
        }
Esempio n. 13
0
        public SCETakeRecordEditor(SCAttendRecord scattend, ExamRecord exam)
        {
            Score  = null;
            Effort = null;
            Text   = string.Empty;

            RefSCAttendID = scattend.ID;
            RefExamID     = exam.ID;
            RefStudentID  = scattend.RefStudentID;
            RefCourseID   = scattend.RefCourseID;
        }
Esempio n. 14
0
        public async Task <IHttpActionResult> GetExamRecord(int id)
        {
            ExamRecord examRecord = await db.ExamRecords.FindAsync(id);

            if (examRecord == null)
            {
                return(NotFound());
            }

            return(Ok(examRecord));
        }
Esempio n. 15
0
 /// <summary>
 /// Add exam record
 /// </summary>
 /// <param name="examRecord">
 /// ExamRecord include ExamScore, IsPass, UserId, ExamId, UserAnwser, EffectiveTime, SubmitTime
 /// </param>
 /// <returns>Influence row</returns>
 public int AddExamRecord(ExamRecord examRecord)
 {
     try
     {
         return(client.AddExamRecord(examRecord));
     }
     catch (RequestExceprion ex)
     {
         throw ex;
     }
 }
Esempio n. 16
0
        public async Task <IHttpActionResult> PostExamRecord(ExamRecord examRecord)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            db.ExamRecords.Add(examRecord);
            await db.SaveChangesAsync();

            return(CreatedAtRoute("DefaultApi", new { id = examRecord.ID }, examRecord));
        }
Esempio n. 17
0
        public async Task <IHttpActionResult> DeleteExamRecord(int id)
        {
            ExamRecord examRecord = await db.ExamRecords.FindAsync(id);

            if (examRecord == null)
            {
                return(NotFound());
            }

            db.ExamRecords.Remove(examRecord);
            await db.SaveChangesAsync();

            return(Ok(examRecord));
        }
Esempio n. 18
0
        public int update(ExamRecord examRecord)
        {
            String sql = "update examRecord set TaskConfigId=" + examRecord.TaskConfigId + ",XmlConfig='" + examRecord.XmlConfig + "' where  BaseKey=" + examRecord.BaseKey;

            try
            {
                return(dbConnection.ExecuteNonQuery(sql));
            }
            catch (Exception)
            {
                return(0);
            }
            finally
            {
                dbConnection.Close();
            }
        }
Esempio n. 19
0
        /// <summary>
        /// 开始考试
        /// </summary>
        /// <param name="message"></param>
        public void StartExam(ExamMessage message)
        {
            //创建考试记录 写入开始时间
            //TODO:GUID
            //怎样获取当天
            ExamRecord record = new ExamRecord();

            record.BeginTime         = message.SendTime;
            record.IsPreliminaryExam = message.IsPreliminaryExam;
            //这个去获取
            record.LicensePlate  = GetLicensePlateByIdCard(message.ExamStudent.IdCard);
            record.ExamLine      = message.ExamLine;
            record.ExamStudentId = GetExamStudent(message.ExamStudent.IdCard).Id;
            record.Score         = message.Score;
            record.GUID          = message.GUID;
            record.CreateTime    = DateTime.Now;
            examRecordRepository.AddEntity(record);
        }
Esempio n. 20
0
        public void insert(ExamRecord examRecord)
        {
            examRecord.BaseKey = this.getMaxKeyValue();
            String sql = "insert into examRecord(BaseKey,TaskConfigId,XmlConfig) \n"
                         + "values(" + examRecord.BaseKey + "," + examRecord.TaskConfigId + ",'" + examRecord.XmlConfig + "')";

            try
            {
                dbConnection.ExecuteNonQuery(sql);
            }
            catch (Exception)
            {
            }
            finally
            {
                dbConnection.Close();
            }
        }
Esempio n. 21
0
 /// <summary>
 /// 增加
 /// </summary>
 /// <param name="ExamRecord">ExamRecord实体对象</param>
 /// <returns>int值,返回自增ID</returns>
 public int AddReturnId(ExamRecord model)
 {
     SqlParameter[] param = new SqlParameter[]
     {
         new SqlParameter("@ExamId", model.ExamId),
         new SqlParameter("@PaperId", model.PaperId),
         new SqlParameter("@UserId", model.UserId),
         new SqlParameter("@CreateDate", model.CreateDate),
         new SqlParameter("@LastDate", model.LastDate),
         new SqlParameter("@TotalTime", model.TotalTime),
         new SqlParameter("@ExamNumber", model.ExamNumber),
         new SqlParameter("@LastScore", model.LastScore),
         new SqlParameter("@HighScore", model.HighScore),
         new SqlParameter("@UserCredit", model.UserCredit),
         new SqlParameter("@UserCoin", model.UserCoin),
         new SqlParameter("@IsDelete", model.IsDelete)
     };
     return(Convert.ToInt32(DBHelper.ExecuteScalar("ExamRecord_AddReturnId", param)));
 }
Esempio n. 22
0
 /// <summary>
 /// 增加
 /// </summary>
 /// <param name="ExamRecord">ExamRecord实体对象</param>
 /// <returns>bool值,判断是否操作成功</returns>
 public bool Add(ExamRecord model)
 {
     SqlParameter[] param = new SqlParameter[]
     {
         new SqlParameter("@ExamId", model.ExamId),
         new SqlParameter("@PaperId", model.PaperId),
         new SqlParameter("@UserId", model.UserId),
         new SqlParameter("@CreateDate", model.CreateDate),
         new SqlParameter("@LastDate", model.LastDate),
         new SqlParameter("@TotalTime", model.TotalTime),
         new SqlParameter("@ExamNumber", model.ExamNumber),
         new SqlParameter("@LastScore", model.LastScore),
         new SqlParameter("@HighScore", model.HighScore),
         new SqlParameter("@UserCredit", model.UserCredit),
         new SqlParameter("@UserCoin", model.UserCoin),
         new SqlParameter("@IsDelete", model.IsDelete)
     };
     return(DBHelper.ExecuteNonQuery("ExamRecord_Add", param));
 }
Esempio n. 23
0
        public async Task <IHttpActionResult> ChangeRecord(int ExamID, int DisabledID, int UserID)
        {
            ExamRecord examRecord = await db.ExamRecords.Where(e => e.ExamID == ExamID && e.DisabledID == DisabledID).FirstOrDefaultAsync();

            if (examRecord == null)
            {
                return(NotFound());
            }
            else
            {
                if (examRecord.NextID == 2 && examRecord.State == ExamState.待完成)
                {
                    examRecord.State      = ExamState.待回访;
                    examRecord.Complete   = UserID;
                    examRecord.FinishTime = DateTime.Now;
                    db.SaveChanges();
                }
            }

            return(Ok(examRecord));
        }
Esempio n. 24
0
        public async Task <IHttpActionResult> BackState(ExamRecord record)
        {
            ExamRecord exam = await db.ExamRecords.Where(x => x.ExamID == record.ExamID && x.DisabledID == record.DisabledID).FirstOrDefaultAsync();

            if (exam == null)
            {
                return(NotFound());
            }
            else
            {
                if (exam.State > ExamState.已评估)
                {
                    return(StatusCode(HttpStatusCode.BadRequest));
                }
                else
                {
                    exam.State     = ExamState.待评估;
                    exam.Evaluated = false;
                    exam.NextID    = 3;
                    if (exam.ShowExam != 0)
                    {
                        ExamRecord nextExam = await db.ExamRecords.Where(x => x.ExamID == exam.ShowExam && x.DisabledID == exam.DisabledID).FirstOrDefaultAsync();

                        if (nextExam != null)
                        {
                            db.ExamRecords.Remove(nextExam);
                        }
                    }
                    var exList = db.ExamRecords.Where(x => x.First == exam.ExamID && x.DisabledID == exam.DisabledID);
                    if (exList.Count() > 0)
                    {
                        db.ExamRecords.RemoveRange(exList);
                    }
                    exam.ShowExam = 0;
                    exam.ShowArea = null;
                    db.SaveChanges();
                }
            }
            return(StatusCode(HttpStatusCode.NoContent));
        }
Esempio n. 25
0
        public async Task <IHttpActionResult> BackExam(ExamRecord record)
        {
            ExamRecord exam = await db.ExamRecords.Where(x => x.ExamID == record.ExamID && x.DisabledID == record.DisabledID).FirstOrDefaultAsync();

            if (exam == null)
            {
                return(NotFound());
            }
            else
            {
                if (exam.State == ExamState.待完成)
                {
                    exam.State      = ExamState.待审核;
                    exam.FinishTime = null;
                }
                else if (exam.State == ExamState.待审核)
                {
                    exam.State = ExamState.已评估;
                }
                db.SaveChanges();
            }
            return(StatusCode(HttpStatusCode.NoContent));
        }
Esempio n. 26
0
        public async Task <IHttpActionResult> ChangeExamNext(int examID, int disabledID, int nextID)
        {
            ExamRecord exam = await db.ExamRecords.Where(x => x.ExamID == examID && x.DisabledID == disabledID).FirstOrDefaultAsync();

            if (exam == null)
            {
                return(NotFound());
            }
            try
            {
                if (nextID == 3)
                {
                    exam.State     = ExamState.待评估;
                    exam.NextID    = nextID;
                    exam.Evaluated = false;
                }
                else
                {
                    if (nextID == 1)
                    {
                        exam.State = ExamState.待审核;
                    }
                    else if (nextID == 2)
                    {
                        exam.State = ExamState.待完成;
                    }
                    exam.NextID = nextID;
                }
                db.SaveChanges();
            }
            catch (Exception)
            {
                throw;
            }

            return(StatusCode(HttpStatusCode.NoContent));
        }
Esempio n. 27
0
        /// <summary>
        /// Init test init
        /// </summary>
        public AfterTest(TestingContent[] questionList, ExamRecord examRecord, bool isTimeOut, int correctNum)
        {
            InitializeComponent();

            questionListTemp = questionList;
            examRecordTemp   = examRecord;
            isTimeOutTemp    = isTimeOut;
            correctNumTemp   = correctNum;

            FinishedInit();

            this.StartPosition       = FormStartPosition.CenterScreen;
            this.windowClose.Click  += new EventHandler(WindowCloseClick);
            this.windowStatus.Click += new EventHandler(WindowStatusClick);
            this.windowMin.Click    += new EventHandler(WindowMinClick);
            this.head.MouseDown     += new MouseEventHandler(HeadMouseDown);
            this.head.MouseMove     += new MouseEventHandler(HeadMouseMove);

            RadiusBorder resultPaperInTime  = this.finishTimeIn.examResultPaper;
            RadiusBorder resultPaperOutTime = this.finishTimeOut.examResultPaper;

            resultPaperInTime.Click  += new EventHandler(ResultPaperClick);
            resultPaperOutTime.Click += new EventHandler(ResultPaperClick);
        }
Esempio n. 28
0
        public List <ExamRecord> ExamRecordRowMapper(IDataReader dr)
        {
            List <ExamRecord> ExamRecordList = new List <ExamRecord>();

            try
            {
                while (dr.Read())
                {
                    ExamRecord examRecord = new ExamRecord();
                    examRecord.BaseKey      = Convert.ToInt32(dr[0]);
                    examRecord.TaskConfigId = Convert.ToInt32(dr[1]);
                    examRecord.XmlConfig    = dr[2].ToString();
                    ExamRecordList.Add(examRecord);
                }
            }
            catch (Exception ex)
            {
            }
            finally
            {
                dr.Close();
            }
            return(ExamRecordList);
        }
Esempio n. 29
0
        /// <summary>
        /// Add exam record
        /// </summary>
        /// <param name="examRecord"></param>
        public int AddExamRecord(ExamRecord examRecord)
        {
            int row = 0;

            SqlConnection connection = new SqlConnection(CONNECTION_STRING);

            connection.Open();
            SqlCommand command = new SqlCommand("spAddExamRecord", connection);

            command.CommandType = CommandType.StoredProcedure;

            command.Parameters.Add(new SqlParameter("@Operation", examRecord.IsPass));
            command.Parameters.Add(new SqlParameter("@ExamScore", examRecord.ExamScore));
            command.Parameters.Add(new SqlParameter("@IsPass", examRecord.IsPass));
            command.Parameters.Add(new SqlParameter("@UserId", examRecord.UserId));
            command.Parameters.Add(new SqlParameter("@ExamId", examRecord.ExamId));
            command.Parameters.Add(new SqlParameter("@UserAnwser", examRecord.UserAnwser));
            command.Parameters.Add(new SqlParameter("@EffectiveTime", examRecord.EffectiveTime));
            command.Parameters.Add(new SqlParameter("@SubmitTime", examRecord.SubmitTime));

            row = command.ExecuteNonQuery();

            return(row);
        }
Esempio n. 30
0
        public async Task <IHttpActionResult> PostAnswers(IList <Answer> answers)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }
            //试卷编号
            var ans = new List <int>();
            //试卷的第一题
            var ansList = new List <Answer>();

            foreach (var a in answers)
            {
                if (ans.IndexOf(a.ExamID) == -1)
                {
                    ans.Add(a.ExamID);
                    ansList.Add(a);
                }
            }

            foreach (var item in ansList)
            {
                var answer = item;
                foreach (var it in answers)
                {
                    if (it.Area != null && it.ExamID == item.ExamID && it.DisabledID == item.DisabledID)
                    {
                        answer = it;
                    }
                }

                var delAnswers = db.Answers.Where(a => a.DisabledID == answer.DisabledID && a.ExamID == answer.ExamID && a.FirstExam == answer.FirstExam);
                db.Answers.RemoveRange(delAnswers);
                foreach (var addAns in answers)
                {
                    if (answer.DisabledID == addAns.DisabledID && answer.ExamID == addAns.ExamID)
                    {
                        db.Answers.Add(addAns);
                    }
                }

                var examRecord = await db.ExamRecords.FirstOrDefaultAsync(a => a.DisabledID == answer.DisabledID && a.ExamID == answer.ExamID);

                if (examRecord != null)
                {
                    if (examRecord.ExamID == 9 || examRecord.ExamID == 10 || examRecord.ExamID == 11)
                    {
                        examRecord = await db.ExamRecords.FirstOrDefaultAsync(a => a.DisabledID == answer.DisabledID && a.ExamID == answer.ExamID && a.First == answer.FirstExam);

                        if (examRecord.ExamID == 9)
                        {
                            examRecord.State = ExamState.待回访;
                        }
                        else if (examRecord.ExamID == 10 || examRecord.ExamID == 11)
                        {
                            examRecord.State      = ExamState.已完成;
                            examRecord.FinishTime = DateTime.Now;
                            examRecord            = await db.ExamRecords.FirstOrDefaultAsync(b => b.DisabledID == answer.DisabledID && b.ExamID == examRecord.First);

                            examRecord.State = ExamState.已完成;
                        }
                    }
                    else
                    {
                        examRecord.State     = ExamState.已评估;
                        examRecord.Evaluated = false;
                        if (answer.Area != null)
                        {
                            examRecord.ShowArea = answer.Area;
                        }
                        if (answer.ShowExam != 0)
                        {
                            examRecord.ShowExam = answer.ShowExam;
                        }
                    }
                }
                else
                {
                    var newRecord = new ExamRecord(answer.ExamID, answer.DisabledID, 0);
                    db.ExamRecords.Add(newRecord);
                    db.SaveChanges();
                    var record = await db.ExamRecords.FirstOrDefaultAsync(a => a.DisabledID == answer.DisabledID && a.ExamID == answer.ExamID);

                    if (record.ExamID == 9)
                    {
                        record.State = ExamState.待回访;
                    }
                    else if (record.ExamID == 10 || record.ExamID == 11)
                    {
                        record.State          = ExamState.已完成;
                        examRecord.FinishTime = DateTime.Now;
                    }
                    else
                    {
                        record.State     = ExamState.已评估;
                        record.Evaluated = false;
                        record.NextID    = 3;
                        record.First     = answer.FirstExam;
                    }
                    var fisExam = await db.ExamRecords.FirstOrDefaultAsync(a => a.DisabledID == answer.DisabledID && a.ExamID == answer.FirstExam);

                    if (answer.Area != null)
                    {
                        fisExam.ShowArea = answer.Area;
                    }
                    if (answer.ShowExam != 0)
                    {
                        fisExam.ShowExam = answer.ShowExam;
                    }
                }
            }
            await db.SaveChangesAsync();

            return(StatusCode(HttpStatusCode.NoContent));
        }