SGGL_SHJ/SGGL/BLL/HSSE/EduTrain/TestRecordService.cs

200 lines
7.6 KiB
C#
Raw Normal View History

2022-09-05 16:36:31 +08:00
using FineUIPro;
using System;
using System.Collections;
using System.Linq;
namespace BLL
{
/// <summary>
/// 考试记录
/// </summary>
public static class TestRecordService
{
public static Model.SGGLDB db = Funs.DB;
#region
/// <summary>
/// 记录数
/// </summary>
public static int count
{
get;
set;
}
/// <summary>
/// 定义变量
/// </summary>
private static IQueryable<Model.Training_TestRecord> getDataLists = from x in db.Training_TestRecord
where x.TestStartTime.HasValue
select x;
/// <summary>
/// 获取分页列表
/// </summary>
/// <param name="personId"></param>
/// <param name="Grid1"></param>
/// <returns></returns>
public static IEnumerable getListData(string personId, Grid Grid1)
{
IQueryable<Model.Training_TestRecord> getDataList = getDataLists.Where(x => x.TestManId == personId);
count = getDataList.Count();
if (count == 0)
{
return null;
}
getDataList = SortConditionHelper.SortingAndPaging(getDataList, Grid1.SortField, Grid1.SortDirection, Grid1.PageIndex, Grid1.PageSize);
return from x in getDataList
join y in db.Training_TestPlan on x.TestPlanId equals y.TestPlanId
join z in db.Training_Plan on y.PlanId equals z.PlanId into g
from z in g.DefaultIfEmpty()
select new
{
x.TestRecordId,
x.TestPlanId,
x.ProjectId,
db.Base_Project.First(p => p.ProjectId == x.ProjectId).ProjectName,
y.PlanName,
y.PlanCode,
y.TestPalce,
y.PlanDate,
x.TestStartTime,
x.TestEndTime,
x.TestScores,
z.TrainTypeId,
db.Base_TrainType.First(u=>u.TrainTypeId == z.TrainTypeId).TrainTypeName,
z.TrainStartDate,
};
}
#endregion
/// <summary>
/// 根据主键获取考试记录
/// </summary>
/// <param name="testRecordId"></param>
/// <returns></returns>
public static Model.Training_TestRecord GetTestRecordById(string testRecordId)
{
return Funs.DB.Training_TestRecord.FirstOrDefault(e => e.TestRecordId == testRecordId);
}
/// <summary>
/// 新增考生记录信息
/// </summary>
/// <param name="Training"></param>
public static void AddTestRecord(Model.Training_TestRecord testRecord)
{
Model.SGGLDB db = Funs.DB;
Model.Training_TestRecord newTestRecord = new Model.Training_TestRecord
{
TestRecordId = testRecord.TestRecordId,
ProjectId = testRecord.ProjectId,
TestPlanId = testRecord.TestPlanId,
TestManId = testRecord.TestManId,
TestType = testRecord.TestType,
};
if (string.IsNullOrEmpty(newTestRecord.TestType))
{
var getTrainTypeName = (from x in db.Training_TestPlan
join y in db.Training_Plan on x.PlanId equals y.PlanId
join z in db.Base_TrainType on y.TrainTypeId equals z.TrainTypeId
where x.TestPlanId == testRecord.TestPlanId
select z).FirstOrDefault();
if (getTrainTypeName != null)
{
testRecord.TestType = getTrainTypeName.TrainTypeName;
}
}
db.Training_TestRecord.InsertOnSubmit(newTestRecord);
db.SubmitChanges();
}
/// <summary>
/// 修改考试记录信息
/// </summary>
/// <param name="Training"></param>
public static void UpdateTestRecord(Model.Training_TestRecord testRecord)
{
Model.SGGLDB db = Funs.DB;
Model.Training_TestRecord newTestRecord = db.Training_TestRecord.FirstOrDefault(e => e.TestRecordId == testRecord.TestRecordId);
if (newTestRecord != null)
{
newTestRecord.TestScores = testRecord.TestScores;
newTestRecord.TestEndTime = testRecord.TestEndTime;
newTestRecord.IsFiled = testRecord.IsFiled;
db.SubmitChanges();
}
}
/// <summary>
/// 根据计划主键删除考试人员信息
/// </summary>
/// <param name="planId"></param>
public static void DeleteTestRecordByTestPlanId(string testPlanId)
{
var deleteRecords = from x in Funs.DB.Training_TestRecord where x.TestPlanId == testPlanId select x;
if (deleteRecords.Count() > 0)
{
foreach (var item in deleteRecords)
{
DeleteTestRecordByTestRecordId(item.TestRecordId);
}
}
}
/// <summary>
/// 根据考生主键删除考生信息
/// </summary>
/// <param name="planId"></param>
public static void DeleteTestRecordByTestRecordId(string testRecordId)
{
using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
{
var testRecord = db.Training_TestRecord.FirstOrDefault(e => e.TestRecordId == testRecordId);
if (testRecord != null)
{
var testRecordItem = from x in db.Training_TestRecordItem where x.TestRecordId == testRecordId select x;
if (testRecordItem.Count() > 0)
{
db.Training_TestRecordItem.DeleteAllOnSubmit(testRecordItem);
db.SubmitChanges();
}
db.Training_TestRecord.DeleteOnSubmit(testRecord);
db.SubmitChanges();
}
}
}
/// <summary>
/// 更新没有结束时间且超时的考试记录
/// </summary>
public static int UpdateTestEndTimeNull(string testRecordId)
{
int icount = 0;
using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
{
var testRecord = from x in db.Training_TestRecord
where !x.TestEndTime.HasValue && x.TestStartTime.HasValue
&& x.TestStartTime.Value.AddMinutes(x.Duration) < DateTime.Now
&& x.TestRecordId == testRecordId
select x;
if (testRecord.Count() > 0)
{
foreach (var item in testRecord)
{
item.TestEndTime = item.TestStartTime.Value.AddMinutes(item.Duration);
item.TestScores = db.Training_TestRecordItem.Where(x => x.TestRecordId == item.TestRecordId).Sum(x => x.SubjectScore) ?? 0;
db.SubmitChanges();
icount++;
}
}
}
return icount;
}
}
}