using BLL;
using System;
using System.Linq;
using System.Web.Http;
namespace WebAPI.Controllers
{
///
/// 考试-考生记录信息
///
public class TestingController : ApiController
{
#region 根据TestPlanId获取考生及试卷列表
///
/// 根据TestPlanId获取考生及试卷列表
///
///
/// 考试人员
public Model.ResponeData getTestRecordListByTestPlanId(string testPlanId)
{
var responeData = new Model.ResponeData();
try
{
responeData.data = APITestRecordService.getTestRecordListByTestPlanId(testPlanId);
}
catch (Exception ex)
{
responeData.code = 0;
responeData.message = ex.Message;
}
return responeData;
}
///
/// 获取考生
///
///
///
public Model.ResponeData getTestRecordTestManByTestPlanId(string testPlanId)
{
var responeData = new Model.ResponeData();
try
{
responeData.data = APITestRecordService.getTestRecordTestManByTestPlanId(testPlanId);
}
catch (Exception ex)
{
responeData.code = 0;
responeData.message = ex.Message;
}
return responeData;
}
#endregion
#region 根据试卷ID获取试卷记录详细
///
/// 根据试卷ID获取试卷记录详细
///
///
/// 试卷详细
public Model.ResponeData getTestRecordByTestRecordId(string testRecordId)
{
var responeData = new Model.ResponeData();
try
{
responeData.data = APITestRecordService.getTestRecordByTestRecordId(testRecordId);
}
catch (Exception ex)
{
responeData.code = 0;
responeData.message = ex.Message;
}
return responeData;
}
#endregion
#region 根据TestRecordId获取试卷题目列表
///
/// 根据TestRecordId获取试卷题目列表
///
///
/// 页码
/// 试卷题目列表
public Model.ResponeData getTestRecordItemListByTestRecordId(string testRecordId, int pageIndex)
{
var responeData = new Model.ResponeData();
try
{
var getDataLists = APITestRecordService.geTestRecordItemListByTestRecordId(testRecordId, pageIndex);
int pageCount = APITestRecordService.geTestRecordItemCount;
responeData.data = new { pageCount, getDataLists };
}
catch (Exception ex)
{
responeData.code = 0;
responeData.message = ex.Message;
}
return responeData;
}
#endregion
#region 获取当前试卷的答题倒计时
///
/// 获取当前试卷的答题倒计时
///
///
///
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.Training_TestRecord.FirstOrDefault(e => e.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) - DateTime.Now).TotalSeconds);
}
}
responeData.data = new { mTime };
}
catch (Exception ex)
{
responeData.code = 0;
responeData.message = ex.Message;
}
return responeData;
}
#endregion
#region 根据TestRecordItemId获取试卷题目详细
///
/// 根据TestRecordItemId获取试卷题目详细
///
///
/// 考试人员
public Model.ResponeData getTestRecordItemByTestRecordItemId(string testRecordItemId)
{
var responeData = new Model.ResponeData();
try
{
responeData.data = APITestRecordService.geTestRecordItemByTestRecordItemId(testRecordItemId);
}
catch (Exception ex)
{
responeData.code = 0;
responeData.message = ex.Message;
}
return responeData;
}
#endregion
#region 根据ProjectId、PersonId获取当前人试卷列表
///
/// 根据ProjectId、PersonId获取当前人试卷列表
///
/// 项目ID
/// 人员ID(null查全部)
/// 页码
/// 考试记录列表
public Model.ResponeData getTrainingTestRecordListByProjectIdPersonId(string projectId, string personId, int pageIndex)
{
var responeData = new Model.ResponeData();
try
{
personId = PersonService.GetPersonIdByUserId(personId);
var getDataLists = APITestRecordService.getTrainingTestRecordListByProjectIdPersonId(projectId, personId);
int pageCount = getDataLists.Count;
if (pageCount > 0 && pageIndex > 0)
{
getDataLists = getDataLists.OrderByDescending(x => x.TestStartTime).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 根据ProjectId获取所有考试记录列表
///
/// 根据ProjectId获取所有考试记录列表
///
/// 项目ID
/// 页码
/// 考试记录列表
public Model.ResponeData getTrainingTestRecordListByProjectId(string projectId, int pageIndex)
{
var responeData = new Model.ResponeData();
try
{
var getDataLists = APITestRecordService.getTrainingTestRecordListByProjectId(projectId, null, null, null, null);
int pageCount = getDataLists.Count;
if (pageCount > 0 && pageIndex > 0)
{
getDataLists = getDataLists.OrderByDescending(x => x.TestStartTime).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 根据ProjectId获取所有考试记录列表
///
/// 根据ProjectId获取所有考试记录列表
///
/// 项目ID
/// 单位ID
/// 岗位ID
/// 0-未通过;1通过;空所有
/// 页码
/// 考试记录列表
public Model.ResponeData getTrainingTestRecordListQuery(string projectId, string unitId, string workPostId, string strPass, int pageIndex)
{
var responeData = new Model.ResponeData();
try
{
var getDataLists = APITestRecordService.getTrainingTestRecordListByProjectId(projectId, unitId, workPostId, strPass, string.Empty);
int pageCount = getDataLists.Count;
if (pageCount > 0 && pageIndex > 0)
{
getDataLists = getDataLists.OrderByDescending(x => x.TestStartTime).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 根据ProjectId获取所有考试记录列表
///
/// 根据ProjectId获取所有考试记录列表
///
/// 项目ID
/// 单位ID
/// 岗位ID
/// 0-未通过;1通过;空所有
/// 参数
/// 页码
/// 考试记录列表
public Model.ResponeData getTrainingTestRecordListQuery(string projectId, string unitId, string workPostId, string strPass,string strParam, int pageIndex)
{
var responeData = new Model.ResponeData();
try
{
var getDataLists = APITestRecordService.getTrainingTestRecordListByProjectId(projectId, unitId, workPostId, strPass, strParam);
int pageCount = getDataLists.Count;
if (pageCount > 0 && pageIndex > 0)
{
getDataLists = getDataLists.OrderByDescending(x => x.TestStartTime).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 根据TestRecordItemId、selectedItem 考生答题
///
/// 根据TestRecordItemId、selectedItem 考生答题
///
/// 题目ID
/// 选项
public Model.ResponeData getTestRecordItemAnswerBySelectedItem(string testRecordItemId, string selectedItem)
{
var responeData = new Model.ResponeData();
try
{
var getItem = TestRecordItemService.GetTestRecordItemTestRecordItemId(testRecordItemId);
if (getItem != null)
{
APITestRecordService.getTestRecordItemAnswerBySelectedItem(getItem, selectedItem);
var testRecord = Funs.DB.Training_TestRecord.FirstOrDefault(x => x.TestRecordId == getItem.TestRecordId && x.TestStartTime.Value.AddMinutes(x.Duration) < DateTime.Now);
if (testRecord != null)
{
//更新没有结束时间且超时的考试记录
int closeCount = TestRecordService.UpdateTestEndTimeNull(getItem.TestRecordId);
if (closeCount > 0)
{
responeData.code = 2;
responeData.message = "本次考试已结束,系统自动交卷!";
}
}
}
else
{
responeData.code = 0;
responeData.message = "试题有问题!";
}
}
catch (Exception ex)
{
responeData.code = 0;
responeData.message = ex.Message;
}
return responeData;
}
#endregion
#region 交卷
///
/// 交卷
///
/// 试卷ID
public Model.ResponeData getSubmitTestRecordByTestRecordId(string testRecordId)
{
var responeData = new Model.ResponeData();
try
{
var getTestRecord = Funs.DB.Training_TestRecord.FirstOrDefault(e => e.TestRecordId == testRecordId);
if (getTestRecord != null)
{
string returnTestRecordId = string.Empty;
////考试分数
decimal getTestScores = APITestRecordService.getSubmitTestRecord(getTestRecord);
////及格分数
int getPassScores = SysConstSetService.getPassScore();
if (getTestScores <= getPassScores)
{
int testCount = Funs.DB.Training_TestRecord.Where(x => x.TestPlanId == getTestRecord.TestPlanId && x.TestManId == getTestRecord.TestManId).Count();
if (testCount < 2)
{
////重新生成一条考试记录 以及考试试卷
returnTestRecordId = APITestRecordService.getResitTestRecord(getTestRecord);
responeData.message = "考试不合格!您的成绩为:【" + getTestScores.ToString() + "】,您将进入补考。";
}
else
{
// APITestRecordService.updateAll(getTestRecord.TestPlanId);
responeData.message = "考试不合格!您的成绩为:【" + getTestScores.ToString() + "】,请再次参加培训后补考。";
}
}
else
{
// APITestRecordService.updateAll(getTestRecord.TestPlanId);
responeData.message = "恭喜考试通过!您的成绩为:【" + getTestScores.ToString() + "】。";
}
responeData.data = new { getTestScores, getPassScores, returnTestRecordId };
}
}
catch (Exception ex)
{
responeData.code = 0;
responeData.message = ex.Message;
}
return responeData;
}
#endregion
}
}