CNCEC_SUBQHSE_WUHUAN/SGGL/BLL/PersonManage/Test/ServerTestPlanService.cs

187 lines
7.5 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
namespace BLL
{
/// <summary>
/// 知识竞赛计划
/// </summary>
public static class ServerTestPlanService
{
public static Model.SGGLDB db = Funs.DB;
/// <summary>
/// 根据主键获取知识竞赛计划
/// </summary>
/// <param name="TestPlanId"></param>
/// <returns></returns>
public static Model.Test_TestPlan GetTestPlanById(string TestPlanId)
{
return Funs.DB.Test_TestPlan.FirstOrDefault(e => e.TestPlanId == TestPlanId);
}
/// <summary>
/// 添加知识竞赛计划
/// </summary>
/// <param name="TestPlan"></param>
public static void AddTestPlan(Model.Test_TestPlan TestPlan)
{
Model.SGGLDB db = Funs.DB;
Model.Test_TestPlan newTestPlan = new Model.Test_TestPlan
{
TestPlanId = TestPlan.TestPlanId,
PlanCode = TestPlan.PlanCode,
PlanName = TestPlan.PlanName,
PlanManId = TestPlan.PlanManId,
PlanDate = TestPlan.PlanDate,
TestStartTime = TestPlan.TestStartTime,
TestEndTime = TestPlan.TestEndTime,
Duration = TestPlan.Duration,
TotalScore = TestPlan.TotalScore,
QuestionCount = TestPlan.QuestionCount,
TestPalce = TestPlan.TestPalce,
QRCodeUrl = TestPlan.QRCodeUrl,
SValue = TestPlan.SValue,
MValue = TestPlan.MValue,
JValue = TestPlan.JValue,
States = TestPlan.States,
};
db.Test_TestPlan.InsertOnSubmit(newTestPlan);
db.SubmitChanges();
}
/// <summary>
/// 修改知识竞赛计划
/// </summary>
/// <param name="TestPlan"></param>
public static void UpdateTestPlan(Model.Test_TestPlan TestPlan)
{
Model.SGGLDB db = Funs.DB;
Model.Test_TestPlan newTestPlan = db.Test_TestPlan.FirstOrDefault(e => e.TestPlanId == TestPlan.TestPlanId);
if (newTestPlan != null)
{
newTestPlan.PlanCode = TestPlan.PlanCode;
newTestPlan.PlanName = TestPlan.PlanName;
newTestPlan.PlanManId = TestPlan.PlanManId;
newTestPlan.PlanDate = TestPlan.PlanDate;
newTestPlan.TestStartTime = TestPlan.TestStartTime;
newTestPlan.TestEndTime = TestPlan.TestEndTime;
newTestPlan.Duration = TestPlan.Duration;
newTestPlan.TotalScore = TestPlan.TotalScore;
newTestPlan.QuestionCount = TestPlan.QuestionCount;
newTestPlan.TestPalce = TestPlan.TestPalce;
newTestPlan.QRCodeUrl = TestPlan.QRCodeUrl;
newTestPlan.SValue = TestPlan.SValue;
newTestPlan.MValue = TestPlan.MValue;
newTestPlan.JValue = TestPlan.JValue;
newTestPlan.States = TestPlan.States;
db.SubmitChanges();
}
}
/// <summary>
/// 根据主键删除知识竞赛计划
/// </summary>
/// <param name="TestPlanId"></param>
public static void DeleteTestPlanById(string TestPlanId)
{
Model.SGGLDB db = Funs.DB;
Model.Test_TestPlan TestPlan = db.Test_TestPlan.FirstOrDefault(e => e.TestPlanId == TestPlanId);
if (TestPlan != null)
{
///删除编码表记录
CodeRecordsService.DeleteCodeRecordsByDataId(TestPlan.TestPlanId);
////删除附件表
CommonService.DeleteAttachFileById(TestPlan.TestPlanId);
///删除题目类型
ServerTestPlanTrainingService.DeleteTestPlanTrainingByTestPlanId(TestPlan.TestPlanId);
db.Test_TestPlan.DeleteOnSubmit(TestPlan);
db.SubmitChanges();
}
}
/// <summary>
/// 结束考试
/// </summary>
/// <returns></returns>
public static string EndTestPlan(string testPlanId)
{
Model.SGGLDB db = Funs.DB;
string info = string.Empty;
var getTestPlans = from x in db.Test_TestPlan
where x.States == Const.State_2 && x.TestEndTime.Value.AddMinutes(x.Duration.Value) < DateTime.Now
&& (testPlanId == null || x.TestPlanId == testPlanId)
select x;
foreach (var getTestPlan in getTestPlans)
{
string itemInfo = string.Empty;
var getTestRecords = from x in db.Test_TestRecord
where x.TestPlanId == testPlanId && (!x.TotalScore.HasValue || !x.TestEndTime.HasValue)
select x;
//// 考试下所有考试都交卷
if (getTestRecords.Count() > 0)
{
//// 扫码结束时间 + 考试时长 小于当前时间 考试结束 所有人自动交卷
if (getTestPlan.TestStartTime.Value.AddMinutes(getTestPlan.Duration.Value) < DateTime.Now)
{
foreach (var itemRecord in getTestRecords)
{
DateTime rdateTime = itemRecord.TestStartTime.HasValue ? itemRecord.TestStartTime.Value : getTestPlan.TestStartTime.Value;
itemRecord.TestEndTime = rdateTime.AddMinutes(itemRecord.Duration.Value);
itemRecord.TestScores = db.Test_TestRecordItem.Where(x => x.TestRecordId == itemRecord.TestRecordId).Sum(x => x.SubjectScore) ?? 0;
db.SubmitChanges();
}
}
else
{
itemInfo = getTestPlan.PlanCode + "竞赛中还有未交卷人员,且未达到考试结束时间!";
info += itemInfo;
}
}
if (string.IsNullOrEmpty(itemInfo))
{
getTestPlan.States = Const.State_3;
getTestPlan.ActualTime = DateTime.Now;
db.SubmitChanges();
}
}
if (getTestPlans.Count() == 0 && !string.IsNullOrEmpty(testPlanId))
{
info = "当前竞赛还不到结束时间!";
}
return info;
}
/// <summary>
/// 获取类别下拉项
/// </summary>
/// <returns></returns>
public static List<Model.Test_TestPlan> GetTestPlanList()
{
var list = (from x in Funs.DB.Test_TestPlan orderby x.PlanCode descending select x).ToList();
return list;
}
#region
/// <summary>
/// 表下拉框
/// </summary>
/// <param name="dropName">下拉框名字</param>
/// <param name="isShowPlease">是否显示请选择</param>
public static void InitTestPlanDropDownList(FineUIPro.DropDownList dropName, bool isShowPlease)
{
dropName.DataValueField = "TestPlanId";
dropName.DataTextField = "PlanName";
dropName.DataSource = GetTestPlanList();
dropName.DataBind();
if (isShowPlease)
{
Funs.FineUIPleaseSelect(dropName);
}
}
#endregion
}
}