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
|
|||
|
}
|
|||
|
}
|