296 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			C#
		
	
	
	
			
		
		
	
	
			296 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			C#
		
	
	
	
| using System;
 | |
| using System.Collections.Generic;
 | |
| using System.Linq;
 | |
| using System.Net;
 | |
| using System.Net.Http;
 | |
| using System.Web.Http;
 | |
| using BLL;
 | |
| namespace WebAPI.Controllers
 | |
| {
 | |
|     /// <summary>
 | |
|     /// 知识竞赛-考生记录信息
 | |
|     /// </summary>
 | |
|     public class ServerTestRecordController : ApiController
 | |
|     {
 | |
|         #region 获取考生信息
 | |
|         /// <summary>
 | |
|         /// 获取考生信息
 | |
|         /// </summary>
 | |
|         /// <param name="testPlanId"></param>
 | |
|         /// <param name="testManId"></param>
 | |
|         /// <param name="userType"></param>
 | |
|         /// <param name="identityCard"></param>
 | |
|         /// <returns></returns>
 | |
|         public Model.ResponeData getTestRecordInfo(string testPlanId, string testManId, string userType,  string identityCard)
 | |
|         {
 | |
|             var responeData = new Model.ResponeData();
 | |
|             try
 | |
|             {
 | |
|                 responeData.data = APIServerTestRecordService.getTestRecordInfo(testPlanId, testManId, userType, identityCard);
 | |
|             }
 | |
|             catch (Exception ex)
 | |
|             {
 | |
|                 responeData.code = 0;
 | |
|                 responeData.message = ex.Message;
 | |
|             }
 | |
|             return responeData;
 | |
|         }
 | |
|         #endregion
 | |
| 
 | |
|         #region 保存知识竞赛考生信息
 | |
|         /// <summary>
 | |
|         /// 保存知识竞赛考生信息
 | |
|         /// </summary>
 | |
|         /// <param name="testRecord">考生答题信息</param>
 | |
|         [HttpPost]
 | |
|         public Model.ResponeData SaveTestRecord([FromBody] Model.TestRecordItem testRecord)
 | |
|         {
 | |
|             var responeData = new Model.ResponeData();
 | |
|             try
 | |
|             {
 | |
|                 responeData.data = APIServerTestRecordService.SaveTestRecord(testRecord);               
 | |
|             }
 | |
|             catch (Exception ex)
 | |
|             {
 | |
|                 responeData.code = 0;
 | |
|                 responeData.message = ex.Message;
 | |
|             }
 | |
|             return responeData;
 | |
|         }
 | |
|         #endregion
 | |
| 
 | |
|         #region 生成试卷开始考试
 | |
|         /// <summary>
 | |
|         /// 生成试卷开始考试
 | |
|         /// </summary>
 | |
|         /// <param name="testPlanId">培训考试计划ID</param>
 | |
|         /// <param name="testRecordId">考生信息ID</param>
 | |
|         /// <returns></returns>
 | |
|         public Model.ResponeData getCreateTestRecordItem(string testPlanId, string testRecordId)
 | |
|         {
 | |
|             var responeData = new Model.ResponeData();
 | |
|             try
 | |
|             {
 | |
|                 var getTestPlan = Funs.DB.Test_TestPlan.FirstOrDefault(x => x.TestPlanId == testPlanId && x.States == Const.State_2
 | |
|                         && x.TestStartTime <= DateTime.Now && x.TestEndTime > DateTime.Now);
 | |
|                 if (getTestPlan != null)
 | |
|                 {
 | |
|                     var getTestRecord = Funs.DB.Test_TestRecord.FirstOrDefault(x => x.TestRecordId == testRecordId && !x.TestEndTime.HasValue);
 | |
|                     if (getTestRecord != null)
 | |
|                     {
 | |
|                         responeData.data = APIServerTestRecordService.CreateTestRecordItem(testPlanId, testRecordId);
 | |
|                     }
 | |
|                     else
 | |
|                     {
 | |
|                         responeData.code = 2;
 | |
|                         responeData.message = "您未加入到此次考试中!";
 | |
|                     }
 | |
|                 }
 | |
|                 else
 | |
|                 {
 | |
|                     responeData.code = 2;
 | |
|                     responeData.message = "不在考试时间内!";
 | |
|                 }
 | |
|             }
 | |
|             catch (Exception ex)
 | |
|             {
 | |
|                 responeData.code = 0;
 | |
|                 responeData.message = ex.Message;
 | |
|             }
 | |
|             return responeData;
 | |
|         }
 | |
|         #endregion
 | |
| 
 | |
|         #region 根据TestPlanId获取考生及试卷列表
 | |
|         /// <summary>
 | |
|         /// 根据TestPlanId获取考生及试卷列表
 | |
|         /// </summary>
 | |
|         /// <param name="testPlanId"></param>
 | |
|         /// <returns>考试人员</returns>
 | |
|         public Model.ResponeData getTestRecordListByTestPlanId(string testPlanId)
 | |
|         {
 | |
|             var responeData = new Model.ResponeData();
 | |
|             try
 | |
|             {
 | |
|                 responeData.data = APIServerTestRecordService.getTestRecordListByTestPlanId(testPlanId);
 | |
|             }
 | |
|             catch (Exception ex)
 | |
|             {
 | |
|                 responeData.code = 0;
 | |
|                 responeData.message = ex.Message;
 | |
|             }
 | |
|             return responeData;
 | |
|         }
 | |
|         #endregion
 | |
| 
 | |
|         #region 根据试卷ID获取试卷记录详细
 | |
|         /// <summary>
 | |
|         /// 根据试卷ID获取试卷记录详细
 | |
|         /// </summary>
 | |
|         /// <param name="testRecordId"></param>
 | |
|         /// <returns>试卷详细</returns>
 | |
|         public Model.ResponeData getTestRecordByTestRecordId(string testRecordId)
 | |
|         {
 | |
|             var responeData = new Model.ResponeData();
 | |
|             try
 | |
|             {
 | |
|                 responeData.data = APIServerTestRecordService.getTestRecordByTestRecordId(testRecordId);
 | |
|             }
 | |
|             catch (Exception ex)
 | |
|             {
 | |
|                 responeData.code = 0;
 | |
|                 responeData.message = ex.Message;
 | |
|             }
 | |
|             return responeData;
 | |
|         }
 | |
|         #endregion
 | |
| 
 | |
|         #region 根据TestRecordId获取试卷题目列表
 | |
|         /// <summary>
 | |
|         /// 根据TestRecordId获取试卷题目列表
 | |
|         /// </summary>
 | |
|         /// <param name="testRecordId"></param>
 | |
|         /// <param name="pageIndex">页码</param>
 | |
|         /// <returns>试卷题目列表</returns>
 | |
|         public Model.ResponeData getTestRecordItemListByTestRecordId(string testRecordId, int pageIndex)
 | |
|         {
 | |
|             var responeData = new Model.ResponeData();
 | |
|             try
 | |
|             {
 | |
|                 var getDataLists = APIServerTestRecordService.geTestRecordItemListByTestRecordId(testRecordId);
 | |
|                 int pageCount = getDataLists.Count;
 | |
|                 if (pageCount > 0 && pageIndex > 0)
 | |
|                 {
 | |
|                     getDataLists = getDataLists.Skip(Funs.PageSize * (pageIndex - 1)).Take(Funs.PageSize).ToList();
 | |
|                 }
 | |
|                 responeData.data = new { pageCount, getDataLists };
 | |
| 
 | |
|                 //List<Model.TestRecordItemItem> getDataLists = new List<Model.TestRecordItemItem>();
 | |
|                 //int pageCount = Funs.DB.Test_TestRecordItem.Count(x => x.TestRecordId == testRecordId); ;
 | |
|                 //if (pageCount > 0 && pageIndex >= 0)
 | |
|                 //{
 | |
|                 //    getDataLists = APIServerTestRecordService.geTestRecordItemListByTestRecordId(testRecordId, pageIndex);
 | |
|                 //   // getDataLists.OrderBy(x => x.TestType).ThenBy(x => x.TrainingItemCode).Skip(Funs.PageSize * (pageIndex - 1)).Take(Funs.PageSize).ToList();
 | |
|                 //}
 | |
| 
 | |
|                 //responeData.data = new { pageCount, getDataLists };
 | |
|             }
 | |
|             catch (Exception ex)
 | |
|             {
 | |
|                 responeData.code = 0;
 | |
|                 responeData.message = ex.Message;
 | |
|             }
 | |
|             return responeData;
 | |
|         }
 | |
|         #endregion
 | |
| 
 | |
|         #region 获取当前试卷的答题倒计时
 | |
|         /// <summary>
 | |
|         /// 获取当前试卷的答题倒计时
 | |
|         /// </summary>
 | |
|         /// <param name="testRecordId"></param>
 | |
|         /// <returns></returns>
 | |
|         public Model.ResponeData getTestTimesByTestRecordId(string testRecordId)
 | |
|         {
 | |
|             var responeData = new Model.ResponeData();
 | |
|             try
 | |
|             {
 | |
|                 int mTime = 0;
 | |
|                 using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
 | |
|                 {
 | |
|                     var getTestRecord = db.Test_TestRecord.FirstOrDefault(x => x.TestRecordId == testRecordId);
 | |
|                     if (getTestRecord != null)
 | |
|                     {
 | |
|                         DateTime startTime = DateTime.Now;
 | |
|                         if (getTestRecord.TestStartTime.HasValue)
 | |
|                         {
 | |
|                             startTime = getTestRecord.TestStartTime.Value;
 | |
|                         }
 | |
|                         else
 | |
|                         {
 | |
|                             getTestRecord.TestStartTime = startTime;
 | |
|                             db.SubmitChanges();
 | |
|                         }
 | |
|                     }
 | |
|                     mTime = Convert.ToInt32((getTestRecord.TestStartTime.Value.AddMinutes(getTestRecord.Duration.Value) - DateTime.Now).TotalSeconds);
 | |
|                 }
 | |
|                 responeData.data = new { mTime };
 | |
|             }
 | |
|             catch (Exception ex)
 | |
|             {
 | |
|                 responeData.code = 0;
 | |
|                 responeData.message = ex.Message;
 | |
|             }
 | |
|             return responeData;
 | |
|         }
 | |
|         #endregion
 | |
| 
 | |
|         #region 根据TestRecordItemId、selectedItem 考生答题
 | |
|         /// <summary>
 | |
|         /// 根据TestRecordItemId、selectedItem 考生答题
 | |
|         /// </summary>
 | |
|         /// <param name="testRecordItemId">题目ID</param>
 | |
|         /// <param name="selectedItem">选项</param>
 | |
|         public Model.ResponeData getTestRecordItemAnswerBySelectedItem(string testRecordItemId, string selectedItem)
 | |
|         {
 | |
|             var responeData = new Model.ResponeData();
 | |
|             try
 | |
|             {
 | |
|                 var getItem = Funs.DB.Test_TestRecordItem.FirstOrDefault(e => e.TestRecordItemId == testRecordItemId);
 | |
|                 if (getItem != null)
 | |
|                 {
 | |
|                     //更新没有结束时间且超时的考试记录
 | |
|                     int closeCount = ServerTestRecordService.UpdateTestEndTimeNull(getItem.TestRecordId);
 | |
|                     if (closeCount > 0)
 | |
|                     {
 | |
|                         responeData.code = 2;
 | |
|                         responeData.message = "本次考试已结束,系统自动交卷!";
 | |
|                     }
 | |
|                     else
 | |
|                     {
 | |
|                         APIServerTestRecordService.getTestRecordItemAnswerBySelectedItem(getItem, selectedItem);
 | |
|                     }
 | |
|                 }
 | |
|                 else
 | |
|                 {
 | |
|                     responeData.code = 0;
 | |
|                     responeData.message = "试题有问题!";
 | |
|                 }
 | |
|             }
 | |
|             catch (Exception ex)
 | |
|             {
 | |
|                 responeData.code = 0;
 | |
|                 responeData.message = ex.Message;
 | |
|             }
 | |
| 
 | |
|             return responeData;
 | |
|         }
 | |
|         #endregion
 | |
| 
 | |
|         #region 交卷 
 | |
|         /// <summary>
 | |
|         ///  交卷
 | |
|         /// </summary>
 | |
|         /// <param name="testRecordId">试卷ID</param>
 | |
|         public Model.ResponeData getSubmitTestRecordByTestRecordId(string testRecordId)
 | |
|         {
 | |
|             var responeData = new Model.ResponeData();
 | |
|             try
 | |
|             {                                
 | |
|                 ////考试分数
 | |
|                 var score= APIServerTestRecordService.getSubmitTestRecord(testRecordId);
 | |
|                 responeData.data = score;
 | |
|                 responeData.message = "您的成绩为:【" + score.ToString() + "】";
 | |
|             }
 | |
|             catch (Exception ex)
 | |
|             {
 | |
|                 responeData.code = 0;
 | |
|                 responeData.message = ex.Message;
 | |
|             }
 | |
| 
 | |
|             return responeData;
 | |
|         }
 | |
|         #endregion
 | |
|     }
 | |
| }
 |